Trait Serialize
trait Serialize
A data structure that can be serialized into any data format supported by Serde.
Serde provides Serialize implementations for many Rust primitive and
standard library types. The complete list is [here][crate::ser]. All of
these can be serialized using Serde out of the box.
Additionally, Serde provides a procedural macro called serde_derive to
automatically generate Serialize 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 Serialize manually for some
type in your program. See the Implementing Serialize section of the
manual for more about this.
Third-party crates may provide Serialize implementations for types that
they expose. For example the linked-hash-map crate provides a
LinkedHashMap<K, V> type that is serializable by Serde because the crate
provides an implementation of Serialize for it.
Required Methods
fn serialize<S>(self: &Self, serializer: S) -> Result<<S as >::Ok, <S as >::Error> where S: SerializerSerialize this value into the given Serde serializer.
See the Implementing
Serializesection of the manual for more information about how to implement this method.use serde::ser::{Serialize, SerializeStruct, Serializer}; struct Person { name: String, age: u8, phones: Vec<String>, } // This is what #[derive(Serialize)] would generate. impl Serialize for Person { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer, { let mut s = serializer.serialize_struct("Person", 3)?; s.serialize_field("name", &self.name)?; s.serialize_field("age", &self.age)?; s.serialize_field("phones", &self.phones)?; s.end() } }
Implementors
impl<T> Serialize for Vec<T>impl<T, E> Serialize for Result<T, E>impl<T> Serialize for [T; 11]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)impl Serialize for AtomicU32impl<T> Serialize for BinaryHeap<T>impl<T> Serialize for Cell<T>impl<T> Serialize for [T; 7]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)impl Serialize for AtomicI32impl Serialize for Stringimpl<T> Serialize for [T; 30]impl Serialize for NonZeroU32impl<T> Serialize for [T; 3]impl<T0, T1, T2, T3, T4, T5, T6, T7> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7)impl<T> Serialize for Reverse<T>impl Serialize for f32impl<T> Serialize for [T; 26]impl Serialize for NonZeroI128impl<T> Serialize for PhantomData<T>impl<T0, T1, T2, T3> Serialize for (T0, T1, T2, T3)impl Serialize for OsStrimpl Serialize for u16impl<T> Serialize for [T; 22]impl Serialize for NonZeroI8impl Serialize for ()impl Serialize for SocketAddrV4impl Serialize for i64impl<T> Serialize for [T; 18]impl<T> Serialize for Arc<T>impl<Idx> Serialize for RangeFrom<Idx>impl Serialize for IpAddrimpl Serialize for isizeimpl<T> Serialize for [T; 14]impl<'a, T> Serialize for &'a Timpl Serialize for AtomicU64impl<T> Serialize for LinkedList<T>impl<T> Serialize for RwLock<T>impl<T> Serialize for [T; 10]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)impl Serialize for AtomicU16impl<T> Serialize for [T]impl Serialize for NonZeroUsizeimpl<T> Serialize for [T; 6]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)impl Serialize for AtomicI16impl Serialize for strimpl<T> Serialize for [T; 29]impl Serialize for NonZeroU16impl<T> Serialize for [T; 2]impl<T0, T1, T2, T3, T4, T5, T6> Serialize for (T0, T1, T2, T3, T4, T5, T6)impl<T> Serialize for Saturating<T>impl Serialize for u128impl<T> Serialize for [T; 25]impl Serialize for NonZeroI64impl<T> Serialize for Option<T>impl<T0, T1, T2> Serialize for (T0, T1, T2)impl Serialize for PathBufimpl Serialize for u8impl<T> Serialize for [T; 21]impl<T> Serialize for ArcWeak<T>impl<T> Serialize for Bound<T>impl Serialize for SocketAddrimpl Serialize for i32impl<T> Serialize for [T; 17]impl<T> Serialize for Rc<T>impl<Idx> Serialize for Range<Idx>impl Serialize for SystemTimeimpl Serialize for boolimpl<T> Serialize for [T; 13]impl<K, V, H> Serialize for HashMap<K, V, H>impl Serialize for AtomicI64impl<T, H> Serialize for HashSet<T, H>impl<T> Serialize for Mutex<T>impl<T> Serialize for [T; 9]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)impl Serialize for AtomicU8impl<T> Serialize for [T; 32]impl Serialize for NonZeroU128impl<T> Serialize for [T; 5]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)impl Serialize for AtomicI8impl Serialize for charimpl<T> Serialize for [T; 28]impl Serialize for NonZeroU8impl<T> Serialize for [T; 1]impl<T0, T1, T2, T3, T4, T5> Serialize for (T0, T1, T2, T3, T4, T5)impl<T> Serialize for Wrapping<T>impl Serialize for u64impl<T> Serialize for [T; 24]impl Serialize for NonZeroI32impl Serialize for CStringimpl<T0, T1> Serialize for (T0, T1)impl Serialize for Pathimpl Serialize for usizeimpl<T> Serialize for [T; 20]impl<T> Serialize for RcWeak<T>impl<Idx> Serialize for RangeTo<Idx>impl Serialize for Ipv6Addrimpl Serialize for i16impl<T> Serialize for [T; 16]impl<T> Serialize for Box<T>impl<T> Serialize for VecDeque<T>impl Serialize for Durationimpl<T> Serialize for [T; 12]impl<K, V> Serialize for BTreeMap<K, V>impl Serialize for AtomicUsizeimpl<T> Serialize for BTreeSet<T>impl<T> Serialize for RefCell<T>impl<T> Serialize for [T; 8]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)impl Serialize for AtomicIsizeimpl<'a> Serialize for Arguments<'a>impl<T> Serialize for [T; 31]impl Serialize for NonZeroU64impl<T> Serialize for [T; 4]impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)impl Serialize for AtomicBoolimpl Serialize for f64impl<T> Serialize for [T; 27]impl Serialize for NonZeroIsizeimpl<T> Serialize for [T; 0]impl<T0, T1, T2, T3, T4> Serialize for (T0, T1, T2, T3, T4)impl Serialize for OsStringimpl Serialize for u32impl<T> Serialize for [T; 23]impl Serialize for NonZeroI16impl Serialize for CStrimpl<T> Serialize for (T)impl Serialize for SocketAddrV6impl Serialize for i128impl<T> Serialize for [T; 19]impl<'a, T> Serialize for Cow<'a, T>impl<Idx> Serialize for RangeInclusive<Idx>impl Serialize for Ipv4Addrimpl Serialize for i8impl<T> Serialize for [T; 15]impl<'a, T> Serialize for &'a mut T