pub struct MirrorRegion<T>(/* private fields */);
Expand description

A region for types where the read item type is equal to the index type.

This region is useful where the type is not larger than roughly two usizes (or 1.5x with some optimizations), or looking up the value is too costly. For larger copy types, the memory required to store the copy type and an index is only marginally bigger, with the benefit that the index remains compact.

§Examples

For MirrorRegions, we can index with a copy type:

let r = <MirrorRegion<u8>>::default();
let output: u8 = r.index(42);
assert_eq!(output, 42);

Trait Implementations§

source§

impl<T: Clone> Clone for MirrorRegion<T>

source§

fn clone(&self) -> MirrorRegion<T>

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<'a, T: Index> CopyOnto<MirrorRegion<T>> for &'a T

source§

fn copy_onto(self, _target: &mut MirrorRegion<T>) -> T

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

impl<T: Index> CopyOnto<MirrorRegion<T>> for T

source§

fn copy_onto(self, _target: &mut MirrorRegion<Self>) -> T

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

impl<T> Debug for MirrorRegion<T>

source§

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

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

impl<T> Default for MirrorRegion<T>

source§

fn default() -> Self

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

impl<'de, T> Deserialize<'de> for MirrorRegion<T>

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<T: Ord> Ord for MirrorRegion<T>

source§

fn cmp(&self, other: &MirrorRegion<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<T: PartialEq> PartialEq for MirrorRegion<T>

source§

fn eq(&self, other: &MirrorRegion<T>) -> 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<T: PartialOrd> PartialOrd for MirrorRegion<T>

source§

fn partial_cmp(&self, other: &MirrorRegion<T>) -> 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

This method 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

This method 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

This method 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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T: Index + CopyOnto<Self>> Region for MirrorRegion<T>

§

type ReadItem<'a> = T where T: 'a

The type of the data that one gets out of the container.
§

type Index = T

The type to index into the container. Should be treated as an opaque type, even if known.
source§

fn merge_regions<'a>(_regions: impl Iterator<Item = &'a Self> + Clone) -> Self
where Self: 'a,

Construct a region that can absorb the contents of regions in the future.
source§

fn index(&self, index: Self::Index) -> Self::ReadItem<'_>

Index into the container. The index must be obtained by pushing data into the container.
source§

fn reserve_regions<'a, I>(&mut self, _regions: I)
where Self: 'a, I: Iterator<Item = &'a Self> + Clone,

Ensure that the region can absorb the items of regions without reallocation
source§

fn clear(&mut self)

Remove all elements from this region, but retain allocations if possible.
source§

fn heap_size<F: FnMut(usize, usize)>(&self, _callback: F)

Heap size, size - capacity
source§

impl<'a, T: Index> ReserveItems<MirrorRegion<T>> for &'a T

source§

fn reserve_items<I>(_target: &mut MirrorRegion<T>, _items: I)
where I: Iterator<Item = Self> + Clone,

Ensure that the region can absorb items without reallocation.
source§

impl<T: Index> ReserveItems<MirrorRegion<T>> for T

source§

fn reserve_items<I>(_target: &mut MirrorRegion<T>, _items: I)
where I: Iterator<Item = Self> + Clone,

Ensure that the region can absorb items without reallocation.
source§

impl<T> Serialize for MirrorRegion<T>

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<T: Eq> Eq for MirrorRegion<T>

source§

impl<T> StructuralPartialEq for MirrorRegion<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for MirrorRegion<T>
where T: RefUnwindSafe,

§

impl<T> Send for MirrorRegion<T>
where T: Send,

§

impl<T> Sync for MirrorRegion<T>
where T: Sync,

§

impl<T> Unpin for MirrorRegion<T>
where T: Unpin,

§

impl<T> UnwindSafe for MirrorRegion<T>
where T: UnwindSafe,

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<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
where R: Region<Index = (usize, usize)>, O: OffsetContainer<usize>, T: CopyOnto<R>,

source§

fn copy_onto( self, target: &mut ConsecutiveOffsetPairs<R, O> ) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index

Copy self into the target container, returning an index that allows to look up the corresponding read item.
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> ToOwned for T
where 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 T
where 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 T
where 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.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,