Slicer

Struct Slicer 

Source
pub struct Slicer<'de> { /* private fields */ }
Expand description

Takes a slice as input and divides it into smaller slices. This processes the slice from start to end by user-provided len sized chunks.

For example &[1, 2, 3, 4] --> &[1, 2] and &[3, 4].

Uses:

  • When you know the length to slice at runtime but not compile time.
  • When parsing formats within formats. For example, the DHCP format has an options field that contains TLV formatted options. See options/options.rs.

Implementations§

Source§

impl<'de> Slicer<'de>

Source

pub fn new(input: &'de [u8]) -> Self

Creates an instance of Slicer.

Source

pub fn slice(&mut self, len: usize) -> Option<&'de [u8]>

Returns the next len number of bytes and changes the current position the same amount.

Returns an Option instead of panicking. Use slice_unchecked if it is okay to panic.

Source

pub fn slice_unchecked(&mut self, len: usize) -> &'de [u8]

Returns the next len number of bytes and changes the current position the same amount.

Can panic if slicing past array length. Use slice for no panic.

Source

pub fn slice_remainder(&mut self) -> &'de [u8]

Returns the remaining bytes in the input and resets the current position to the start.

Source

pub fn reset(&mut self)

Slicer keeps track of how many bytes have been sliced (the position from start). This resets that internal state.

Auto Trait Implementations§

§

impl<'de> Freeze for Slicer<'de>

§

impl<'de> RefUnwindSafe for Slicer<'de>

§

impl<'de> Send for Slicer<'de>

§

impl<'de> Sync for Slicer<'de>

§

impl<'de> Unpin for Slicer<'de>

§

impl<'de> UnwindSafe for Slicer<'de>

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V