logo

Struct rkyv::with::With

source · []
#[repr(transparent)]
pub struct With<F: ?Sized, W> { /* private fields */ }
Expand description

A transparent wrapper for archived fields.

This is used by the #[with(...)] attribute in the Archive macro to create transparent serialization wrappers. Those wrappers leverage ArchiveWith to change how the type is archived, serialized, and deserialized.

When a field is serialized, a reference to the field (i.e. &T) can be cast to a reference to a wrapping With (i.e. With<T, Wrapper>) and serialized instead. This is safe to do because With is a transparent wrapper and is shaped exactly the same as the underlying field.

Example

use rkyv::{Archive, with::Inline};

#[derive(Archive)]
struct Example<'a> {
    // This will archive as if it were With<&'a i32, Inline>. That will delegate the archival
    // to the ArchiveWith implementation of Inline for &T.
    #[with(Inline)]
    a: &'a i32,
}

Implementations

Casts a With reference from a reference to the underlying field.

This is always safe to do because With is a transparent wrapper.

Unwraps a With into the underlying field.

Trait Implementations

The archived representation of this type. Read more

The resolver for this type. It must contain all the additional information from serializing needed to make the archived type from the normal type. Read more

Creates the archived version of this value at the given position and writes it to the given output. Read more

The archived type of a With<F, Self>.

The resolver of a With<F, Self>.

Resolves the archived type using a reference to the field type F. Read more

Converts this type into a shared reference of the (usually inferred) input type.

Formats the value using the given formatter. Read more

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Deserializes the field type F using the given deserializer.

Writes the dependencies for the object and returns a resolver that can create the archived type. Read more

Serializes the field type F using the given serializer.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

The archived version of the pointer metadata for this type.

Converts some archived metadata to the pointer metadata for itself.

The archived counterpart of this type. Unlike Archive, it may be unsized. Read more

The resolver for the metadata of this type. Read more

Creates the archived version of the metadata for this value at the given position and writes it to the given output. Read more

Resolves a relative pointer to this value with the given from and to and writes it to the given output. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Deserializes using the given deserializer

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type for metadata in pointers and references to Self.

Writes the object and returns the position of the archived type.

Serializes the metadata for the given type.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.