Trait Encode

pub unsafe trait Encode<T, D>: Sized{
    // Required method
    unsafe fn encode(
        self,
        encoder: &mut Encoder<'_, D>,
        offset: usize,
        depth: Depth,
    ) -> Result<(), Error>;
}
Expand description

A Rust type that can be encoded as the FIDL type T.

§Safety

Implementations of encode must write every byte in encoder.buf[offset..offset + T::inline_size(encoder.context)] unless returning an Err value.

Required Methods§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID.

Implementations that encode out-of-line objects must call depth.increment()?.

§Safety

Callers must ensure offset is a multiple of T::inline_align and encoder.buf has room for writing T::inline_size bytes at offset.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<D> Encode<bool, D> for bool
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<f32, D> for f32
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<f64, D> for f64
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<i8, D> for i8
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<i16, D> for i16
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<i32, D> for i32
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<i64, D> for i64
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<u8, D> for u8
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<u16, D> for u16
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<u32, D> for u32
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<u64, D> for u64
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<EmptyPayload, D> for ()
where D: ResourceDialect,

§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D> Encode<EmptyStruct, D> for ()
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, _depth: Depth, ) -> Result<(), Error>

§

impl<D, T, X, E, Y> Encode<ResultType<T, E>, D> for Result<X, Y>
where D: ResourceDialect, T: TypeMarker, X: Encode<T, D>, E: TypeMarker, Y: Encode<E, D>,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, E, D> Encode<Boxed<T>, D> for Option<E>
where T: TypeMarker, E: Encode<T, D>, D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, E, D> Encode<Optional<T>, D> for Option<E>
where T: TypeMarker, E: Encode<T, D>, D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, E, D> Encode<OptionalUnion<T>, D> for Option<E>
where T: TypeMarker, E: Encode<T, D>, D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, const N: usize, D> Encode<Array<T, N>, D> for &[<T as TypeMarker>::Owned; N]
where T: ValueTypeMarker, D: ResourceDialect, <T as ValueTypeMarker>::Borrowed<'q>: for<'q> Encode<T, D>,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, const N: usize, D> Encode<Array<T, N>, D> for &mut [<T as TypeMarker>::Owned; N]
where T: ResourceTypeMarker, D: ResourceDialect, <T as ResourceTypeMarker>::Borrowed<'q>: for<'q> Encode<T, D>,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, const N: usize, D> Encode<Vector<T, N>, D> for &[<T as TypeMarker>::Owned]
where T: ValueTypeMarker, D: ResourceDialect, <T as ValueTypeMarker>::Borrowed<'q>: for<'q> Encode<T, D>,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<T, const N: usize, D> Encode<Vector<T, N>, D> for &mut [<T as TypeMarker>::Owned]

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

§

impl<const N: usize, D> Encode<BoundedString<N>, D> for &str
where D: ResourceDialect,

§

unsafe fn encode( self, encoder: &mut Encoder<'_, D>, offset: usize, depth: Depth, ) -> Result<(), Error>

Implementors§

§

impl<D> Encode<FrameworkErr, D> for FrameworkErr
where D: ResourceDialect,

§

impl<D> Encode<ObjectType, D> for ObjectType
where D: ResourceDialect,

§

impl<D> Encode<Rights, D> for Rights
where D: ResourceDialect,

§

impl<D> Encode<WireMetadata, D> for &WireMetadata
where D: ResourceDialect,

§

impl<D> Encode<EpitaphBody, D> for &EpitaphBody
where D: ResourceDialect,

§

impl<D> Encode<TransactionHeader, D> for &TransactionHeader
where D: ResourceDialect,

§

impl<H, T, E, D> Encode<GenericMessageType<H, T>, D> for GenericMessage<<H as TypeMarker>::Owned, E>
where H: ValueTypeMarker, T: TypeMarker, E: Encode<T, D>, D: ResourceDialect, <H as ValueTypeMarker>::Borrowed<'a>: for<'a> Encode<H, D>,

§

impl<T, D> Encode<Instant<T>, D> for Instant<T>
where T: Timeline + Copy + 'static, D: ResourceDialect,

§

impl<T, D> Encode<Instant<T, TicksUnit>, D> for Instant<T, TicksUnit>
where T: Timeline + 'static, D: ResourceDialect,

§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

§

impl<T, const OBJECT_TYPE: u32, const RIGHTS: u32> Encode<HandleType<T, OBJECT_TYPE, RIGHTS>, <T as EncodableAsHandle>::Dialect> for T
where T: 'static + EncodableAsHandle,