-// Copyright 2017 Serde Developers
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
use std::ops::Deref;
use std::{char, cmp, io, str};
//////////////////////////////////////////////////////////////////////////////
-const CT: bool = true; // control character \x00...\x1F
-const QU: bool = true; // quote \x22
-const BS: bool = true; // backslash \x5C
-const O: bool = false; // allow unescaped
-
// Lookup table of bytes that must be escaped. A value of true at index i means
// that byte i requires an escape sequence in the input.
-#[cfg_attr(rustfmt, rustfmt_skip)]
-static ESCAPE: [bool; 256] = [
- // 1 2 3 4 5 6 7 8 9 A B C D E F
- CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, // 0
- CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, // 1
- O, O, QU, O, O, O, O, O, O, O, O, O, O, O, O, O, // 2
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 3
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 4
- O, O, O, O, O, O, O, O, O, O, O, O, BS, O, O, O, // 5
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 6
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 7
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 8
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // 9
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // A
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // B
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // C
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // D
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // E
- O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, // F
-];
+static ESCAPE: [bool; 256] = {
+ const CT: bool = true; // control character \x00...\x1F
+ const QU: bool = true; // quote \x22
+ const BS: bool = true; // backslash \x5C
+ const __: bool = false; // allow unescaped
+ [
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, // 0
+ CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, CT, // 1
+ __, __, QU, __, __, __, __, __, __, __, __, __, __, __, __, __, // 2
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 3
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 4
+ __, __, __, __, __, __, __, __, __, __, __, __, BS, __, __, __, // 5
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 6
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 7
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 8
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 9
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // A
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // B
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // C
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // D
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // E
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // F
+ ]
+};
fn next_or_eof<'de, R: ?Sized + Read<'de>>(read: &mut R) -> Result<u8> {
match try!(read.next()) {
Ok(())
}
-#[cfg_attr(rustfmt, rustfmt_skip)]
-static HEX: [u8; 256] = [
- // 1 2 3 4 5 6 7 8 9 A B C D E F
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // F
-];
+static HEX: [u8; 256] = {
+ const __: u8 = 255; // not a hex digit
+ [
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 0
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 1
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 2
+ 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, __, __, __, __, __, __, // 3
+ __, 10, 11, 12, 13, 14, 15, __, __, __, __, __, __, __, __, __, // 4
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 5
+ __, 10, 11, 12, 13, 14, 15, __, __, __, __, __, __, __, __, __, // 6
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 7
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 8
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // 9
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // A
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // B
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // C
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // D
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // E
+ __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, // F
+ ]
+};
fn decode_hex_val(val: u8) -> Option<u16> {
let n = HEX[val as usize] as u16;