Name Description Size
format.rs 726
ignored_any.rs 6154
impls.rs 97786
mod.rs Generic data structure deserialization framework. The two most important traits in this module are [`Deserialize`] and [`Deserializer`]. - **A type that implements `Deserialize` is a data structure** that can be deserialized from any data format supported by Serde, and conversely - **A type that implements `Deserializer` is a data format** that can deserialize any data structure supported by Serde. # The Deserialize trait Serde provides [`Deserialize`] implementations for many Rust primitive and standard library types. The complete list is below. All of these can be deserialized using Serde out of the box. Additionally, Serde provides a procedural macro called [`serde_derive`] to automatically generate [`Deserialize`] implementations for structs and enums in your program. See the [derive section of the manual] for how to use this. In rare cases it may be necessary to implement [`Deserialize`] manually for some type in your program. See the [Implementing `Deserialize`] section of the manual for more about this. Third-party crates may provide [`Deserialize`] implementations for types that they expose. For example the [`linked-hash-map`] crate provides a [`LinkedHashMap<K, V>`] type that is deserializable by Serde because the crate provides an implementation of [`Deserialize`] for it. # The Deserializer trait [`Deserializer`] implementations are provided by third-party crates, for example [`serde_json`], [`serde_yaml`] and [`postcard`]. A partial list of well-maintained formats is given on the [Serde website][data formats]. # Implementations of Deserialize provided by Serde This is a slightly different set of types than what is supported for serialization. Some types can be serialized by Serde but not deserialized. One example is `OsStr`. - **Primitive types**: - bool - i8, i16, i32, i64, i128, isize - u8, u16, u32, u64, u128, usize - f32, f64 - char - **Compound types**: - \[T; 0\] through \[T; 32\] - tuples up to size 16 - **Common standard library types**: - String - Option\<T\> - Result\<T, E\> - PhantomData\<T\> - **Wrapper types**: - Box\<T\> - Box\<\[T\]\> - Box\<str\> - Cow\<'a, T\> - Cell\<T\> - RefCell\<T\> - Mutex\<T\> - RwLock\<T\> - Rc\<T\>&emsp;*(if* features = \["rc"\] *is enabled)* - Arc\<T\>&emsp;*(if* features = \["rc"\] *is enabled)* - **Collection types**: - BTreeMap\<K, V\> - BTreeSet\<T\> - BinaryHeap\<T\> - HashMap\<K, V, H\> - HashSet\<T, H\> - LinkedList\<T\> - VecDeque\<T\> - Vec\<T\> - **Zero-copy types**: - &str - &\[u8\] - **FFI types**: - CString - Box\<CStr\> - OsString - **Miscellaneous standard library types**: - Duration - SystemTime - Path - PathBuf - Range\<T\> - RangeInclusive\<T\> - Bound\<T\> - num::NonZero* - `!` *(unstable)* - **Net types**: - IpAddr - Ipv4Addr - Ipv6Addr - SocketAddr - SocketAddrV4 - SocketAddrV6 [Implementing `Deserialize`]: https://serde.rs/impl-deserialize.html [`Deserialize`]: ../trait.Deserialize.html [`Deserializer`]: ../trait.Deserializer.html [`LinkedHashMap<K, V>`]: https://docs.rs/linked-hash-map/*/linked_hash_map/struct.LinkedHashMap.html [`postcard`]: https://github.com/jamesmunns/postcard [`linked-hash-map`]: https://crates.io/crates/linked-hash-map [`serde_derive`]: https://crates.io/crates/serde_derive [`serde_json`]: https://github.com/serde-rs/json [`serde_yaml`]: https://github.com/dtolnay/serde-yaml [derive section of the manual]: https://serde.rs/derive.html [data formats]: https://serde.rs/#data-formats 81529
seed.rs 563
size_hint.rs 644
value.rs Building blocks for deserializing basic values using the `IntoDeserializer` trait. ```edition2021 use serde::de::{value, Deserialize, IntoDeserializer}; use serde_derive::Deserialize; use std::str::FromStr; #[derive(Deserialize)] enum Setting { On, Off, } impl FromStr for Setting { type Err = value::Error; fn from_str(s: &str) -> Result<Self, Self::Err> { Self::deserialize(s.into_deserializer()) } } ``` 45589