On this page
Struct std::any::TypeId
pub struct TypeId { /* private fields */ }
A TypeId
represents a globally unique identifier for a type.
Each TypeId
is an opaque object which does not allow inspection of what’s inside but does allow basic operations such as cloning, comparison, printing, and showing.
A TypeId
is currently only available for types which ascribe to 'static
, but this limitation may be removed in the future.
While TypeId
implements Hash
, PartialOrd
, and Ord
, it is worth noting that the hashes and ordering will vary between Rust releases. Beware of relying on them inside of your code!
Implementations
impl TypeId
pub fn of<T>() -> TypeId
where
T: 'static + ?Sized,
Returns the TypeId
of the type this generic function has been instantiated with.
Examples
use std::any::{Any, TypeId};
fn is_string<T: ?Sized + Any>(_s: &T) -> bool {
TypeId::of::<String>() == TypeId::of::<T>()
}
assert_eq!(is_string(&0), false);
assert_eq!(is_string(&"cookie monster".to_string()), true);
Trait Implementations
impl Clone for TypeId
fn clone(&self) -> TypeId
fn clone_from(&mut self, source: &Self)
source
. Read more
impl Debug for TypeId
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
impl Hash for TypeId
fn hash<H>(&self, state: &mut H)
where
H: Hasher,
fn hash_slice<H>(data: &[Self], state: &mut H)
where
H: Hasher,
Self: Sized,
impl Ord for TypeId
fn cmp(&self, other: &TypeId) -> Ordering
fn max(self, other: Self) -> Self
where
Self: Sized,
fn min(self, other: Self) -> Self
where
Self: Sized,
fn clamp(self, min: Self, max: Self) -> Self
where
Self: Sized + PartialOrd,
impl PartialEq for TypeId
fn eq(&self, other: &TypeId) -> bool
self
and other
values to be equal, and is used by ==
.
fn ne(&self, other: &Rhs) -> bool
!=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
impl PartialOrd for TypeId
fn partial_cmp(&self, other: &TypeId) -> Option<Ordering>
fn lt(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more
fn gt(&self, other: &Rhs) -> bool
fn ge(&self, other: &Rhs) -> bool
self
and other
) and is used by the >=
operator. Read more
impl Copy for TypeId
impl Eq for TypeId
impl StructuralEq for TypeId
Auto Trait Implementations
impl RefUnwindSafe for TypeId
impl Send for TypeId
impl Sync for TypeId
impl Unpin for TypeId
impl UnwindSafe for TypeId
Blanket Implementations
impl<T> Any for T
where
T: 'static + ?Sized,
impl<T> Borrow<T> for T
where
T: ?Sized,
impl<T> BorrowMut<T> for T
where
T: ?Sized,
impl<T> From<T> for T
fn from(t: T) -> T
Returns the argument unchanged.
impl<T, U> Into<U> for T
where
U: From<T>,
fn into(self) -> U
Calls U::from(self)
.
That is, this conversion is whatever the implementation of From<T> for U
chooses to do.
impl<T> ToOwned for T
where
T: Clone,
type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T, U> TryFrom<U> for T
where
U: Into<T>,
type Error = Infallible
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for T
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/any/struct.TypeId.html