1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use crate::{Type, TypeInfo}; /// Trait used for Rust types for which we can determine the runtime type of. pub trait TypeOf { /// Convert into a value type. fn type_of() -> Type; /// Access diagnostical information on the value type. fn type_info() -> TypeInfo; } /// Blanket implementation for references. impl<T: ?Sized> TypeOf for &T where T: TypeOf, { fn type_of() -> Type { T::type_of() } fn type_info() -> TypeInfo { T::type_info() } } /// Blanket implementation for mutable references. impl<T: ?Sized> TypeOf for &mut T where T: TypeOf, { fn type_of() -> Type { T::type_of() } fn type_info() -> TypeInfo { T::type_info() } }