pub trait Serialize {
// Required method
fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>;
}Expand description
Types that know how to write themselves into any Encode sink.
The contract is: serialize appends the type’s wire-format bytes to the
encoder. It does not clear the encoder first — encoders are
stream-shaped, and may already hold bytes from prior writes.
Implementors MUST be deterministic: for any two equal values a and b
(in the type’s Eq / PartialEq sense, or its semantic equivalent for
types like f64), the bytes appended by a.serialize(&mut enc) MUST
equal the bytes appended by b.serialize(&mut enc).
§Examples
use pack_io::{Encode, Encoder, Result, Serialize};
struct Point { x: i32, y: i32 }
impl Serialize for Point {
fn serialize<E: Encode + ?Sized>(&self, enc: &mut E) -> Result<()> {
self.x.serialize(enc)?;
self.y.serialize(enc)
}
}
let mut enc = Encoder::new();
Point { x: 3, y: -7 }.serialize(&mut enc).unwrap();
assert!(!enc.as_bytes().is_empty());Required Methods§
Sourcefn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>
fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>
Append the encoded bytes of self to encoder.
§Errors
Primitive impls in this crate are infallible on the in-memory
crate::Encoder. Streaming encoders (IoEncoder<W>) may surface
a crate::SerialError when the underlying Write errors. User
impls may also surface custom errors via crate::SerialError.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize> Serialize for (T0, T1, T2, T3)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize> Serialize for (T0, T1, T2, T3)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize> Serialize for (T0, T1, T2, T3, T4)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize> Serialize for (T0, T1, T2, T3, T4)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize> Serialize for (T0, T1, T2, T3, T4, T5)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize> Serialize for (T0, T1, T2, T3, T4, T5)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
Source§impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize> Serialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
Source§impl<T, S> Serialize for HashSet<T, S>where
T: Serialize,
Available on crate feature std only.
impl<T, S> Serialize for HashSet<T, S>where
T: Serialize,
std only.