Queryable

Trait Queryable 

Source
pub trait Queryable: Sized {
    type Args;

    // Required methods
    fn decode(
        decoder: &Decoder,
        args: &Self::Args,
        buf: &[u8],
    ) -> Result<Self, DecodeError>;
    fn check_descriptor(
        ctx: &DescriptorContext<'_>,
        type_pos: TypePos,
    ) -> Result<Self::Args, DescriptorMismatch>;

    // Provided method
    fn decode_optional(
        decoder: &Decoder,
        args: &Self::Args,
        buf: Option<&[u8]>,
    ) -> Result<Self, DecodeError> { ... }
}

Required Associated Types§

Source

type Args

Data returned by Queryable::check_descriptor, that can be used during decoding. For example, this is used to pass the order of object pointers (which is sent in type descriptors) to decode function.

Required Methods§

Source

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Provided Methods§

Source

fn decode_optional( decoder: &Decoder, args: &Self::Args, buf: Option<&[u8]>, ) -> Result<Self, DecodeError>

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§

Source§

impl<T0: Queryable> Queryable for (T0,)

Source§

type Args = (<T0 as Queryable>::Args,)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable> Queryable for (T0, T1)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable> Queryable for (T0, T1, T2)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable> Queryable for (T0, T1, T2, T3)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable> Queryable for (T0, T1, T2, T3, T4)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable> Queryable for (T0, T1, T2, T3, T4, T5)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable, T7: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args, <T7 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable, T7: Queryable, T8: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args, <T7 as Queryable>::Args, <T8 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable, T7: Queryable, T8: Queryable, T9: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args, <T7 as Queryable>::Args, <T8 as Queryable>::Args, <T9 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable, T7: Queryable, T8: Queryable, T9: Queryable, T10: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args, <T7 as Queryable>::Args, <T8 as Queryable>::Args, <T9 as Queryable>::Args, <T10 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T0: Queryable, T1: Queryable, T2: Queryable, T3: Queryable, T4: Queryable, T5: Queryable, T6: Queryable, T7: Queryable, T8: Queryable, T9: Queryable, T10: Queryable, T11: Queryable> Queryable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

type Args = (<T0 as Queryable>::Args, <T1 as Queryable>::Args, <T2 as Queryable>::Args, <T3 as Queryable>::Args, <T4 as Queryable>::Args, <T5 as Queryable>::Args, <T6 as Queryable>::Args, <T7 as Queryable>::Args, <T8 as Queryable>::Args, <T9 as Queryable>::Args, <T10 as Queryable>::Args, <T11 as Queryable>::Args)

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<Self::Args, DescriptorMismatch>

Source§

impl<T: Queryable> Queryable for Option<T>

Source§

type Args = <T as Queryable>::Args

Source§

fn decode( decoder: &Decoder, args: &Self::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn decode_optional( decoder: &Decoder, args: &Self::Args, buf: Option<&[u8]>, ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<T::Args, DescriptorMismatch>

Source§

impl<T: Queryable> Queryable for Vec<T>

Source§

type Args = <T as Queryable>::Args

Source§

fn decode( decoder: &Decoder, args: &T::Args, buf: &[u8], ) -> Result<Self, DecodeError>

Source§

fn decode_optional( decoder: &Decoder, args: &T::Args, buf: Option<&[u8]>, ) -> Result<Self, DecodeError>

Source§

fn check_descriptor( ctx: &DescriptorContext<'_>, type_pos: TypePos, ) -> Result<T::Args, DescriptorMismatch>

Implementors§

Source§

impl Queryable for Vector

Source§

impl<T: DecodeScalar> Queryable for T