use ;
/// TypeId of a struct that derives from the [state](crate::State) macro. The diffrence to the [std::any::TypeId] is, that
/// this TypeId is const and is the same on every system.
///
/// # How it works
/// It works by providing a unique identifier to the derive macro. This unique identifier can be passed
/// with the `name` attribute, otherwise it is just the struct name. Then this identifier is hashed to a unique
/// u32. The macro is checking at compile time, that every [StateTypeId] is unique.
/// Trait to identify a struct that derives from the [State](crate::State) macro using
/// a [StateTypeId]
impl_downcast!;