Merge pull request #1038 from serde-rs/rcser
Serialize unsized Arc and Rc
This commit is contained in:
commit
a42008f695
@ -340,10 +340,10 @@ deref_impl!(<'a, T: ?Sized> Serialize for &'a mut T where T: Serialize);
|
|||||||
deref_impl!(<T: ?Sized> Serialize for Box<T> where T: Serialize);
|
deref_impl!(<T: ?Sized> Serialize for Box<T> where T: Serialize);
|
||||||
|
|
||||||
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
||||||
deref_impl!(<T> Serialize for Rc<T> where T: Serialize);
|
deref_impl!(<T: ?Sized> Serialize for Rc<T> where T: Serialize);
|
||||||
|
|
||||||
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
|
||||||
deref_impl!(<T> Serialize for Arc<T> where T: Serialize);
|
deref_impl!(<T: ?Sized> Serialize for Arc<T> where T: Serialize);
|
||||||
|
|
||||||
#[cfg(any(feature = "std", feature = "alloc"))]
|
#[cfg(any(feature = "std", feature = "alloc"))]
|
||||||
deref_impl!(<'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwned);
|
deref_impl!(<'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwned);
|
||||||
|
@ -10,7 +10,7 @@ unstable = ["serde/unstable", "compiletest_rs"]
|
|||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
fnv = "1.0"
|
fnv = "1.0"
|
||||||
rustc-serialize = "0.3.16"
|
rustc-serialize = "0.3.16"
|
||||||
serde = { path = "../serde" }
|
serde = { path = "../serde", features = ["rc"] }
|
||||||
serde_derive = { path = "../serde_derive" }
|
serde_derive = { path = "../serde_derive" }
|
||||||
serde_test = { path = "../serde_test" }
|
serde_test = { path = "../serde_test" }
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@ use std::net;
|
|||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::time::{Duration, UNIX_EPOCH};
|
use std::time::{Duration, UNIX_EPOCH};
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
|
use std::rc::Rc;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use std::str;
|
use std::str;
|
||||||
@ -383,6 +385,41 @@ declare_tests! {
|
|||||||
Token::Bytes(b"abc"),
|
Token::Bytes(b"abc"),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
test_rc {
|
||||||
|
Rc::new(true) => &[
|
||||||
|
Token::Bool(true),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
test_arc {
|
||||||
|
Arc::new(true) => &[
|
||||||
|
Token::Bool(true),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Serde's implementation is not unstable, but the constructors are.
|
||||||
|
#[cfg(feature = "unstable")]
|
||||||
|
declare_tests! {
|
||||||
|
test_rc_dst {
|
||||||
|
Rc::<str>::from("s") => &[
|
||||||
|
Token::Str("s"),
|
||||||
|
],
|
||||||
|
Rc::<[bool]>::from(&[true][..]) => &[
|
||||||
|
Token::Seq { len: Some(1) },
|
||||||
|
Token::Bool(true),
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
}
|
||||||
|
test_arc_dst {
|
||||||
|
Arc::<str>::from("s") => &[
|
||||||
|
Token::Str("s"),
|
||||||
|
],
|
||||||
|
Arc::<[bool]>::from(&[true][..]) => &[
|
||||||
|
Token::Seq { len: Some(1) },
|
||||||
|
Token::Bool(true),
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "unstable")]
|
#[cfg(feature = "unstable")]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user