ArgumentsMetadataDecoder

Struct ArgumentsMetadataDecoder 

Source
pub struct ArgumentsMetadataDecoder<'a, 'metadata> { /* private fields */ }

Implementations§

Source§

impl<'metadata> ArgumentsMetadataDecoder<'_, 'metadata>

Source

pub fn without_auto_drain(self) -> ManuallyDrop<Self>

Get a wrapped value that does not automatically drain the metadata on drop.

The default behavior is to automatically drain the metadata on drop such that contract/trait or method metadata decoding progresses successfully, even when the caller doesn’t care about arguments. This, however, generates more code and causes difficulties for LLVM when it tries to optimize the code and especially when trying to prove the lack of panics. Usually this method is not needed, but if you are having difficulties with no-panic and either decoding a single method or drain arguments explicitly, you can use this helper method to work around compiler limitations.

Source

pub fn remaining_metadata_bytes(&self) -> usize

The number of bytes left in the metadata that were not processed yet

Source

pub fn decode_next<'a>( &'a mut self, ) -> Option<Result<ArgumentMetadataItem<'metadata>, MetadataDecodingError<'metadata>>>

Trait Implementations§

Source§

impl<'a, 'metadata> Debug for ArgumentsMetadataDecoder<'a, 'metadata>

Source§

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

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

impl<'a, 'metadata> Drop for ArgumentsMetadataDecoder<'a, 'metadata>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, 'metadata> Freeze for ArgumentsMetadataDecoder<'a, 'metadata>

§

impl<'a, 'metadata> RefUnwindSafe for ArgumentsMetadataDecoder<'a, 'metadata>

§

impl<'a, 'metadata> Send for ArgumentsMetadataDecoder<'a, 'metadata>

§

impl<'a, 'metadata> Sync for ArgumentsMetadataDecoder<'a, 'metadata>

§

impl<'a, 'metadata> Unpin for ArgumentsMetadataDecoder<'a, 'metadata>

§

impl<'a, 'metadata> !UnwindSafe for ArgumentsMetadataDecoder<'a, 'metadata>

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.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.