Skip to main content

Equivalent

Trait Equivalent 

Source
pub trait Equivalent<T>: Sized {
    // Required methods
    fn into_equivalent(self) -> T;
    fn from_equivalent(object: T) -> Self;
}
Expand description

Implemented if both types have the exact same layout. This implies having the same MaybeHasNiche::MnArray.

This is represented as two-way conversion for two reasons:

  • to highlight that the conversion is actual equivalence
  • to increase flexibility (mostly to go around the orphan rule)

Required Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Equivalent<bool> for Option<()>

Source§

impl Equivalent<i8> for Option<NonZero<i8>>

Source§

fn into_equivalent(self) -> i8

Source§

fn from_equivalent(object: i8) -> Self

Source§

impl Equivalent<i16> for Option<NonZero<i16>>

Source§

impl Equivalent<i32> for Option<NonZero<i32>>

Source§

impl Equivalent<i64> for Option<NonZero<i64>>

Source§

impl Equivalent<i128> for Option<NonZero<i128>>

Source§

impl Equivalent<u8> for Option<NonZero<u8>>

Source§

fn into_equivalent(self) -> u8

Source§

fn from_equivalent(object: u8) -> Self

Source§

impl Equivalent<u16> for Option<NonZero<u16>>

Source§

impl Equivalent<u32> for Option<NonZero<u32>>

Source§

impl Equivalent<u64> for Option<NonZero<u64>>

Source§

impl Equivalent<u128> for Option<NonZero<u128>>

Source§

impl Equivalent<Be<i8>> for Option<Be<NonZero<i8>>>

Source§

fn into_equivalent(self) -> Be<i8>

Source§

fn from_equivalent(object: Be<i8>) -> Self

Source§

impl Equivalent<Be<i16>> for Option<Be<NonZero<i16>>>

Source§

fn into_equivalent(self) -> Be<i16>

Source§

fn from_equivalent(object: Be<i16>) -> Self

Source§

impl Equivalent<Be<i32>> for Option<Be<NonZero<i32>>>

Source§

fn into_equivalent(self) -> Be<i32>

Source§

fn from_equivalent(object: Be<i32>) -> Self

Source§

impl Equivalent<Be<i64>> for Option<Be<NonZero<i64>>>

Source§

fn into_equivalent(self) -> Be<i64>

Source§

fn from_equivalent(object: Be<i64>) -> Self

Source§

impl Equivalent<Be<i128>> for Option<Be<NonZero<i128>>>

Source§

impl Equivalent<Be<u8>> for Option<Be<NonZero<u8>>>

Source§

fn into_equivalent(self) -> Be<u8>

Source§

fn from_equivalent(object: Be<u8>) -> Self

Source§

impl Equivalent<Be<u16>> for Option<Be<NonZero<u16>>>

Source§

fn into_equivalent(self) -> Be<u16>

Source§

fn from_equivalent(object: Be<u16>) -> Self

Source§

impl Equivalent<Be<u32>> for Option<Be<NonZero<u32>>>

Source§

fn into_equivalent(self) -> Be<u32>

Source§

fn from_equivalent(object: Be<u32>) -> Self

Source§

impl Equivalent<Be<u64>> for Option<Be<NonZero<u64>>>

Source§

fn into_equivalent(self) -> Be<u64>

Source§

fn from_equivalent(object: Be<u64>) -> Self

Source§

impl Equivalent<Be<u128>> for Option<Be<NonZero<u128>>>

Source§

impl Equivalent<Le<i8>> for Option<Le<NonZero<i8>>>

Source§

fn into_equivalent(self) -> Le<i8>

Source§

fn from_equivalent(object: Le<i8>) -> Self

Source§

impl Equivalent<Le<i16>> for Option<Le<NonZero<i16>>>

Source§

fn into_equivalent(self) -> Le<i16>

Source§

fn from_equivalent(object: Le<i16>) -> Self

Source§

impl Equivalent<Le<i32>> for Option<Le<NonZero<i32>>>

Source§

fn into_equivalent(self) -> Le<i32>

Source§

fn from_equivalent(object: Le<i32>) -> Self

Source§

impl Equivalent<Le<i64>> for Option<Le<NonZero<i64>>>

Source§

fn into_equivalent(self) -> Le<i64>

Source§

fn from_equivalent(object: Le<i64>) -> Self

Source§

impl Equivalent<Le<i128>> for Option<Le<NonZero<i128>>>

Source§

impl Equivalent<Le<u8>> for Option<Le<NonZero<u8>>>

Source§

fn into_equivalent(self) -> Le<u8>

Source§

fn from_equivalent(object: Le<u8>) -> Self

Source§

impl Equivalent<Le<u16>> for Option<Le<NonZero<u16>>>

Source§

fn into_equivalent(self) -> Le<u16>

Source§

fn from_equivalent(object: Le<u16>) -> Self

Source§

impl Equivalent<Le<u32>> for Option<Le<NonZero<u32>>>

Source§

fn into_equivalent(self) -> Le<u32>

Source§

fn from_equivalent(object: Le<u32>) -> Self

Source§

impl Equivalent<Le<u64>> for Option<Le<NonZero<u64>>>

Source§

fn into_equivalent(self) -> Le<u64>

Source§

fn from_equivalent(object: Le<u64>) -> Self

Source§

impl Equivalent<Le<u128>> for Option<Le<NonZero<u128>>>

Source§

impl<'a, B: 'a + ToOwned + ?Sized> Equivalent<<B as ToOwned>::Owned> for Cow<'a, B>

Source§

fn into_equivalent(self) -> B::Owned

Source§

fn from_equivalent(object: B::Owned) -> Self

Source§

impl<K: Ord> Equivalent<BTreeMap<K, ()>> for BTreeSet<K>

Source§

fn into_equivalent(self) -> BTreeMap<K, ()>

Source§

fn from_equivalent(object: BTreeMap<K, ()>) -> Self

Source§

impl<T> Equivalent<T> for (T,)

Source§

fn into_equivalent(self) -> T

Source§

fn from_equivalent(object: T) -> Self

Source§

impl<T> Equivalent<T> for Box<T>

Source§

fn into_equivalent(self) -> T

Source§

fn from_equivalent(object: T) -> Self

Source§

impl<T, U: Equivalent<T>> Equivalent<Option<T>> for Option<U>

Source§

fn into_equivalent(self) -> Option<T>

Source§

fn from_equivalent(option: Option<T>) -> Self

Source§

impl<T: Clone> Equivalent<T> for Arc<T>

Source§

fn into_equivalent(self) -> T

Source§

fn from_equivalent(object: T) -> Self

Implementors§

Source§

impl Equivalent<Option<Hash>> for OptionalHash

Source§

impl Equivalent<Be<<i8 as HasOtherSign>::OtherSign>> for Be<i8>

Source§

impl Equivalent<Be<<i16 as HasOtherSign>::OtherSign>> for Be<i16>

Source§

impl Equivalent<Be<<i32 as HasOtherSign>::OtherSign>> for Be<i32>

Source§

impl Equivalent<Be<<i64 as HasOtherSign>::OtherSign>> for Be<i64>

Source§

impl Equivalent<Be<<i128 as HasOtherSign>::OtherSign>> for Be<i128>

Source§

impl Equivalent<Be<<u8 as HasOtherSign>::OtherSign>> for Be<u8>

Source§

impl Equivalent<Be<<u16 as HasOtherSign>::OtherSign>> for Be<u16>

Source§

impl Equivalent<Be<<u32 as HasOtherSign>::OtherSign>> for Be<u32>

Source§

impl Equivalent<Be<<u64 as HasOtherSign>::OtherSign>> for Be<u64>

Source§

impl Equivalent<Be<<u128 as HasOtherSign>::OtherSign>> for Be<u128>

Source§

impl Equivalent<Be<NonZero<<i8 as HasOtherSign>::OtherSign>>> for Be<NonZero<i8>>

Source§

impl Equivalent<Be<NonZero<<i16 as HasOtherSign>::OtherSign>>> for Be<NonZero<i16>>

Source§

impl Equivalent<Be<NonZero<<i32 as HasOtherSign>::OtherSign>>> for Be<NonZero<i32>>

Source§

impl Equivalent<Be<NonZero<<i64 as HasOtherSign>::OtherSign>>> for Be<NonZero<i64>>

Source§

impl Equivalent<Be<NonZero<<i128 as HasOtherSign>::OtherSign>>> for Be<NonZero<i128>>

Source§

impl Equivalent<Be<NonZero<<u8 as HasOtherSign>::OtherSign>>> for Be<NonZero<u8>>

Source§

impl Equivalent<Be<NonZero<<u16 as HasOtherSign>::OtherSign>>> for Be<NonZero<u16>>

Source§

impl Equivalent<Be<NonZero<<u32 as HasOtherSign>::OtherSign>>> for Be<NonZero<u32>>

Source§

impl Equivalent<Be<NonZero<<u64 as HasOtherSign>::OtherSign>>> for Be<NonZero<u64>>

Source§

impl Equivalent<Be<NonZero<<u128 as HasOtherSign>::OtherSign>>> for Be<NonZero<u128>>

Source§

impl Equivalent<Le<<i8 as HasOtherSign>::OtherSign>> for Le<i8>

Source§

impl Equivalent<Le<<i16 as HasOtherSign>::OtherSign>> for Le<i16>

Source§

impl Equivalent<Le<<i32 as HasOtherSign>::OtherSign>> for Le<i32>

Source§

impl Equivalent<Le<<i64 as HasOtherSign>::OtherSign>> for Le<i64>

Source§

impl Equivalent<Le<<i128 as HasOtherSign>::OtherSign>> for Le<i128>

Source§

impl Equivalent<Le<<u8 as HasOtherSign>::OtherSign>> for Le<u8>

Source§

impl Equivalent<Le<<u16 as HasOtherSign>::OtherSign>> for Le<u16>

Source§

impl Equivalent<Le<<u32 as HasOtherSign>::OtherSign>> for Le<u32>

Source§

impl Equivalent<Le<<u64 as HasOtherSign>::OtherSign>> for Le<u64>

Source§

impl Equivalent<Le<<u128 as HasOtherSign>::OtherSign>> for Le<u128>

Source§

impl Equivalent<Le<NonZero<<i8 as HasOtherSign>::OtherSign>>> for Le<NonZero<i8>>

Source§

impl Equivalent<Le<NonZero<<i16 as HasOtherSign>::OtherSign>>> for Le<NonZero<i16>>

Source§

impl Equivalent<Le<NonZero<<i32 as HasOtherSign>::OtherSign>>> for Le<NonZero<i32>>

Source§

impl Equivalent<Le<NonZero<<i64 as HasOtherSign>::OtherSign>>> for Le<NonZero<i64>>

Source§

impl Equivalent<Le<NonZero<<i128 as HasOtherSign>::OtherSign>>> for Le<NonZero<i128>>

Source§

impl Equivalent<Le<NonZero<<u8 as HasOtherSign>::OtherSign>>> for Le<NonZero<u8>>

Source§

impl Equivalent<Le<NonZero<<u16 as HasOtherSign>::OtherSign>>> for Le<NonZero<u16>>

Source§

impl Equivalent<Le<NonZero<<u32 as HasOtherSign>::OtherSign>>> for Le<NonZero<u32>>

Source§

impl Equivalent<Le<NonZero<<u64 as HasOtherSign>::OtherSign>>> for Le<NonZero<u64>>

Source§

impl Equivalent<Le<NonZero<<u128 as HasOtherSign>::OtherSign>>> for Le<NonZero<u128>>