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

impl<TMarker: ?Sized, TValue> IdPtr<TMarker, TValue> {
    pub const fn downcast_to<TExtendedMarker: ?Sized>(self) -> IdPtr<TExtendedMarker, TValue>
    where
        TExtendedMarker: Extends<TMarker>,
    {
        IdPtr::from_ptr(self.to_ptr())
    }

    pub const fn upcast_to<TExtendedMarker: ?Sized>(self) -> IdPtr<TExtendedMarker, TValue>
    where
        TMarker: Extends<TExtendedMarker>,
    {
        IdPtr::from_ptr(self.to_ptr())
    }
}