Move utf8 encode to where it is used

This commit is contained in:
David Tolnay
2017-04-07 09:50:38 -07:00
parent 726eea9a97
commit 2e9cc6e98a
3 changed files with 6 additions and 8 deletions
+2 -1
View File
@@ -112,6 +112,7 @@ pub mod value;
mod from_primitive; mod from_primitive;
mod ignored_any; mod ignored_any;
mod impls; mod impls;
mod utf8;
pub use self::ignored_any::IgnoredAny; pub use self::ignored_any::IgnoredAny;
@@ -1049,7 +1050,7 @@ pub trait Visitor<'de>: Sized {
fn visit_char<E>(self, v: char) -> Result<Self::Value, E> fn visit_char<E>(self, v: char) -> Result<Self::Value, E>
where E: Error where E: Error
{ {
self.visit_str(::utils::encode_utf8(v).as_str()) self.visit_str(utf8::encode(v).as_str())
} }
/// Deserialize a `&str` into a `Value`. /// Deserialize a `&str` into a `Value`.
+4 -6
View File
@@ -1,5 +1,3 @@
//! Private utility functions
const TAG_CONT: u8 = 0b1000_0000; const TAG_CONT: u8 = 0b1000_0000;
const TAG_TWO_B: u8 = 0b1100_0000; const TAG_TWO_B: u8 = 0b1100_0000;
const TAG_THREE_B: u8 = 0b1110_0000; const TAG_THREE_B: u8 = 0b1110_0000;
@@ -9,7 +7,7 @@ const MAX_TWO_B: u32 = 0x800;
const MAX_THREE_B: u32 = 0x10000; const MAX_THREE_B: u32 = 0x10000;
#[inline] #[inline]
pub fn encode_utf8(c: char) -> EncodeUtf8 { pub fn encode(c: char) -> Encode {
let code = c as u32; let code = c as u32;
let mut buf = [0; 4]; let mut buf = [0; 4];
let pos = if code < MAX_ONE_B { let pos = if code < MAX_ONE_B {
@@ -31,18 +29,18 @@ pub fn encode_utf8(c: char) -> EncodeUtf8 {
buf[3] = (code & 0x3F) as u8 | TAG_CONT; buf[3] = (code & 0x3F) as u8 | TAG_CONT;
0 0
}; };
EncodeUtf8 { Encode {
buf: buf, buf: buf,
pos: pos, pos: pos,
} }
} }
pub struct EncodeUtf8 { pub struct Encode {
buf: [u8; 4], buf: [u8; 4],
pos: usize, pos: usize,
} }
impl EncodeUtf8 { impl Encode {
// FIXME: use this from_utf8_unchecked, since we know it can never fail // FIXME: use this from_utf8_unchecked, since we know it can never fail
pub fn as_str(&self) -> &str { pub fn as_str(&self) -> &str {
::core::str::from_utf8(&self.buf[self.pos..]).unwrap() ::core::str::from_utf8(&self.buf[self.pos..]).unwrap()
-1
View File
@@ -93,7 +93,6 @@ pub use de::{Deserialize, Deserializer};
#[macro_use] #[macro_use]
mod macros; mod macros;
mod utils;
pub mod de; pub mod de;
pub mod ser; pub mod ser;