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 Serialize for AtomicU16impl<Idx> Serialize for RangeTo<Idx>impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)impl<T> Serialize for Rc<T>impl<T> Serialize for [T; 0]impl Serialize for NonZeroU16impl<T> Serialize for [T; 12]impl Serialize for i8impl Serialize for IpAddrimpl<T> Serialize for [T; 24]impl Serialize for f64impl<T> Serialize for Reverse<T>impl<T, H> Serialize for HashSet<T, H>impl<T0, T1, T2> Serialize for (T0, T1, T2)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 NonZeroI8impl<T> Serialize for [T; 5]impl<T> Serialize for Cell<T>impl<T> Serialize for [T; 17]impl Serialize for usizeimpl Serialize for SocketAddrV6impl<T> Serialize for [T; 29]impl Serialize for AtomicIsizeimpl<Idx> Serialize for RangeFrom<Idx>impl<T0, T1, T2, T3, T4, T5, T6, T7> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7)impl<'a, T> Serialize for &'a mut Timpl<T> Serialize for Option<T>impl Serialize for NonZeroIsizeimpl<T> Serialize for [T; 10]impl Serialize for boolimpl Serialize for Durationimpl<T> Serialize for [T; 22]impl Serialize for u128impl<T> Serialize for Wrapping<T>impl<T> Serialize for BinaryHeap<T>impl Serialize for AtomicI64impl<T> Serialize for (T)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<T> Serialize for RcWeak<T>impl<T> Serialize for [T; 3]impl Serialize for NonZeroU128impl<T> Serialize for [T; 15]impl Serialize for i64impl Serialize for SocketAddrimpl<T> Serialize for [T; 27]impl Serialize for Stringimpl Serialize for AtomicI16impl<T> Serialize for VecDeque<T>impl<T0, T1, T2, T3, T4, T5> Serialize for (T0, T1, T2, T3, T4, T5)impl<K, V, H> Serialize for HashMap<K, V, H>impl Serialize for CStrimpl Serialize for NonZeroI64impl<T> Serialize for [T; 8]impl<T> Serialize for RwLock<T>impl<T> Serialize for [T; 20]impl Serialize for u32impl Serialize for OsStrimpl<T> Serialize for [T; 32]impl Serialize for AtomicU32impl<T> Serialize for Bound<T>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<T> Serialize for Arc<T>impl<T> Serialize for [T; 1]impl Serialize for NonZeroU32impl<T> Serialize for [T; 13]impl Serialize for i16impl Serialize for Ipv4Addrimpl<T> Serialize for [T; 25]impl Serialize for charimpl Serialize for AtomicBoolimpl<T> Serialize for LinkedList<T>impl<T0, T1, T2, T3> Serialize for (T0, T1, T2, T3)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 NonZeroI16impl<T> Serialize for [T; 6]impl<T> Serialize for RefCell<T>impl<T> Serialize for [T; 18]impl Serialize for u8impl Serialize for Pathimpl<T> Serialize for [T; 30]impl Serialize for AtomicU8impl<Idx> Serialize for RangeInclusive<Idx>impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)impl<T> Serialize for Box<T>impl<T> Serialize for PhantomData<T>impl Serialize for NonZeroU8impl<T> Serialize for [T; 11]impl Serialize for isizeimpl Serialize for SystemTimeimpl<T> Serialize for [T; 23]impl Serialize for f32impl<T> Serialize for Saturating<T>impl<T> Serialize for BTreeSet<T>impl Serialize for AtomicU64impl<T0, T1> Serialize for (T0, T1)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<T> Serialize for ArcWeak<T>impl<T> Serialize for [T; 4]impl Serialize for NonZeroUsizeimpl<T> Serialize for [T; 16]impl Serialize for i128impl Serialize for SocketAddrV4impl<T> Serialize for [T; 28]impl<'a> Serialize for Arguments<'a>impl Serialize for AtomicI32impl<Idx> Serialize for Range<Idx>impl<T0, T1, T2, T3, T4, T5, T6> Serialize for (T0, T1, T2, T3, T4, T5, T6)impl<'a, T> Serialize for &'a Timpl Serialize for CStringimpl Serialize for NonZeroI128impl<T> Serialize for [T; 9]impl<T, E> Serialize for Result<T, E>impl<T> Serialize for [T; 21]impl Serialize for u64impl Serialize for OsStringimpl<T> Serialize for [T]impl Serialize for AtomicUsizeimpl Serialize for ()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<'a, T> Serialize for Cow<'a, T>impl<T> Serialize for [T; 2]impl Serialize for NonZeroU64impl<T> Serialize for [T; 14]impl Serialize for i32impl Serialize for Ipv6Addrimpl<T> Serialize for [T; 26]impl Serialize for strimpl Serialize for AtomicI8impl<T> Serialize for Vec<T>impl<T0, T1, T2, T3, T4> Serialize for (T0, T1, T2, T3, T4)impl<K, V> Serialize for BTreeMap<K, V>impl Serialize for NonZeroI32impl<T> Serialize for [T; 7]impl<T> Serialize for Mutex<T>impl<T> Serialize for [T; 19]impl Serialize for u16impl Serialize for PathBufimpl<T> Serialize for [T; 31]