mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 07:21:12 +00:00
Deserialize PathBuf from bytes
&Path already allows this. Also complete the tests for Path/PathBuf.
This commit is contained in:
parent
cf31418555
commit
42990d8264
@ -1580,6 +1580,24 @@ impl<'de> Visitor<'de> for PathBufVisitor {
|
|||||||
{
|
{
|
||||||
Ok(From::from(v))
|
Ok(From::from(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
|
||||||
|
where
|
||||||
|
E: Error,
|
||||||
|
{
|
||||||
|
str::from_utf8(v)
|
||||||
|
.map(From::from)
|
||||||
|
.map_err(|_| Error::invalid_value(Unexpected::Bytes(v), &self))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
|
||||||
|
where
|
||||||
|
E: Error,
|
||||||
|
{
|
||||||
|
String::from_utf8(v)
|
||||||
|
.map(From::from)
|
||||||
|
.map_err(|e| Error::invalid_value(Unexpected::Bytes(&e.into_bytes()), &self))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
|
@ -889,11 +889,23 @@ declare_tests! {
|
|||||||
Path::new("/usr/local/lib") => &[
|
Path::new("/usr/local/lib") => &[
|
||||||
Token::BorrowedStr("/usr/local/lib"),
|
Token::BorrowedStr("/usr/local/lib"),
|
||||||
],
|
],
|
||||||
|
Path::new("/usr/local/lib") => &[
|
||||||
|
Token::BorrowedBytes(b"/usr/local/lib"),
|
||||||
|
],
|
||||||
}
|
}
|
||||||
test_path_buf {
|
test_path_buf {
|
||||||
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
|
Token::Str("/usr/local/lib"),
|
||||||
|
],
|
||||||
PathBuf::from("/usr/local/lib") => &[
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
Token::String("/usr/local/lib"),
|
Token::String("/usr/local/lib"),
|
||||||
],
|
],
|
||||||
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
|
Token::Bytes(b"/usr/local/lib"),
|
||||||
|
],
|
||||||
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
|
Token::ByteBuf(b"/usr/local/lib"),
|
||||||
|
],
|
||||||
}
|
}
|
||||||
test_cstring {
|
test_cstring {
|
||||||
CString::new("abc").unwrap() => &[
|
CString::new("abc").unwrap() => &[
|
||||||
|
Loading…
x
Reference in New Issue
Block a user