Trait rp2040_hal::typelevel::Is

source ·
pub trait Is
where Self: Sealed + From<IsType<Self>> + Into<IsType<Self>> + Borrow<IsType<Self>> + BorrowMut<IsType<Self>>,
{ type Type; }
Expand description

Marker trait for type identity

This trait is used as part of the AnyKind trait pattern. It represents the concept of type identity, because all implementors have <Self as Is>::Type == Self. When used as a trait bound with a specific type, it guarantees that the corresponding type parameter is exactly the specific type. Stated differently, it guarantees that T == Specific in the following example.

where T: Is<Type = Specific>

Moreover, the super traits guarantee that any instance of or reference to a type T can be converted into the Specific type.

fn example<T>(mut any: T)
where
    T: Is<Type = Specific>,
{
    let specific_mut: &mut Specific = any.borrow_mut();
    let specific_ref: &Specific = any.borrow();
    let specific: Specific = any.into();
}

Required Associated Types§

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> Is for T
where T: Sealed + Borrow<T> + BorrowMut<T>,

§

type Type = T