Skip to main content

Serialize

Trait Serialize 

Source
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§

Source

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 Serialize for bool

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for f32

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for f64

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for i8

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for i16

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for i32

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for i64

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for i128

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for isize

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for str

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for u8

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for u16

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for u32

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for u64

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for u128

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for ()

Source§

fn serialize<E: Encode + ?Sized>(&self, _encoder: &mut E) -> Result<()>

Source§

impl Serialize for usize

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl Serialize for String

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<K, V> Serialize for BTreeMap<K, V>
where K: Serialize, V: Serialize,

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<K, V, S> Serialize for HashMap<K, V, S>
where K: Serialize, V: Serialize,

Available on crate feature std only.
Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize> Serialize for (T0,)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize, T1: Serialize> Serialize for (T0, T1)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize, T1: Serialize, T2: Serialize> Serialize for (T0, T1, T2)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize> Serialize for (T0, T1, T2, T3)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize> Serialize for (T0, T1, T2, T3, T4)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T0: Serialize, T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize> Serialize for (T0, T1, T2, T3, T4, T5)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

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)

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T> Serialize for BTreeSet<T>
where T: Serialize,

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T, S> Serialize for HashSet<T, S>
where T: Serialize,

Available on crate feature std only.
Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T: Serialize + ?Sized> Serialize for &T

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T: Serialize> Serialize for Option<T>

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T: Serialize> Serialize for [T]

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T: Serialize> Serialize for Vec<T>

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Source§

impl<T: Serialize, E: Serialize> Serialize for Result<T, E>

Source§

fn serialize<Enc: Encode + ?Sized>(&self, encoder: &mut Enc) -> Result<()>

Source§

impl<T: Serialize, const N: usize> Serialize for [T; N]

Source§

fn serialize<E: Encode + ?Sized>(&self, encoder: &mut E) -> Result<()>

Implementors§