use std::marker::PhantomData;
use crate::tokens::*;
pub struct TokenBuilder<const ID: usize>(
PhantomData<()>, );
impl<const ID: usize> TokenBuilder<ID> {
pub const unsafe fn new() -> Self {
Self(PhantomData)
}
pub const fn token(self) -> (Token<ID>, TokenBuilder<{ID + 1}>) {
unsafe {(Token::new(()),
TokenBuilder::new())}
}
pub const fn token_with<U>(self, u: U) -> (TokenWith<U, ID>, TokenBuilder<{ID + 1}>) {
unsafe {(TokenWith::new(u),
TokenBuilder::new())}
}
}