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§
Sourcefn into_equivalent(self) -> T
fn into_equivalent(self) -> T
Inverse of Equivalent::from_equivalent.
Sourcefn from_equivalent(object: T) -> Self
fn from_equivalent(object: T) -> Self
Inverse of Equivalent::into_equivalent.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl Equivalent<Be<i8>> for Option<Be<NonZero<i8>>>
impl Equivalent<Be<i8>> for Option<Be<NonZero<i8>>>
fn into_equivalent(self) -> Be<i8>
fn from_equivalent(object: Be<i8>) -> Self
Source§impl Equivalent<Be<i16>> for Option<Be<NonZero<i16>>>
impl Equivalent<Be<i16>> for Option<Be<NonZero<i16>>>
fn into_equivalent(self) -> Be<i16>
fn from_equivalent(object: Be<i16>) -> Self
Source§impl Equivalent<Be<i32>> for Option<Be<NonZero<i32>>>
impl Equivalent<Be<i32>> for Option<Be<NonZero<i32>>>
fn into_equivalent(self) -> Be<i32>
fn from_equivalent(object: Be<i32>) -> Self
Source§impl Equivalent<Be<i64>> for Option<Be<NonZero<i64>>>
impl Equivalent<Be<i64>> for Option<Be<NonZero<i64>>>
fn into_equivalent(self) -> Be<i64>
fn from_equivalent(object: Be<i64>) -> Self
Source§impl Equivalent<Be<i128>> for Option<Be<NonZero<i128>>>
impl Equivalent<Be<i128>> for Option<Be<NonZero<i128>>>
fn into_equivalent(self) -> Be<i128>
fn from_equivalent(object: Be<i128>) -> Self
Source§impl Equivalent<Be<u8>> for Option<Be<NonZero<u8>>>
impl Equivalent<Be<u8>> for Option<Be<NonZero<u8>>>
fn into_equivalent(self) -> Be<u8>
fn from_equivalent(object: Be<u8>) -> Self
Source§impl Equivalent<Be<u16>> for Option<Be<NonZero<u16>>>
impl Equivalent<Be<u16>> for Option<Be<NonZero<u16>>>
fn into_equivalent(self) -> Be<u16>
fn from_equivalent(object: Be<u16>) -> Self
Source§impl Equivalent<Be<u32>> for Option<Be<NonZero<u32>>>
impl Equivalent<Be<u32>> for Option<Be<NonZero<u32>>>
fn into_equivalent(self) -> Be<u32>
fn from_equivalent(object: Be<u32>) -> Self
Source§impl Equivalent<Be<u64>> for Option<Be<NonZero<u64>>>
impl Equivalent<Be<u64>> for Option<Be<NonZero<u64>>>
fn into_equivalent(self) -> Be<u64>
fn from_equivalent(object: Be<u64>) -> Self
Source§impl Equivalent<Be<u128>> for Option<Be<NonZero<u128>>>
impl Equivalent<Be<u128>> for Option<Be<NonZero<u128>>>
fn into_equivalent(self) -> Be<u128>
fn from_equivalent(object: Be<u128>) -> Self
Source§impl Equivalent<Le<i8>> for Option<Le<NonZero<i8>>>
impl Equivalent<Le<i8>> for Option<Le<NonZero<i8>>>
fn into_equivalent(self) -> Le<i8>
fn from_equivalent(object: Le<i8>) -> Self
Source§impl Equivalent<Le<i16>> for Option<Le<NonZero<i16>>>
impl Equivalent<Le<i16>> for Option<Le<NonZero<i16>>>
fn into_equivalent(self) -> Le<i16>
fn from_equivalent(object: Le<i16>) -> Self
Source§impl Equivalent<Le<i32>> for Option<Le<NonZero<i32>>>
impl Equivalent<Le<i32>> for Option<Le<NonZero<i32>>>
fn into_equivalent(self) -> Le<i32>
fn from_equivalent(object: Le<i32>) -> Self
Source§impl Equivalent<Le<i64>> for Option<Le<NonZero<i64>>>
impl Equivalent<Le<i64>> for Option<Le<NonZero<i64>>>
fn into_equivalent(self) -> Le<i64>
fn from_equivalent(object: Le<i64>) -> Self
Source§impl Equivalent<Le<i128>> for Option<Le<NonZero<i128>>>
impl Equivalent<Le<i128>> for Option<Le<NonZero<i128>>>
fn into_equivalent(self) -> Le<i128>
fn from_equivalent(object: Le<i128>) -> Self
Source§impl Equivalent<Le<u8>> for Option<Le<NonZero<u8>>>
impl Equivalent<Le<u8>> for Option<Le<NonZero<u8>>>
fn into_equivalent(self) -> Le<u8>
fn from_equivalent(object: Le<u8>) -> Self
Source§impl Equivalent<Le<u16>> for Option<Le<NonZero<u16>>>
impl Equivalent<Le<u16>> for Option<Le<NonZero<u16>>>
fn into_equivalent(self) -> Le<u16>
fn from_equivalent(object: Le<u16>) -> Self
Source§impl Equivalent<Le<u32>> for Option<Le<NonZero<u32>>>
impl Equivalent<Le<u32>> for Option<Le<NonZero<u32>>>
fn into_equivalent(self) -> Le<u32>
fn from_equivalent(object: Le<u32>) -> Self
Source§impl Equivalent<Le<u64>> for Option<Le<NonZero<u64>>>
impl Equivalent<Le<u64>> for Option<Le<NonZero<u64>>>
fn into_equivalent(self) -> Le<u64>
fn from_equivalent(object: Le<u64>) -> Self
Source§impl Equivalent<Le<u128>> for Option<Le<NonZero<u128>>>
impl Equivalent<Le<u128>> for Option<Le<NonZero<u128>>>
fn into_equivalent(self) -> Le<u128>
fn from_equivalent(object: Le<u128>) -> Self
Source§impl Equivalent<bool> for Option<()>
impl Equivalent<bool> for Option<()>
fn into_equivalent(self) -> bool
fn from_equivalent(object: bool) -> Self
Source§impl Equivalent<i8> for Option<NonZero<i8>>
impl Equivalent<i8> for Option<NonZero<i8>>
fn into_equivalent(self) -> i8
fn from_equivalent(object: i8) -> Self
Source§impl Equivalent<i16> for Option<NonZero<i16>>
impl Equivalent<i16> for Option<NonZero<i16>>
fn into_equivalent(self) -> i16
fn from_equivalent(object: i16) -> Self
Source§impl Equivalent<i32> for Option<NonZero<i32>>
impl Equivalent<i32> for Option<NonZero<i32>>
fn into_equivalent(self) -> i32
fn from_equivalent(object: i32) -> Self
Source§impl Equivalent<i64> for Option<NonZero<i64>>
impl Equivalent<i64> for Option<NonZero<i64>>
fn into_equivalent(self) -> i64
fn from_equivalent(object: i64) -> Self
Source§impl Equivalent<i128> for Option<NonZero<i128>>
impl Equivalent<i128> for Option<NonZero<i128>>
fn into_equivalent(self) -> i128
fn from_equivalent(object: i128) -> Self
Source§impl Equivalent<u8> for Option<NonZero<u8>>
impl Equivalent<u8> for Option<NonZero<u8>>
fn into_equivalent(self) -> u8
fn from_equivalent(object: u8) -> Self
Source§impl Equivalent<u16> for Option<NonZero<u16>>
impl Equivalent<u16> for Option<NonZero<u16>>
fn into_equivalent(self) -> u16
fn from_equivalent(object: u16) -> Self
Source§impl Equivalent<u32> for Option<NonZero<u32>>
impl Equivalent<u32> for Option<NonZero<u32>>
fn into_equivalent(self) -> u32
fn from_equivalent(object: u32) -> Self
Source§impl Equivalent<u64> for Option<NonZero<u64>>
impl Equivalent<u64> for Option<NonZero<u64>>
fn into_equivalent(self) -> u64
fn from_equivalent(object: u64) -> Self
Source§impl Equivalent<u128> for Option<NonZero<u128>>
impl Equivalent<u128> for Option<NonZero<u128>>
fn into_equivalent(self) -> u128
fn from_equivalent(object: u128) -> Self
Source§impl<'a, B: 'a + ToOwned + ?Sized> Equivalent<<B as ToOwned>::Owned> for Cow<'a, B>
impl<'a, B: 'a + ToOwned + ?Sized> Equivalent<<B as ToOwned>::Owned> for Cow<'a, B>
fn into_equivalent(self) -> B::Owned
fn from_equivalent(object: B::Owned) -> Self
Source§impl<K: Eq + Hash> Equivalent<IndexMap<K, ()>> for IndexSet<K>
Available on crate feature indexmap only.
impl<K: Eq + Hash> Equivalent<IndexMap<K, ()>> for IndexSet<K>
Available on crate feature
indexmap only.