crossio_core/
token.rs

1//! Tokens uniquely identify registered sources within a reactor.
2use core::fmt;
3
4/// Identifier attached to each registered I/O source.
5#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)]
6pub struct Token(usize);
7
8impl Token {
9    /// Creates a token from the provided raw usize value.
10    pub const fn from_usize(value: usize) -> Self {
11        Self(value)
12    }
13
14    /// Returns the underlying usize representation.
15    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}