id_sys 0.1.0

Provides data structures which can be marked such that they only work with similarly marked integer data types.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::{extends::Extends, U32Id};

impl<TMarker: ?Sized> U32Id<TMarker> {
    pub const fn downcast_to<TExtendedMarker: ?Sized>(self) -> U32Id<TExtendedMarker>
    where
        TExtendedMarker: Extends<TMarker>,
    {
        U32Id::from_u32(self.to_u32())
    }

    pub const fn upcast_to<TExtendedMarker: ?Sized>(self) -> U32Id<TExtendedMarker>
    where
        TMarker: Extends<TExtendedMarker>,
    {
        U32Id::from_u32(self.to_u32())
    }
}