pub struct Variable(pub usize);Expand description
Combinator for parsing and serializing a fixed number of bytes (dynamically known).
Tuple Fields§
§0: usizeImplementations§
Source§impl Variable
impl Variable
Sourcepub open spec fn spec_and_then<Next: SpecCombinator>(
self,
next: Next,
) -> AndThen<Variable, Next>
pub open spec fn spec_and_then<Next: SpecCombinator>( self, next: Next, ) -> AndThen<Variable, Next>
{ AndThen(self, next) }Spec version of Self::and_then
Sourcepub exec fn and_then<'x, I, O, Next: Combinator<'x, I, O>>(
self,
next: Next,
) -> o : AndThen<Variable, Next>where
I: VestPublicInput,
O: VestPublicOutput<I>,
Next::V: SecureSpecCombinator<Type = <Next::Type as View>::V>,
pub exec fn and_then<'x, I, O, Next: Combinator<'x, I, O>>(
self,
next: Next,
) -> o : AndThen<Variable, Next>where
I: VestPublicInput,
O: VestPublicOutput<I>,
Next::V: SecureSpecCombinator<Type = <Next::Type as View>::V>,
ensures
o@ == self@.spec_and_then(next@),Chains this combinator with another combinator.
Trait Implementations§
Source§impl<'x, I, O> Combinator<'x, I, O> for Variablewhere
I: VestInput + 'x,
O: VestOutput<I>,
impl<'x, I, O> Combinator<'x, I, O> for Variablewhere
I: VestInput + 'x,
O: VestOutput<I>,
Source§exec fn serialize(
&self,
v: Self::SType,
data: &mut O,
pos: usize,
) -> res : Result<usize, SerializeError>
exec fn serialize( &self, v: Self::SType, data: &mut O, pos: usize, ) -> res : Result<usize, SerializeError>
Source§type SType = &'x I
type SType = &'x I
The input type of serialization, often a reference to
Self::Type.
For “structural” formats though (e.g., crate::regular::sequence::Pair and crate::regular::variant::Choice),
this is the tuple/sum of the corresponding Combinator::SType types.Source§fn ex_requires(&self) -> bool
fn ex_requires(&self) -> bool
Source§impl SecureSpecCombinator for Variable
impl SecureSpecCombinator for Variable
Source§open spec fn is_prefix_secure() -> bool
open spec fn is_prefix_secure() -> bool
{ true }Source§open spec fn is_productive(&self) -> bool
open spec fn is_productive(&self) -> bool
{ self.0 > 0 }Source§proof fn lemma_prefix_secure(&self, s1: Seq<u8>, s2: Seq<u8>)
proof fn lemma_prefix_secure(&self, s1: Seq<u8>, s2: Seq<u8>)
Source§proof fn theorem_serialize_parse_roundtrip(&self, v: Self::Type)
proof fn theorem_serialize_parse_roundtrip(&self, v: Self::Type)
Source§proof fn theorem_parse_serialize_roundtrip(&self, s: Seq<u8>)
proof fn theorem_parse_serialize_roundtrip(&self, s: Seq<u8>)
Source§proof fn lemma_parse_length(&self, s: Seq<u8>)
proof fn lemma_parse_length(&self, s: Seq<u8>)
Source§proof fn lemma_parse_productive(&self, s: Seq<u8>)
proof fn lemma_parse_productive(&self, s: Seq<u8>)
Source§fn corollary_parse_surjective(&self, v: Self::Type)
fn corollary_parse_surjective(&self, v: Self::Type)
Source§fn corollary_serialize_injective_contraposition(
&self,
v1: Self::Type,
v2: Self::Type,
)
fn corollary_serialize_injective_contraposition( &self, v1: Self::Type, v2: Self::Type, )
Source§fn lemma_serialize_productive(&self, v: Self::Type)
fn lemma_serialize_productive(&self, v: Self::Type)
Source§impl SpecCombinator for Variable
impl SpecCombinator for Variable
Auto Trait Implementations§
impl Freeze for Variable
impl RefUnwindSafe for Variable
impl Send for Variable
impl Sync for Variable
impl Unpin for Variable
impl UnwindSafe for Variable
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
fn obeys_from_spec() -> bool
fn from_spec(v: T) -> VERUS_SPEC__A
§impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> T
§impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> U
Source§impl<T, U> SpecTryInto<U> for Twhere
U: SpecTryFrom<T>,
impl<T, U> SpecTryInto<U> for Twhere
U: SpecTryFrom<T>,
Source§open spec fn spec_try_into(self) -> Result<U, <U as SpecTryFrom<T>>::Error>
open spec fn spec_try_into(self) -> Result<U, <U as SpecTryFrom<T>>::Error>
{ U::spec_try_from(self) }Source§type Error = <U as SpecTryFrom<T>>::Error
type Error = <U as SpecTryFrom<T>>::Error
The type returned in the event of a conversion error.