Skip to main content

GoodSerializer

Trait GoodSerializer 

Source
pub trait GoodSerializer: SpecByteLen + SpecSerializer<SVal = Self::T> {
    // Required method
    broadcast proof fn lemma_serialize_len(&self, v: Self::SVal);

    // Provided method
    open spec fn serialize_inv(&self) -> bool { ... }
}
Expand description

A well-behaved serializer.

Required Methods§

Source

broadcast proof fn lemma_serialize_len(&self, v: Self::SVal)

requires
self.serialize_inv(),
ensures
self.spec_serialize(v).len() == self.byte_len(v),

serialized byte sequence has the expected length.

Provided Methods§

Source

open spec fn serialize_inv(&self) -> bool

{ true }

Optional invariant for serializer-length proofs.

Implementations on Foreign Types§

Source§

impl<S: GoodSerializer> GoodSerializer for &S

Source§

open spec fn serialize_inv(&self) -> bool

{ (*self).serialize_inv() }
Source§

proof fn lemma_serialize_len(&self, v: Self::SVal)

Implementors§

Source§

impl GoodSerializer for BerEndFmt

Source§

impl GoodSerializer for Integer8Fmt

Source§

impl GoodSerializer for Integer16Fmt

Source§

impl GoodSerializer for BerLengthFmt

Source§

impl GoodSerializer for BmpStringFmt

Source§

impl GoodSerializer for EnumeratedFmt

Source§

impl GoodSerializer for Ia5StringFmt

Source§

impl GoodSerializer for IntegerFmt

Source§

impl GoodSerializer for ObjectIdentifierFmt

Source§

impl GoodSerializer for PrintableStringFmt

Source§

impl GoodSerializer for TagFmt

Source§

impl GoodSerializer for TeletexStringFmt

Source§

impl GoodSerializer for UniversalStringFmt

Source§

impl GoodSerializer for Utf8StringFmt

Source§

impl GoodSerializer for CborInitialFmt

Source§

impl GoodSerializer for Empty

Source§

impl GoodSerializer for Void

Source§

impl GoodSerializer for I8

Source§

impl GoodSerializer for I16Be

Source§

impl GoodSerializer for I16Le

Source§

impl GoodSerializer for I32Be

Source§

impl GoodSerializer for I32Le

Source§

impl GoodSerializer for I64Be

Source§

impl GoodSerializer for I64Le

Source§

impl GoodSerializer for Eof

Source§

impl GoodSerializer for Tail

Source§

impl GoodSerializer for U8

Source§

impl GoodSerializer for U16Be

Source§

impl GoodSerializer for U16Le

Source§

impl GoodSerializer for U24Be

Source§

impl GoodSerializer for U24Le

Source§

impl GoodSerializer for U32Be

Source§

impl GoodSerializer for U32Le

Source§

impl GoodSerializer for U64Be

Source§

impl GoodSerializer for U64Le

Source§

impl<A, B> GoodSerializer for PairRev<A, B>

Source§

impl<A, B> GoodSerializer for Bind<A, B>
where A: GoodSerializer, B: SpecMap<Input = A::SVal>, B::Output: GoodSerializer,

Source§

impl<A, B> GoodSerializer for Pair<A, B>

Source§

impl<A, B, C> GoodSerializer for Permute3<A, B, C>

Source§

impl<A, B, C, D> GoodSerializer for Permute4<A, B, C, D>

Source§

impl<A, B, C, D, E> GoodSerializer for Permute5<A, B, C, D, E>

Source§

impl<A, B, const CHECK: bool> GoodSerializer for Preceded<A, A::SVal, B, CHECK>

Source§

impl<A, B, const CHECK: bool> GoodSerializer for Terminated<A, B, B::SVal, CHECK>

Source§

impl<A, Pred> GoodSerializer for Refined<A, Pred>
where A: GoodSerializer, Pred: SpecPred<A::SVal>,

Source§

impl<A, Then> GoodSerializer for AndThen<A, Then>

Source§

impl<A: GoodSerializer> GoodSerializer for Opt<A>

Source§

impl<A: GoodSerializer> GoodSerializer for Star<A>

Source§

impl<A: GoodSerializer, B: GoodSerializer> GoodSerializer for Sum<A, B>

Source§

impl<A: GoodSerializer, B: GoodSerializer> GoodSerializer for Choice<A, B>

Source§

impl<A: GoodSerializer, B: GoodSerializer> GoodSerializer for Optional<A, B>

Source§

impl<A: GoodSerializer, B: GoodSerializer> GoodSerializer for Repeat<A, B>

Source§

impl<C: GoodSerializer> GoodSerializer for SetOfFmt<C>

Source§

impl<C: GoodSerializer> GoodSerializer for OptionalEnd<C>

Source§

impl<C: GoodSerializer> GoodSerializer for RepeatTillEnd<C>

Source§

impl<C: GoodSerializer, N: AsLen> GoodSerializer for RepeatN<C, N>

Source§

impl<C: SpecCombinator + GoodSerializer> GoodSerializer for BerSequenceFmt<C>

Source§

impl<C: SpecCombinator + GoodSerializer> GoodSerializer for BerSequenceOfFmt<C>

Source§

impl<C: SpecCombinator, const LIMIT: usize> GoodSerializer for BerCharStringFmt<C, LIMIT>

Source§

impl<Content: SpecCombinator + GoodSerializer, const DER: bool> GoodSerializer for ASN1Fmt<Content, DER>

Source§

impl<F> GoodSerializer for ImplicitlyTaggedFmt<F>

Source§

impl<Field, Rest, const DER: bool> GoodSerializer for DefaultedFmt<Field, Field::SVal, Rest, DER>
where Field: GoodSerializer, Rest: GoodSerializer,

Source§

impl<Head, Tail> GoodSerializer for Implicit<Head, Tail>
where Head: GoodSerializer, Tail: DepCombinator<Key = Head::SVal>, Tail::Body: GoodSerializer<T = Tail::Val>,

Source§

impl<Inner> GoodSerializer for Const<Inner, Inner::SVal>
where Inner: GoodSerializer,

Source§

impl<Inner, M> GoodSerializer for Mapped<Inner, M>
where Inner: GoodSerializer, M: SpecMapper<In = Inner::SVal>,

Source§

impl<Inner, M> GoodSerializer for TryMap<Inner, M>
where Inner: GoodSerializer, M: SpecMapper<In = Inner::SVal>,

Source§

impl<Inner, M, MRev> GoodSerializer for Mapped<Inner, BiMap<M, MRev>>
where Inner: GoodSerializer, M: SpecMap<Input = Inner::SVal>, MRev: SpecMap<Input = M::Output, Output = M::Input>,

Source§

impl<Inner: GoodSerializer> GoodSerializer for Cond<Inner>

Source§

impl<Inner: GoodSerializer> GoodSerializer for Named<Inner>

Source§

impl<Inner: GoodSerializer> GoodSerializer for Ref<Inner>

Source§

impl<Inner: GoodSerializer, Len: AsLen> GoodSerializer for ExactLen<Inner, Len>

Source§

impl<Len: AsLen> GoodSerializer for Varied<Len>

Source§

impl<Of, Tg> GoodSerializer for SuffixTagged<Of, Tg, Tg::T>

Source§

impl<Output, T, Spec, Exec> GoodSerializer for FnSerializer<Output, T, Spec, Exec>
where Output: OutputBuf, T: DeepView + ?Sized, Spec: GoodSerializer<T = T::V> + Consistency<Val = T::V>, Exec: Fn(&T, &mut Output),

Source§

impl<P1, P2> GoodSerializer for Permute2<P1, P2>

Source§

impl<Repr, Tuple, Nominal> GoodSerializer for Bits<Repr, Tuple, Nominal>
where Repr: GoodSerializer,

Source§

impl<SpecS, Blen> GoodSerializer for SerializerSpecs<SpecS, Blen>
where Blen: SpecByteLen, SpecS: SpecSerializer<SVal = Blen::T>,

Source§

impl<T> GoodSerializer for BundledSpecs<T>

Source§

impl<T, C: GoodSerializer, const N: usize> GoodSerializer for Dispatch<T, C, N>

Source§

impl<Tg, Of> GoodSerializer for PrefixTagged<Tg, Tg::T, Of>

Source§

impl<const DER: bool> GoodSerializer for AnyFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for BitStringFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for BoolFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for GeneralizedTimeFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for LengthFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for NatLengthFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for RealFmt<DER>

Source§

impl<const DER: bool> GoodSerializer for UtcTimeFmt<DER>

Source§

impl<const DET: bool> GoodSerializer for CborHeadFmt<DET>

Source§

impl<const DET: bool, const LIMIT: usize> GoodSerializer for CborFmt<DET, LIMIT>

Source§

impl<const LIMIT: usize> GoodSerializer for BerAnyFmt<LIMIT>

Source§

impl<const LIMIT: usize> GoodSerializer for BerBitStringFmt<LIMIT>

Source§

impl<const LIMIT: usize> GoodSerializer for BerOctetStringFmt<LIMIT>

Source§

impl<const LIMIT: usize, Body, Param> GoodSerializer for FixWith<LIMIT, Body, Param>
where Body: GoodSerializerRecBody, Body::Body: GoodSerializer, Param: DeepView<V = Body::Param>,

Source§

impl<const MINIMAL: bool> GoodSerializer for Base128Fmt<MINIMAL>

Source§

impl<const MINIMAL: bool> GoodSerializer for VarInt<MINIMAL>

Source§

impl<const MINIMAL: bool, const N: usize> GoodSerializer for ULeb128<MINIMAL, N>

Source§

impl<const N: usize> GoodSerializer for Fixed<N>

Source§

impl<const N: usize> GoodSerializer for Const<Fixed<N>, [u8; N]>

Source§

impl<const N: usize, C: GoodSerializer> GoodSerializer for Array<N, C>

Source§

impl<const NONDETERMINISTIC: bool, A, B> GoodSerializer for Alt<A, B, NONDETERMINISTIC>
where A: GoodSerializer + Consistency<Val = A::SVal>, B: GoodSerializer<T = A::T> + Consistency<Val = B::SVal>,