Struct object::read::util::Bytes

source ·
pub struct Bytes<'data>(pub &'data [u8]);
Expand description

A newtype for byte slices.

It has these important features:

  • no methods that can panic, such as Index
  • convenience methods for Pod types
  • a useful Debug implementation

Tuple Fields§

§0: &'data [u8]

Implementations§

source§

impl<'data> Bytes<'data>

source

pub fn len(&self) -> usize

Return the length of the byte slice.

source

pub fn is_empty(&self) -> bool

Return true if the byte slice is empty.

source

pub fn skip(&mut self, offset: usize) -> Result<(), ()>

Skip over the given number of bytes at the start of the byte slice.

Modifies the byte slice to start after the bytes.

Returns an error if there are too few bytes.

source

pub fn read_bytes(&mut self, count: usize) -> Result<Bytes<'data>, ()>

Return a reference to the given number of bytes at the start of the byte slice.

Modifies the byte slice to start after the bytes.

Returns an error if there are too few bytes.

source

pub fn read_bytes_at( self, offset: usize, count: usize ) -> Result<Bytes<'data>, ()>

Return a reference to the given number of bytes at the given offset of the byte slice.

Returns an error if the offset is invalid or there are too few bytes.

source

pub fn read<T: Pod>(&mut self) -> Result<&'data T, ()>

Return a reference to a Pod struct at the start of the byte slice.

Modifies the byte slice to start after the bytes.

Returns an error if there are too few bytes or the slice is incorrectly aligned.

source

pub fn read_at<T: Pod>(self, offset: usize) -> Result<&'data T, ()>

Return a reference to a Pod struct at the given offset of the byte slice.

Returns an error if there are too few bytes or the offset is incorrectly aligned.

source

pub fn read_slice<T: Pod>(&mut self, count: usize) -> Result<&'data [T], ()>

Return a reference to a slice of Pod structs at the start of the byte slice.

Modifies the byte slice to start after the bytes.

Returns an error if there are too few bytes or the offset is incorrectly aligned.

source

pub fn read_slice_at<T: Pod>( self, offset: usize, count: usize ) -> Result<&'data [T], ()>

Return a reference to a slice of Pod structs at the given offset of the byte slice.

Returns an error if there are too few bytes or the offset is incorrectly aligned.

source

pub fn read_string(&mut self) -> Result<&'data [u8], ()>

Read a null terminated string.

Does not assume any encoding. Reads past the null byte, but doesn’t return it.

source

pub fn read_string_at(self, offset: usize) -> Result<&'data [u8], ()>

Read a null terminated string at an offset.

Does not assume any encoding. Does not return the null byte.

source

pub fn read_uleb128(&mut self) -> Result<u64, ()>

Read an unsigned LEB128 number.

source

pub fn read_sleb128(&mut self) -> Result<i64, ()>

Read a signed LEB128 number.

Trait Implementations§

source§

impl<'data> Clone for Bytes<'data>

source§

fn clone(&self) -> Bytes<'data>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'data> Debug for Bytes<'data>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'data> Default for Bytes<'data>

source§

fn default() -> Bytes<'data>

Returns the “default value” for a type. Read more
source§

impl<'data> PartialEq<Bytes<'data>> for Bytes<'data>

source§

fn eq(&self, other: &Bytes<'data>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'data> Copy for Bytes<'data>

source§

impl<'data> Eq for Bytes<'data>

source§

impl<'data> StructuralEq for Bytes<'data>

source§

impl<'data> StructuralPartialEq for Bytes<'data>

Auto Trait Implementations§

§

impl<'data> RefUnwindSafe for Bytes<'data>

§

impl<'data> Send for Bytes<'data>

§

impl<'data> Sync for Bytes<'data>

§

impl<'data> Unpin for Bytes<'data>

§

impl<'data> UnwindSafe for Bytes<'data>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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.
source§

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

§

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.