1use env;
2use std::fmt;
3
4#[repr(C)]
6#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
7pub struct Token(u32);
8
9impl Token {
10 pub fn null() -> Token {
12 Token(0)
13 }
14
15 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}