Skip to main content

SpecRecBody

Trait SpecRecBody 

Source
pub trait SpecRecBody {
    type Param;
    type T;
    type Body: SpecCombinator<T = Self::T>;

    // Required method
    spec fn spec_body(
        &self,
        param: Self::Param,
        rec: ParamRecSpecs<Self::Param, Self::T>,
    ) -> Self::Body;
}
Expand description

Defines one level of a recursive format for use with super::FixWith.

Required Associated Types§

Source

type Param

Source

type T

Source

type Body: SpecCombinator<T = Self::T>

Required Methods§

Source

spec fn spec_body( &self, param: Self::Param, rec: ParamRecSpecs<Self::Param, Self::T>, ) -> Self::Body

Define one recursive unfolding for param, where rec provides callbacks for all recursive positions in the body.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl SpecRecBody for BerAnyRecBody

Source§

type Param = ()

Source§

type T = Captured<AnySpec>

Source§

type Body = Capture<Mapped<Bind<TagFmt, FnSpec<(Tag,), Sum<Bind<BerLengthFmt, FnSpec<(BerLength,), Sum<ExactLen<Tail, usize>, Sum<Repeat<(FnSpec<(Captured<AnySpec>,), bool>, FnSpec<(Captured<AnySpec>,), nat>, FnSpec<(Seq<u8>,), Option<(int, Captured<AnySpec>)>>, FnSpec<(Captured<AnySpec>,), Seq<u8>>, FnSpec<(Captured<AnySpec>, Seq<u8>), Seq<u8>>), Pair<Const<TagFmt, Tag>, Const<U8, u8>>>, Void>>>>, Void>>>, (FnSpec<((Tag, Sum<(BerLength, Sum<Seq<u8>, Sum<(Seq<Captured<AnySpec>>, (Tag, u8)), ExecNever>>), ExecNever>),), AnySpec>, FnSpec<(AnySpec,), (Tag, Sum<(BerLength, Sum<Seq<u8>, Sum<(Seq<Captured<AnySpec>>, (Tag, u8)), ExecNever>>), ExecNever>)>)>>

Source§

impl SpecRecBody for BerBitStringRecBody

Source§

impl SpecRecBody for BerOctetStringRecBody

Source§

impl<const DET: bool> SpecRecBody for CborRecBody<DET>

Source§

type Param = ()

Source§

type T = CborValueSpec

Source§

type Body = CborBodyFmt<DET>

Source§

impl<const MINIMAL: bool> SpecRecBody for ULeb128RecBody<MINIMAL>