genet_abi/
token.rs

1use env;
2use std::fmt;
3
4/// A token value.
5#[repr(C)]
6#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
7pub struct Token(u32);
8
9impl Token {
10    /// Returns a null token.
11    pub fn null() -> Token {
12        Token(0)
13    }
14
15    /// Returns the corresponded string.
16    pub fn to_string(self) -> String {
17        env::string(self)
18    }
19}
20
21impl Into<u32> for Token {
22    fn into(self) -> u32 {
23        self.0
24    }
25}
26
27impl<'a> From<&'a Token> for Token {
28    fn from(id: &'a Token) -> Token {
29        *id
30    }
31}
32
33impl From<u32> for Token {
34    fn from(id: u32) -> Token {
35        Token(id)
36    }
37}
38
39impl From<String> for Token {
40    fn from(id: String) -> Token {
41        Token::from(id.as_str())
42    }
43}
44
45impl<'a> From<&'a str> for Token {
46    fn from(id: &'a str) -> Token {
47        env::token(id)
48    }
49}
50
51impl fmt::Display for Token {
52    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
53        f.pad(&Token::to_string(*self))
54    }
55}