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, UsizeId};

impl<TMarker: ?Sized> UsizeId<TMarker> {
    pub const fn downcast_to<TExtendedMarker: ?Sized>(self) -> UsizeId<TExtendedMarker>
    where
        TExtendedMarker: Extends<TMarker>,
    {
        UsizeId::from_usize(self.to_usize())
    }

    pub const fn upcast_to<TExtendedMarker: ?Sized>(self) -> UsizeId<TExtendedMarker>
    where
        TMarker: Extends<TExtendedMarker>,
    {
        UsizeId::from_usize(self.to_usize())
    }
}