Trait serde::ser::Serialize[][src]

pub trait Serialize {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer
; }
Expand description

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. 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

Serialize this value into the given Serde serializer.

See the Implementing Serialize section 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()
    }
}

Implementations on Foreign Types

Implementors

impl Serialize for ArcStr

impl Serialize for Substr

impl Serialize for Sparse

impl Serialize for Values

impl Serialize for Type

impl Serialize for Target

impl Serialize for Asset

impl Serialize for Target

impl Serialize for Buffer

impl Serialize for View

impl Serialize for Camera

impl Serialize for Type

impl Serialize for Sparse

impl Serialize for Values

impl Serialize for Target

impl Serialize for Asset

impl Serialize for Buffer

impl Serialize for View

impl Serialize for Camera

impl Serialize for Image

impl Serialize for Mesh

impl Serialize for Root

impl Serialize for Node

impl Serialize for Scene

impl Serialize for Skin

impl Serialize for Info

impl Serialize for Void

impl Serialize for Image

impl Serialize for Mesh

impl Serialize for Mode

impl Serialize for Root

impl<T> Serialize for Index<T>

impl Serialize for Node

impl Serialize for Scene

impl Serialize for Skin

impl Serialize for Info

impl<T: Serialize> Serialize for Checked<T>

impl<K, V, S> Serialize for IndexMap<K, V, S> where
    K: Serialize + Hash + Eq,
    V: Serialize,
    S: BuildHasher

impl<T, S> Serialize for IndexSet<T, S> where
    T: Serialize + Hash + Eq,
    S: BuildHasher

impl<T: Scalar> Serialize for X<T> where
    T: Serialize

impl<T: Scalar> Serialize for XY<T> where
    T: Serialize

impl<T: Scalar> Serialize for XYZ<T> where
    T: Serialize

impl<T: Scalar> Serialize for XYZW<T> where
    T: Serialize

impl<T: Scalar> Serialize for XYZWA<T> where
    T: Serialize

impl<T: Scalar> Serialize for XYZWAB<T> where
    T: Serialize

impl<T: Scalar> Serialize for IJKW<T> where
    T: Serialize

impl<T: Scalar> Serialize for M2x2<T> where
    T: Serialize

impl<T: Scalar> Serialize for M2x3<T> where
    T: Serialize

impl<T: Scalar> Serialize for M2x4<T> where
    T: Serialize

impl<T: Scalar> Serialize for M2x5<T> where
    T: Serialize

impl<T: Scalar> Serialize for M2x6<T> where
    T: Serialize

impl<T: Scalar> Serialize for M3x2<T> where
    T: Serialize

impl<T: Scalar> Serialize for M3x3<T> where
    T: Serialize

impl<T: Scalar> Serialize for M3x4<T> where
    T: Serialize

impl<T: Scalar> Serialize for M3x5<T> where
    T: Serialize

impl<T: Scalar> Serialize for M3x6<T> where
    T: Serialize

impl<T: Scalar> Serialize for M4x2<T> where
    T: Serialize

impl<T: Scalar> Serialize for M4x3<T> where
    T: Serialize

impl<T: Scalar> Serialize for M4x4<T> where
    T: Serialize

impl<T: Scalar> Serialize for M4x5<T> where
    T: Serialize

impl<T: Scalar> Serialize for M4x6<T> where
    T: Serialize

impl<T: Scalar> Serialize for M5x2<T> where
    T: Serialize

impl<T: Scalar> Serialize for M5x3<T> where
    T: Serialize

impl<T: Scalar> Serialize for M5x4<T> where
    T: Serialize

impl<T: Scalar> Serialize for M5x5<T> where
    T: Serialize

impl<T: Scalar> Serialize for M5x6<T> where
    T: Serialize

impl<T: Scalar> Serialize for M6x2<T> where
    T: Serialize

impl<T: Scalar> Serialize for M6x3<T> where
    T: Serialize

impl<T: Scalar> Serialize for M6x4<T> where
    T: Serialize

impl<T: Scalar> Serialize for M6x5<T> where
    T: Serialize

impl<T: Scalar> Serialize for M6x6<T> where
    T: Serialize

impl<const D: usize> Serialize for Const<D>

impl<T, const R: usize, const C: usize> Serialize for ArrayStorage<T, R, C> where
    T: Scalar + Serialize

impl<T, R, C, S> Serialize for Matrix<T, R, C, S> where
    T: Scalar,
    R: Dim,
    C: Dim,
    S: Serialize

impl<T: Serialize> Serialize for Unit<T>

impl<T, R: Dim, C: Dim> Serialize for VecStorage<T, R, C> where
    T: Serialize,
    R: Serialize,
    C: Serialize

impl<T: Scalar, D: DimName> Serialize for OPoint<T, D> where
    DefaultAllocator: Allocator<T, D>,
    <DefaultAllocator as Allocator<T, D>>::Buffer: Serialize

impl<T: Scalar, const D: usize> Serialize for Rotation<T, D> where
    Owned<T, Const<D>, Const<D>>: Serialize

impl<T: Scalar> Serialize for Quaternion<T> where
    Owned<T, U4>: Serialize

impl<T: SimdRealField> Serialize for DualQuaternion<T> where
    T: Serialize

impl<T: Scalar, const D: usize> Serialize for Translation<T, D> where
    Owned<T, Const<D>>: Serialize

impl<T, R, const D: usize> Serialize for Isometry<T, R, D> where
    R: Serialize,
    DefaultAllocator: Allocator<T, Const<"R: Serialize, DefaultAllocator: Allocator<T, Const<D>>, Owned<T, Const<D>>: Serialize, T: Scalar">>,
    Owned<T, Const<"R: Serialize, DefaultAllocator: Allocator<T, Const<D>>, Owned<T, Const<D>>: Serialize, T: Scalar">>: Serialize,
    T: Scalar

impl<T, R, const D: usize> Serialize for Similarity<T, R, D> where
    T: Scalar + Serialize,
    R: Serialize,
    DefaultAllocator: Allocator<T, Const<"T: Scalar + Serialize, R: Serialize, DefaultAllocator: Allocator<T, Const<D>>, Owned<T, Const<D>>: Serialize">>,
    Owned<T, Const<"T: Scalar + Serialize, R: Serialize, DefaultAllocator: Allocator<T, Const<D>>, Owned<T, Const<D>>: Serialize">>: Serialize

impl<T: RealField, C: TCategory, const D: usize> Serialize for Transform<T, C, D> where
    Const<D>: DimNameAdd<U1>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,
    Owned<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for Bidiagonal<T, R, C> where
    DimMinimum<R, C>: DimSub<U1>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>> + Allocator<T, DimDiff<DimMinimum<R, C>, U1>>,
    DimMinimum<R, C>: DimSub<U1>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>> + Allocator<T, DimDiff<DimMinimum<R, C>, U1>>,
    OMatrix<T, R, C>: Serialize,
    OVector<T, DimMinimum<R, C>>: Serialize,
    OVector<T, DimDiff<DimMinimum<R, C>, U1>>: Serialize

impl<T: SimdComplexField, D: Dim> Serialize for Cholesky<T, D> where
    DefaultAllocator: Allocator<T, D, D>,
    DefaultAllocator: Allocator<T, D>,
    OMatrix<T, D, D>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for ColPivQR<T, R, C> where
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>> + Allocator<(usize, usize), DimMinimum<R, C>>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>>,
    OMatrix<T, R, C>: Serialize,
    PermutationSequence<DimMinimum<R, C>>: Serialize,
    OVector<T, DimMinimum<R, C>>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for FullPivLU<T, R, C> where
    DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
    OMatrix<T, R, C>: Serialize,
    PermutationSequence<DimMinimum<R, C>>: Serialize

impl<T: ComplexField, D: DimSub<U1>> Serialize for Hessenberg<T, D> where
    DefaultAllocator: Allocator<T, D, D> + Allocator<T, DimDiff<D, U1>>,
    DefaultAllocator: Allocator<T, D, D> + Allocator<T, DimDiff<D, U1>>,
    OMatrix<T, D, D>: Serialize,
    OVector<T, DimDiff<D, U1>>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for LU<T, R, C> where
    DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
    OMatrix<T, R, C>: Serialize,
    PermutationSequence<DimMinimum<R, C>>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for QR<T, R, C> where
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>>,
    DefaultAllocator: Allocator<T, R, C> + Allocator<T, DimMinimum<R, C>>,
    OMatrix<T, R, C>: Serialize,
    OVector<T, DimMinimum<R, C>>: Serialize

impl<T: ComplexField, D: Dim> Serialize for Schur<T, D> where
    DefaultAllocator: Allocator<T, D, D>,
    DefaultAllocator: Allocator<T, D, D>,
    OMatrix<T, D, D>: Serialize

impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for SVD<T, R, C> where
    DefaultAllocator: Allocator<T, DimMinimum<R, C>, C> + Allocator<T, R, DimMinimum<R, C>> + Allocator<T::RealField, DimMinimum<R, C>>,
    DefaultAllocator: Allocator<T::RealField, DimMinimum<R, C>> + Allocator<T, DimMinimum<R, C>, C> + Allocator<T, R, DimMinimum<R, C>>,
    OMatrix<T, R, DimMinimum<R, C>>: Serialize,
    OMatrix<T, DimMinimum<R, C>, C>: Serialize,
    OVector<T::RealField, DimMinimum<R, C>>: Serialize

impl<T: ComplexField, D: Dim> Serialize for SymmetricEigen<T, D> where
    DefaultAllocator: Allocator<T, D, D> + Allocator<T::RealField, D>,
    DefaultAllocator: Allocator<T, D, D> + Allocator<T::RealField, D>,
    OVector<T::RealField, D>: Serialize,
    OMatrix<T, D, D>: Serialize

impl<T: ComplexField, D: DimSub<U1>> Serialize for SymmetricTridiagonal<T, D> where
    DefaultAllocator: Allocator<T, D, D> + Allocator<T, DimDiff<D, U1>>,
    DefaultAllocator: Allocator<T, D, D> + Allocator<T, DimDiff<D, U1>>,
    OMatrix<T, D, D>: Serialize,
    OVector<T, DimDiff<D, U1>>: Serialize

impl<T: RealField, D: Dim> Serialize for UDU<T, D> where
    DefaultAllocator: Allocator<T, D> + Allocator<T, D, D>,
    OVector<T, D>: Serialize,
    OMatrix<T, D, D>: Serialize

impl<T> Serialize for Complex<T> where
    T: Serialize

impl Serialize for Raw

impl<'a> Serialize for RawRef<'a>

impl Serialize for Value

impl Serialize for Number

impl<A: Array> Serialize for SmallVec<A> where
    A::Item: Serialize

impl Serialize for Size

impl<T> Serialize for MixedId<T> where
    T: Serialize

impl Serialize for Def

impl Serialize for Def

impl Serialize for Shape

impl Serialize for Def

impl Serialize for Def

impl Serialize for Def

impl Serialize for Def

impl Serialize for Def

impl Serialize for Def

impl Serialize for Action

impl Serialize for Edge

impl Serialize for Duct

impl Serialize for Put

impl Serialize for Policy

impl Serialize for Policy

impl<U: Unit + 'static> Serialize for PumpSpec<U>

impl Serialize for Def

impl Serialize for Def

impl Serialize for Item

impl Serialize for Def

impl Serialize for NodeId

impl Serialize for Node

impl Serialize for Def

impl Serialize for Def

impl Serialize for Skill

impl Serialize for Config

impl Serialize for AnyDef

impl Serialize for State

impl Serialize for Unit

impl Serialize for Time

impl<T> Serialize for Rate<T> where
    T: Serialize

impl Serialize for Skill

impl<U: Unit> Serialize for Portion<U>

impl<S, X> Serialize for Id<S, X>

impl<S, X> Serialize for IdString<S, X>