From 0d6d077e6a01cd2db75af9eab78f1fa55ebfe5cc Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Fri, 3 Mar 2017 18:05:08 -0500 Subject: [PATCH] Serialize and deserialize CString through [u8] --- serde/src/de/impls.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index 390a94e1..892b542e 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -26,7 +26,7 @@ use std::net; use std::path; use core::str; #[cfg(feature = "std")] -use std::ffi::{CStr, CString}; +use std::ffi::CString; #[cfg(feature = "std")] use std::rc::Rc; @@ -55,6 +55,8 @@ use de::{Deserialize, Deserializer, EnumVisitor, Error, MapVisitor, SeqVisitor, VariantVisitor, Visitor}; use de::from_primitive::FromPrimitive; +use super::super::bytes::ByteBuf; + /////////////////////////////////////////////////////////////////////////////// /// A visitor that produces a `()`. @@ -302,7 +304,7 @@ impl Deserialize for CString { fn deserialize(deserializer: D) -> Result where D: Deserializer { - let v: Vec = try!(Deserialize::deserialize(deserializer)); + let v: Vec = try!(ByteBuf::deserialize(deserializer)).into(); CString::new(v) .map_err(|e| Error::custom(format!("unexpected NULL at byte {}", e.nul_position()))) }