Skip to main content

OutputSlice

Struct OutputSlice 

Source
pub struct OutputSlice<'a> {
    pub obuf: &'a mut [u8],
    pub pos: usize,
}
Expand description

A non-allocating append sink backed by a caller-provided slice.

Its logical view is the prefix written so far (given by pos).

Fields§

§obuf: &'a mut [u8]§pos: usize

Implementations§

Source§

impl<'a> OutputSlice<'a>

Source

pub open spec fn final_destination(&self) -> Seq<u8>

{ final(self.obuf)@ }

The prophetic final contents of the caller-provided backing slice.

Source

pub exec fn new(obuf: &'a mut [u8]) -> output : Self

ensures
output@ == Seq::empty(),
output.fits(old(obuf)@.len()),
forall |len: nat| #[trigger] output.fits(len) == (len <= old(obuf)@.len()),
output.final_destination() == final(obuf)@,

Creates an empty logical output over obuf without allocating.

Trait Implementations§

Source§

impl OutputBuf for OutputSlice<'_>

Source§

open spec fn fits(&self, len: nat) -> bool

{ self.pos as nat + len <= self.obuf@.len() }
Source§

proof fn lemma_fits_mono(&self, shorter: nat, longer: nat)

Source§

open spec fn same_destination(&self, other: &Self) -> bool

{ self.final_destination() == other.final_destination() }
Source§

proof fn lemma_same_destination_reflexive(&self)

Source§

proof fn lemma_same_destination_transitive(&self, _middle: &Self, _last: &Self)

Source§

exec fn write_byte(&mut self, byte: u8)

Source§

exec fn write_bytes(&mut self, bytes: &[u8])

Source§

impl View for OutputSlice<'_>

Source§

open spec fn view(&self) -> Self::V

{ self.obuf@.take(self.pos as int) }
Source§

type V = Seq<u8>

Auto Trait Implementations§

§

impl<'a> Freeze for OutputSlice<'a>

§

impl<'a> RefUnwindSafe for OutputSlice<'a>

§

impl<'a> Send for OutputSlice<'a>

§

impl<'a> Sync for OutputSlice<'a>

§

impl<'a> Unpin for OutputSlice<'a>

§

impl<'a> UnsafeUnpin for OutputSlice<'a>

§

impl<'a> !UnwindSafe for OutputSlice<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: From<T>,

§

fn obeys_from_spec() -> bool

§

fn from_spec(v: T) -> VERUS_SPEC__A

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: Into<T>,

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> T

§

impl<T, U> IntoSpecImpl<U> for T
where U: From<T>,

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, VERUS_SPEC__A> TryFromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryFrom<T>,

§

fn obeys_try_from_spec() -> bool

§

fn try_from_spec( v: T, ) -> Result<VERUS_SPEC__A, <VERUS_SPEC__A as TryFrom<T>>::Error>

Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T, VERUS_SPEC__A> TryIntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryInto<T>,

§

fn obeys_try_into_spec() -> bool

§

fn try_into_spec(self) -> Result<T, <VERUS_SPEC__A as TryInto<T>>::Error>

§

impl<T, U> TryIntoSpecImpl<U> for T
where U: TryFrom<T>,

§

fn obeys_try_into_spec() -> bool

§

fn try_into_spec(self) -> Result<U, <U as TryFrom<T>>::Error>

§

impl<A> SpecEq<&A> for A
where A: ?Sized,

§

impl<A> SpecEq<&mut A> for A
where A: ?Sized,

§

impl<A> SpecEq<A> for A
where A: ?Sized,

§

impl<A> SpecEq<Ghost<A>> for A

§

impl<A> SpecEq<Tracked<A>> for A