1use core::fmt;
3
4#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)]
6pub struct Token(usize);
7
8impl Token {
9 pub const fn from_usize(value: usize) -> Self {
11 Self(value)
12 }
13
14 pub const fn as_usize(self) -> usize {
16 self.0
17 }
18}
19
20impl From<usize> for Token {
21 fn from(value: usize) -> Self {
22 Token::from_usize(value)
23 }
24}
25
26impl From<Token> for usize {
27 fn from(token: Token) -> Self {
28 token.as_usize()
29 }
30}
31
32impl fmt::Debug for Token {
33 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34 f.debug_tuple("Token").field(&self.0).finish()
35 }
36}