Struct untrusted::Input

source ·
pub struct Input<'a> { /* private fields */ }
Expand description

A wrapper around &'a [u8] that helps in writing panic-free code.

No methods of Input will ever panic.

Intentionally avoids implementing PartialEq and Eq to avoid implicit non-constant-time comparisons.

Implementations§

source§

impl<'a> Input<'a>

source

pub const fn from(bytes: &'a [u8]) -> Self

Construct a new Input for the given input bytes.

source

pub fn is_empty(&self) -> bool

Returns true if the input is empty and false otherwise.

source

pub fn len(&self) -> usize

Returns the length of the Input.

source

pub fn read_all<F, R, E>(&self, incomplete_read: E, read: F) -> Result<R, E>
where F: FnOnce(&mut Reader<'a>) -> Result<R, E>,

Calls read with the given input as a Reader, ensuring that read consumed the entire input. If read does not consume the entire input, incomplete_read is returned.

source

pub fn as_slice_less_safe(&self) -> &'a [u8]

Access the input as a slice so it can be processed by functions that are not written using the Input/Reader framework.

Trait Implementations§

source§

impl<'a> Clone for Input<'a>

source§

fn clone(&self) -> Input<'a>

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 Debug for Input<'_>

The value is intentionally omitted from the output to avoid leaking secrets.

source§

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

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

impl<'a> From<&'a [u8]> for Input<'a>

source§

fn from(value: &'a [u8]) -> Self

Converts to this type from the input type.
source§

impl<'a> Copy for Input<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Input<'a>

§

impl<'a> RefUnwindSafe for Input<'a>

§

impl<'a> Send for Input<'a>

§

impl<'a> Sync for Input<'a>

§

impl<'a> Unpin for Input<'a>

§

impl<'a> UnwindSafe for Input<'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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 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.

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 16 bytes