OptionVarULE

Struct OptionVarULE 

Source
#[repr(C, packed(1))]
pub struct OptionVarULE<U: VarULE + ?Sized>(/* private fields */);
Expand description

A type allowing one to represent Option<U> for VarULE U types.

use zerovec::ule::OptionVarULE;
use zerovec::VarZeroVec;

let mut zv: VarZeroVec<OptionVarULE<str>> = VarZeroVec::new();

zv.make_mut().push(&None::<&str>);
zv.make_mut().push(&Some("hello"));
zv.make_mut().push(&Some("world"));
zv.make_mut().push(&None::<&str>);

assert_eq!(zv.get(0).unwrap().as_ref(), None);
assert_eq!(zv.get(1).unwrap().as_ref(), Some("hello"));

Implementations§

Source§

impl<U: VarULE + ?Sized> OptionVarULE<U>

Source

pub fn as_ref(&self) -> Option<&U>

Obtain this as an Option<&U>

Trait Implementations§

Source§

impl<U: VarULE + ?Sized + Debug> Debug for OptionVarULE<U>

Source§

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

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

impl<T, U> EncodeAsVarULE<OptionVarULE<U>> for Option<T>
where T: EncodeAsVarULE<U>, U: VarULE + ?Sized,

Source§

fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R

Calls cb with a piecewise list of byte slices that when concatenated produce the memory pattern of the corresponding instance of T. Read more
Source§

fn encode_var_ule_len(&self) -> usize

Return the length, in bytes, of the corresponding VarULE type
Source§

fn encode_var_ule_write(&self, dst: &mut [u8])

Write the corresponding VarULE type to the dst buffer. dst should be the size of Self::encode_var_ule_len()
Source§

impl<U: VarULE + ?Sized + Ord> Ord for OptionVarULE<U>

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
Source§

impl<U: VarULE + ?Sized + PartialEq> PartialEq for OptionVarULE<U>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<U: VarULE + ?Sized + PartialOrd> PartialOrd for OptionVarULE<U>

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<U: VarULE + ?Sized> VarULE for OptionVarULE<U>

Source§

fn validate_bytes(slice: &[u8]) -> Result<(), UleError>

Validates a byte slice, &[u8]. Read more
Source§

unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self

Takes a byte slice, &[u8], and return it as &Self with the same lifetime, assuming that this byte slice has previously been run through Self::parse_bytes() with success. Read more
Source§

fn parse_bytes(bytes: &[u8]) -> Result<&Self, UleError>

Parses a byte slice, &[u8], and return it as &Self with the same lifetime. Read more
Source§

fn as_bytes(&self) -> &[u8]

Given &Self, returns a &[u8] with the same lifetime. Read more
Source§

fn to_boxed(&self) -> Box<Self>

Allocate on the heap as a Box<T>
Source§

impl<'a, T> ZeroMapKV<'a> for OptionVarULE<T>
where T: VarULE + ?Sized,

Source§

type Container = VarZeroVec<'a, OptionVarULE<T>>

The container that can be used with this type: ZeroVec or VarZeroVec.
Source§

type Slice = VarZeroSlice<OptionVarULE<T>>

Source§

type GetType = OptionVarULE<T>

The type produced by Container::get() Read more
Source§

type OwnedType = Box<OptionVarULE<T>>

The type produced by Container::replace() and Container::remove(), also used during deserialization. If Self is human readable serialized, deserializing to Self::OwnedType should produce the same value once passed through Self::owned_as_self() Read more
Source§

impl<U: VarULE + ?Sized + Eq> Eq for OptionVarULE<U>

Auto Trait Implementations§

§

impl<U> Freeze for OptionVarULE<U>
where U: ?Sized,

§

impl<U> RefUnwindSafe for OptionVarULE<U>
where U: RefUnwindSafe + ?Sized,

§

impl<U> Send for OptionVarULE<U>
where U: Send + ?Sized,

§

impl<U> !Sized for OptionVarULE<U>

§

impl<U> Sync for OptionVarULE<U>
where U: Sync + ?Sized,

§

impl<U> Unpin for OptionVarULE<U>
where U: Unpin + ?Sized,

§

impl<U> UnwindSafe for OptionVarULE<U>
where U: UnwindSafe + ?Sized,

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> EncodeAsVarULE<T> for T
where T: VarULE + ?Sized,

Source§

fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R

Calls cb with a piecewise list of byte slices that when concatenated produce the memory pattern of the corresponding instance of T. Read more
Source§

fn encode_var_ule_len(&self) -> usize

Return the length, in bytes, of the corresponding VarULE type
Source§

fn encode_var_ule_write(&self, dst: &mut [u8])

Write the corresponding VarULE type to the dst buffer. dst should be the size of Self::encode_var_ule_len()

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: (unsized)