pub trait Serialize<T: ?Sized = Self>: Sync {
// Required method
fn serialize<'a>(value: &'a T, state: &mut State) -> Result<Emit<'a>, Error>;
// Provided methods
fn finish(value: &T, state: &mut State) -> Result<(), Error> { ... }
fn is_optional(value: &T) -> bool { ... }
fn describe(value: &T, d: &mut dyn Describe) { ... }
fn container_shape(value: &T) -> ContainerShape { ... }
}Expand description
A data structure that can be serialized into any data format supported by Deser.
serialize serializes the value into an Emit. For
compound values like lists or structs, it holds an emitter which
hands out the values the compound value contains. The
container_shape of such values is passed on
with the start event of the container.
§Adapters
The type parameter T is the type of the value that is serialized. It
defaults to Self: impl Serialize for Foo serializes Foo values. A
type that implements Serialize for another type is an adapter, it
serializes values of that type on their behalf (see
adapters):
use deser::ser::{Emit, Serialize};
use deser::{Atom, Error, State};
/// Serializes a `u32` as string.
pub struct AsString;
impl Serialize<u32> for AsString {
fn serialize<'a>(value: &'a u32, _state: &mut State) -> Result<Emit<'a>, Error> {
Ok(Emit::Atom(Atom::Str(value.to_string().into())))
}
}Adapters are never instantiated, only their functions are used. The
serializers of the data formats receive the values as SerializeRef,
a reference to the value with its type (and adapter) erased.
§Thread Safety
Serializables are Sync and the emitters they create are Send. This
allows an ongoing serialization (a SerializeDriver) to move between
threads, for instance when it is suspended while the output is written
asynchronously. Types with shared ownership or interior mutability that
is not thread safe (such as Rc or RefCell) cannot be serialized.
Mutex and RwLock cannot be serialized either as the lock guard would
have to be held while the serialization moves between threads.
Required Methods§
Provided Methods§
Sourcefn finish(value: &T, state: &mut State) -> Result<(), Error>
fn finish(value: &T, state: &mut State) -> Result<(), Error>
Invoked after the serialization finished.
This is primarily useful to undo some state change in the serializer state at the end of the processing.
Sourcefn is_optional(value: &T) -> bool
fn is_optional(value: &T) -> bool
Checks if the value represents an optional value.
This can be used by an emitter to skip over values that are currently
in the optional state. For instance Option<T> returns true here if
the value is None and the struct emitter created by the derive feature
will skip over these if #[deser(skip_serializing_optionals)] is set on
the struct.
Sourcefn describe(value: &T, d: &mut dyn Describe)
fn describe(value: &T, d: &mut dyn Describe)
Describes the Rust shape of the value.
This is only invoked by formats which want to reflect the Rust shape
of values, see Describe. The default implementation describes
nothing. Wrappers which serialize as the value they wrap should
describe themselves and then delegate to the wrapped value.
Sourcefn container_shape(value: &T) -> ContainerShape
fn container_shape(value: &T) -> ContainerShape
Returns the shape of the value if it’s a map or sequence.
The shape is passed on with the MapStart
or SeqStart event, it’s ignored for other
values. The default is ContainerShape::new.
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 AtomicBool
Available on target_has_atomic=8 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicBool
target_has_atomic=8 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicI8
Available on target_has_atomic=8 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicI8
target_has_atomic=8 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicI16
Available on target_has_atomic=16 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicI16
target_has_atomic=16 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicI32
Available on target_has_atomic=32 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicI32
target_has_atomic=32 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicI64
Available on target_has_atomic=64 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicI64
target_has_atomic=64 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicIsize
Available on target_has_atomic=ptr only.The value is loaded with relaxed ordering.
impl Serialize for AtomicIsize
target_has_atomic=ptr only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicU8
Available on target_has_atomic=8 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicU8
target_has_atomic=8 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicU16
Available on target_has_atomic=16 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicU16
target_has_atomic=16 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicU32
Available on target_has_atomic=32 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicU32
target_has_atomic=32 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicU64
Available on target_has_atomic=64 only.The value is loaded with relaxed ordering.
impl Serialize for AtomicU64
target_has_atomic=64 only.The value is loaded with relaxed ordering.
Source§impl Serialize for AtomicUsize
Available on target_has_atomic=ptr only.The value is loaded with relaxed ordering.
impl Serialize for AtomicUsize
target_has_atomic=ptr only.The value is loaded with relaxed ordering.
Source§impl Serialize for BigDecimal
Available on crate feature bigdecimal only.
impl Serialize for BigDecimal
bigdecimal only.Source§impl Serialize for DateTime<FixedOffset>
Available on crate feature chrono only.
impl Serialize for DateTime<FixedOffset>
chrono only.Source§impl Serialize for Infallible
Values of Infallible do not exist, they are never serialized.
impl Serialize for Infallible
Values of Infallible do not exist, they are never serialized.
Source§impl Serialize for NaiveDateTime
Available on crate feature chrono only.
impl Serialize for NaiveDateTime
chrono only.Source§impl Serialize for OffsetDateTime
Available on crate feature time only.
impl Serialize for OffsetDateTime
time only.Source§impl Serialize for OsStr
Available on crate feature std only.Serializes as a string like Path. OS strings which are not valid
UTF-8 fail to serialize.
impl Serialize for OsStr
std only.Serializes as a string like Path. OS strings which are not valid
UTF-8 fail to serialize.
Source§impl Serialize for Path
Available on crate feature std only.Serializes as a string. Paths which are not valid UTF-8 fail to
serialize.
impl Serialize for Path
std only.Serializes as a string. Paths which are not valid UTF-8 fail to serialize.
Source§impl Serialize for PrimitiveDateTime
Available on crate feature time only.
impl Serialize for PrimitiveDateTime
time only.Source§impl Serialize for SignedDuration
Available on crate feature jiff only.
impl Serialize for SignedDuration
jiff only.Source§impl Serialize for SocketAddr
Serializes as a string (with Display).
impl Serialize for SocketAddr
Serializes as a string (with Display).
Source§impl Serialize for SocketAddrV4
Serializes as a string (with Display).
impl Serialize for SocketAddrV4
Serializes as a string (with Display).
Source§impl Serialize for SocketAddrV6
Serializes as a string (with Display).
impl Serialize for SocketAddrV6
Serializes as a string (with Display).
Source§impl Serialize for SystemTime
impl Serialize for SystemTime
Source§impl Serialize for UtcDateTime
Available on crate feature time only.
impl Serialize for UtcDateTime
time only.Source§impl<'a, T> Serialize for Cow<'a, T>
Cow<[T]> is implemented separately as slices are serialized by the
containers holding them (see serialize_slice).
impl<'a, T> Serialize for Cow<'a, T>
Cow<[T]> is implemented separately as slices are serialized by the
containers holding them (see serialize_slice).
fn serialize<'b>(value: &'b Self, state: &mut State) -> Result<Emit<'b>, Error>
fn finish(value: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(value: &Self) -> ContainerShape
fn describe(value: &Self, d: &mut dyn Describe)
Source§impl<'r, T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<&'r T> for &'r A
impl<'r, T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<&'r T> for &'r A
fn serialize<'a>(value: &'a &'r T, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(value: &&'r T, state: &mut State) -> Result<(), Error>
fn is_optional(value: &&'r T) -> bool
fn container_shape(value: &&'r T) -> ContainerShape
fn describe(value: &&'r T, d: &mut dyn Describe)
Source§impl<'r, T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<&'r mut T> for &'r mut A
impl<'r, T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<&'r mut T> for &'r mut A
fn serialize<'a>( value: &'a &'r mut T, state: &mut State, ) -> Result<Emit<'a>, Error>
fn finish(value: &&'r mut T, state: &mut State) -> Result<(), Error>
fn is_optional(value: &&'r mut T) -> bool
fn container_shape(value: &&'r mut T) -> ContainerShape
fn describe(value: &&'r mut T, d: &mut dyn Describe)
Source§impl<K, V, H: BuildHasher + Sync, KA, VA, AH: Sync> Serialize<HashMap<K, V, H>> for HashMap<KA, VA, AH>
impl<K, V, H: BuildHasher + Sync, KA, VA, AH: Sync> Serialize<HashMap<K, V, H>> for HashMap<KA, VA, AH>
Source§impl<K, V, S: Sync, KA, VA, AS: Sync> Serialize<HashMap<K, V, S>> for HashMap<KA, VA, AS>
Available on crate feature hashbrown only.
impl<K, V, S: Sync, KA, VA, AS: Sync> Serialize<HashMap<K, V, S>> for HashMap<KA, VA, AS>
hashbrown only.Source§impl<K, V, S: Sync, KA, VA, AS: Sync> Serialize<IndexMap<K, V, S>> for IndexMap<KA, VA, AS>
Available on crate feature indexmap only.
impl<K, V, S: Sync, KA, VA, AS: Sync> Serialize<IndexMap<K, V, S>> for IndexMap<KA, VA, AS>
indexmap only.Source§impl<T1: Sync, T2: Sync, T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A1: Serialize<T1>, A2: Serialize<T2>, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
impl<T1: Sync, T2: Sync, T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A1: Serialize<T1>, A2: Serialize<T2>, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
fn container_shape( _value: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), ) -> ContainerShape
fn describe( _value: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe, )
fn serialize<'a>( value: &'a (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T2: Sync, T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A2: Serialize<T2>, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
impl<T2: Sync, T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A2: Serialize<T2>, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
fn container_shape( _value: &(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), ) -> ContainerShape
fn describe( _value: &(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe, )
fn serialize<'a>( value: &'a (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
impl<T3: Sync, T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A3: Serialize<T3>, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
fn container_shape( _value: &(T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), ) -> ContainerShape
fn describe( _value: &(T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe, )
fn serialize<'a>( value: &'a (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A4, A5, A6, A7, A8, A9, A10, A11, A12)
impl<T4: Sync, T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A4: Serialize<T4>, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T4, T5, T6, T7, T8, T9, T10, T11, T12)> for (A4, A5, A6, A7, A8, A9, A10, A11, A12)
fn container_shape( _value: &(T4, T5, T6, T7, T8, T9, T10, T11, T12), ) -> ContainerShape
fn describe( _value: &(T4, T5, T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe, )
fn serialize<'a>( value: &'a (T4, T5, T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T5, T6, T7, T8, T9, T10, T11, T12)> for (A5, A6, A7, A8, A9, A10, A11, A12)
impl<T5: Sync, T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A5: Serialize<T5>, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T5, T6, T7, T8, T9, T10, T11, T12)> for (A5, A6, A7, A8, A9, A10, A11, A12)
fn container_shape( _value: &(T5, T6, T7, T8, T9, T10, T11, T12), ) -> ContainerShape
fn describe(_value: &(T5, T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T5, T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T6, T7, T8, T9, T10, T11, T12)> for (A6, A7, A8, A9, A10, A11, A12)
impl<T6: Sync, T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A6: Serialize<T6>, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T6, T7, T8, T9, T10, T11, T12)> for (A6, A7, A8, A9, A10, A11, A12)
fn container_shape(_value: &(T6, T7, T8, T9, T10, T11, T12)) -> ContainerShape
fn describe(_value: &(T6, T7, T8, T9, T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T6, T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T7, T8, T9, T10, T11, T12)> for (A7, A8, A9, A10, A11, A12)
impl<T7: Sync, T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A7: Serialize<T7>, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T7, T8, T9, T10, T11, T12)> for (A7, A8, A9, A10, A11, A12)
fn container_shape(_value: &(T7, T8, T9, T10, T11, T12)) -> ContainerShape
fn describe(_value: &(T7, T8, T9, T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T7, T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T8, T9, T10, T11, T12)> for (A8, A9, A10, A11, A12)
impl<T8: Sync, T9: Sync, T10: Sync, T11: Sync, T12: Sync, A8: Serialize<T8>, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T8, T9, T10, T11, T12)> for (A8, A9, A10, A11, A12)
fn container_shape(_value: &(T8, T9, T10, T11, T12)) -> ContainerShape
fn describe(_value: &(T8, T9, T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T8, T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T9: Sync, T10: Sync, T11: Sync, T12: Sync, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T9, T10, T11, T12)> for (A9, A10, A11, A12)
impl<T9: Sync, T10: Sync, T11: Sync, T12: Sync, A9: Serialize<T9>, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T9, T10, T11, T12)> for (A9, A10, A11, A12)
fn container_shape(_value: &(T9, T10, T11, T12)) -> ContainerShape
fn describe(_value: &(T9, T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T9, T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T10: Sync, T11: Sync, T12: Sync, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T10, T11, T12)> for (A10, A11, A12)
impl<T10: Sync, T11: Sync, T12: Sync, A10: Serialize<T10>, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T10, T11, T12)> for (A10, A11, A12)
fn container_shape(_value: &(T10, T11, T12)) -> ContainerShape
fn describe(_value: &(T10, T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T10, T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T11: Sync, T12: Sync, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T11, T12)> for (A11, A12)
impl<T11: Sync, T12: Sync, A11: Serialize<T11>, A12: Serialize<T12>> Serialize<(T11, T12)> for (A11, A12)
fn container_shape(_value: &(T11, T12)) -> ContainerShape
fn describe(_value: &(T11, T12), d: &mut dyn Describe)
fn serialize<'a>( value: &'a (T11, T12), state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T, E, TA, EA> Serialize<Result<T, E>> for Result<TA, EA>
Serializes externally tagged: {"Ok": value} or {"Err": error}.
impl<T, E, TA, EA> Serialize<Result<T, E>> for Result<TA, EA>
Serializes externally tagged: {"Ok": value} or {"Err": error}.
Source§impl<T, S: Sync, A, AS: Sync> Serialize<HashSet<T, S>> for HashSet<A, AS>
Available on crate feature hashbrown only.
impl<T, S: Sync, A, AS: Sync> Serialize<HashSet<T, S>> for HashSet<A, AS>
hashbrown only.Source§impl<T, S: Sync, A, AS: Sync> Serialize<IndexSet<T, S>> for IndexSet<A, AS>
Available on crate feature indexmap only.
impl<T, S: Sync, A, AS: Sync> Serialize<IndexSet<T, S>> for IndexSet<A, AS>
indexmap only.Source§impl<T: Send + Sync + ?Sized, A: Serialize<T> + Send + ?Sized> Serialize<Arc<T>> for Arc<A>
impl<T: Send + Sync + ?Sized, A: Serialize<T> + Send + ?Sized> Serialize<Arc<T>> for Arc<A>
fn serialize<'a>( value: &'a Arc<T>, state: &mut State, ) -> Result<Emit<'a>, Error>
fn finish(value: &Arc<T>, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Arc<T>) -> bool
fn container_shape(value: &Arc<T>) -> ContainerShape
fn describe(value: &Arc<T>, d: &mut dyn Describe)
Source§impl<T: Serialize + Send> Serialize for OnceLock<T>
Available on crate feature std only.Serializes like an Option: as the value if it’s set, as null if not.
impl<T: Serialize + Send> Serialize for OnceLock<T>
std only.Serializes like an Option: as the value if it’s set, as null if not.
fn serialize<'a>(this: &'a Self, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(this: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(this: &Self) -> ContainerShape
fn describe(this: &Self, d: &mut dyn Describe)
Source§impl<T: Serialize> Serialize for Bound<T>
Serializes externally tagged like serde: "Unbounded", {"Included": value} or {"Excluded": value}.
impl<T: Serialize> Serialize for Bound<T>
Serializes externally tagged like serde: "Unbounded", {"Included": value} or {"Excluded": value}.
Source§impl<T: Serialize> Serialize for ManuallyDrop<T>
Serializes as the inner value.
impl<T: Serialize> Serialize for ManuallyDrop<T>
Serializes as the inner value.
fn serialize<'a>(value: &'a Self, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(value: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(value: &Self) -> ContainerShape
fn describe(value: &Self, d: &mut dyn Describe)
Source§impl<T: Serialize> Serialize for Range<T>
Serializes as a struct with start and end like serde.
impl<T: Serialize> Serialize for Range<T>
Serializes as a struct with start and end like serde.
Source§impl<T: Serialize> Serialize for RangeInclusive<T>
Serializes as a struct with start and end like serde.
impl<T: Serialize> Serialize for RangeInclusive<T>
Serializes as a struct with start and end like serde.
Source§impl<T: Serialize> Serialize for Reverse<T>
impl<T: Serialize> Serialize for Reverse<T>
fn serialize<'a>(value: &'a Self, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(value: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(value: &Self) -> ContainerShape
fn describe(value: &Self, d: &mut dyn Describe)
Source§impl<T: Serialize> Serialize for Saturating<T>
impl<T: Serialize> Serialize for Saturating<T>
fn serialize<'a>(value: &'a Self, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(value: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(value: &Self) -> ContainerShape
fn describe(value: &Self, d: &mut dyn Describe)
Source§impl<T: Serialize> Serialize for Wrapping<T>
impl<T: Serialize> Serialize for Wrapping<T>
fn serialize<'a>(value: &'a Self, state: &mut State) -> Result<Emit<'a>, Error>
fn finish(value: &Self, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Self) -> bool
fn container_shape(value: &Self) -> ContainerShape
fn describe(value: &Self, d: &mut dyn Describe)
Source§impl<T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<Box<T>> for Box<A>
impl<T: Sync + ?Sized, A: Serialize<T> + ?Sized> Serialize<Box<T>> for Box<A>
fn serialize<'a>( value: &'a Box<T>, state: &mut State, ) -> Result<Emit<'a>, Error>
fn finish(value: &Box<T>, state: &mut State) -> Result<(), Error>
fn is_optional(value: &Box<T>) -> bool
fn container_shape(value: &Box<T>) -> ContainerShape
fn describe(value: &Box<T>, d: &mut dyn Describe)
Source§impl<T: Sync, A: Serialize<T>, const CAP: usize> Serialize<ArrayVec<T, CAP>> for ArrayVec<A, CAP>
Available on crate feature arrayvec only.
impl<T: Sync, A: Serialize<T>, const CAP: usize> Serialize<ArrayVec<T, CAP>> for ArrayVec<A, CAP>
arrayvec only.Source§impl<T: Sync, A: Serialize<T>, const N: usize> Serialize<SmallVec<[T; N]>> for SmallVec<[A; N]>
Available on crate feature smallvec only.
impl<T: Sync, A: Serialize<T>, const N: usize> Serialize<SmallVec<[T; N]>> for SmallVec<[A; N]>
smallvec only.Source§impl<T: Sync, A: Serialize<T>> Serialize<BinaryHeap<T>> for BinaryHeap<A>
The elements are emitted in the (arbitrary) order of the heap.
impl<T: Sync, A: Serialize<T>> Serialize<BinaryHeap<T>> for BinaryHeap<A>
The elements are emitted in the (arbitrary) order of the heap.
fn container_shape(value: &BinaryHeap<T>) -> ContainerShape
fn serialize<'a>( value: &'a BinaryHeap<T>, state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T: Sync, A: Serialize<T>> Serialize<LinkedList<T>> for LinkedList<A>
impl<T: Sync, A: Serialize<T>> Serialize<LinkedList<T>> for LinkedList<A>
fn container_shape(value: &LinkedList<T>) -> ContainerShape
fn serialize<'a>( value: &'a LinkedList<T>, state: &mut State, ) -> Result<Emit<'a>, Error>
Source§impl<T: Sync, A: Serialize<T>> Serialize<Option<T>> for Option<A>
impl<T: Sync, A: Serialize<T>> Serialize<Option<T>> for Option<A>
fn is_optional(value: &Option<T>) -> bool
fn container_shape(value: &Option<T>) -> ContainerShape
fn describe(value: &Option<T>, d: &mut dyn Describe)
fn serialize<'a>( value: &'a Option<T>, state: &mut State, ) -> Result<Emit<'a>, Error>
fn finish(value: &Option<T>, state: &mut State) -> Result<(), Error>
Source§impl<const CAP: usize> Serialize for ArrayString<CAP>
Available on crate feature arrayvec only.
impl<const CAP: usize> Serialize for ArrayString<CAP>
arrayvec only.Implementors§
impl Serialize for deser_core::ext::BigInt
impl Serialize for Datetime
impl Serialize for deser_core::ext::Decimal
impl Serialize for deser_core::ext::Duration
impl Serialize for RecordBuf<'_>
Record buffers serialize like Recordings, borrowed atoms are
serialized without copying them.
impl Serialize for Recording
impl Serialize for SerializeHandle<'_>
impl Serialize for SerializeRef<'_>
impl Serialize for deser_core::ext::Timestamp
impl Serialize for deser_core::ext::Uuid
impl Serialize<bool> for Flag
impl<'a, F: RawFormat> Serialize<Raw<'a, F>> for Borrowed
impl<'a> Serialize for Number<'a>
impl<'a> Serialize<Cow<'a, [u8]>> for Borrowed
impl<'a> Serialize<Cow<'a, str>> for Borrowed
impl<'c, E: BytesEncoding> Serialize<Cow<'c, [u8]>> for E
impl<E: BytesEncoding> Serialize<BString> for E
bstr only.impl<E: BytesEncoding> Serialize<Bytes> for E
bytes only.impl<E: BytesEncoding> Serialize<BytesMut> for E
bytes only.impl<E: BytesEncoding> Serialize<Vec<u8>> for E
impl<F: RawFormat> Serialize for Raw<'_, F>
Serialized with the format F, the encoded value is written as it is.
Other formats serialize the value it holds.
impl<K, V, H, KA, VA> Serialize<HashMap<K, V, H>> for MapSkipError<KA, VA>
std only.impl<K, V, KA, VA> Serialize<BTreeMap<K, V>> for MapSkipError<KA, VA>
impl<K, V, S, KA, VA> Serialize<HashMap<K, V, S>> for MapSkipError<KA, VA>
hashbrown only.impl<K, V, S, KA, VA> Serialize<IndexMap<K, V, S>> for MapSkipError<KA, VA>
indexmap only.impl<T, A: Serialize<T>, const SEP: char> Serialize<BTreeSet<T>> for Separated<SEP, A>
impl<T, A: Serialize<T>, const SEP: char> Serialize<Vec<T>> for Separated<SEP, A>
impl<T, A: Serialize<T>, const SEP: char> Serialize<VecDeque<T>> for Separated<SEP, A>
impl<T, H, A: Serialize<T>, const SEP: char> Serialize<HashSet<T, H>> for Separated<SEP, A>
impl<T, U> Serialize<T> for FromInto<U>
impl<T, U> Serialize<T> for TryFromInto<U>
impl<T: ?Sized, A: Serialize<T>> Serialize<T> for DefaultOnError<A>
impl<T: ?Sized, A: Serialize<T>> Serialize<T> for SkipBlank<A>
impl<T: ?Sized, A: Serialize<T>> Serialize<T> for TrimWhitespace<A>
impl<T: ?Sized, H: Hint, A: Serialize<T>> Serialize<T> for Hinted<H, A>
impl<T: BytesBuf, F: BytesFallbackFormat> Serialize<T> for BytesFallback<F>
impl<T: DerivedSerialize + ?Sized> Serialize<T> for Derived
impl<T: Display + ?Sized> Serialize<T> for DisplayFromStr
impl<T: Serialize + ?Sized> Serialize<T> for Same
impl<T: Serialize> Serialize for Streamed<T>
impl<T: Sync, A: Serialize<T>> Serialize for As<T, A>
impl<T: Sync, A: Serialize<T>> Serialize<Vec<T>> for VecSkipError<A>
impl<const CAP: usize, E: BytesEncoding> Serialize<ArrayVec<u8, CAP>> for E
arrayvec only.impl<const N: usize, E: BytesEncoding> Serialize<SmallVec<[u8; N]>> for E
smallvec only.