Trait atsamd_hal::typelevel::Is
source · [−]pub trait Iswhere
Self: Sealed,
Self: From<IsType<Self>>,
Self: Into<IsType<Self>>,
Self: AsRef<IsType<Self>>,
Self: AsMut<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.as_mut();
let specific_ref: &Specific = any.as_ref();
let specific: Specific = any.into();
}