Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_reflect/src/is.rs
6849 views
1
use core::any::{Any, TypeId};
2
3
/// Checks if the current type "is" another type, using a [`TypeId`] equality comparison.
4
pub trait Is {
5
/// Checks if the current type "is" another type, using a [`TypeId`] equality comparison.
6
/// This is most useful in the context of generic logic.
7
///
8
/// ```
9
/// # use bevy_reflect::Is;
10
/// # use std::any::Any;
11
/// fn greet_if_u32<T: Any>() {
12
/// if T::is::<u32>() {
13
/// println!("Hello");
14
/// }
15
/// }
16
/// // this will print "Hello"
17
/// greet_if_u32::<u32>();
18
/// // this will not print "Hello"
19
/// greet_if_u32::<String>();
20
/// assert!(u32::is::<u32>());
21
/// assert!(!usize::is::<u32>());
22
/// ```
23
fn is<T: Any>() -> bool;
24
}
25
26
impl<A: Any> Is for A {
27
#[inline]
28
fn is<T: Any>() -> bool {
29
TypeId::of::<A>() == TypeId::of::<T>()
30
}
31
}
32
33