Trait fidl::encoding::Decode

source ·
pub trait Decode<T: TypeMarker>: 'static + Sized {
    // Required methods
    fn new_empty() -> Self;
    unsafe fn decode(
        &mut self,
        decoder: &mut Decoder<'_>,
        offset: usize,
        depth: Depth
    ) -> Result<()>;
}
Expand description

A Rust type that can be decoded from the FIDL type T.

Required Methods§

source

fn new_empty() -> Self

Creates a valid instance of Self. The specific value does not matter, since it will be overwritten by decode.

source

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

Decodes an object of type T from the decoder’s buffers into self.

Implementations must validate every byte in decoder.buf[offset..offset + T::inline_size(decoder.context)] unless returning an Err value. Implementations that decode out-of-line objects must call depth.increment()?.

§Safety

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

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Decode<bool> for bool

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<f32> for f32

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<f64> for f64

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<i8> for i8

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<i16> for i16

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<i32> for i32

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<i64> for i64

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<u8> for u8

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<u16> for u16

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<u32> for u32

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<u64> for u64

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<EmptyPayload> for ()

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, _decoder: &mut Decoder<'_>, _offset: usize, _depth: Depth ) -> Result<()>

source§

impl Decode<EmptyStruct> for ()

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, _depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker> Decode<Boxed<T>> for Option<Box<T::Owned>>

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker> Decode<Optional<T>> for Option<T::Owned>

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker> Decode<OptionalUnion<T>> for Option<Box<T::Owned>>

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker, E: TypeMarker> Decode<ResultType<T, E>> for Result<T::Owned, E::Owned>

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker, const N: usize> Decode<Array<T, N>> for [T::Owned; N]

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<T: TypeMarker, const N: usize> Decode<Vector<T, N>> for Vec<T::Owned>

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

source§

impl<const N: usize> Decode<BoundedString<N>> for String

source§

fn new_empty() -> Self

source§

unsafe fn decode( &mut self, decoder: &mut Decoder<'_>, offset: usize, depth: Depth ) -> Result<()>

Implementors§