1
2use std::fmt;
3use std::str::FromStr;
4
5#[derive(Debug, Clone, Copy, Serialize, Deserialize, Hash, PartialEq, Eq)]
7pub enum TokenType {
8 SingleUseBoard,
9}
10
11#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
12#[error("invalid token type: Pick single-use-board")]
13pub struct ParseTokenTypeError {
14}
15
16impl FromStr for TokenType {
17 type Err = ParseTokenTypeError;
18
19 fn from_str(s: &str) -> Result<Self, Self::Err> {
20 match s {
21 "single-use-board" => Ok(TokenType::SingleUseBoard),
22 _ => Err(ParseTokenTypeError {}),
23 }
24 }
25}
26
27impl fmt::Display for TokenType {
28 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29 match self {
30 TokenType::SingleUseBoard => f.write_str("single-use-board"),
31 }
32 }
33}
34
35
36#[derive(Debug, Clone, Copy, Serialize, Deserialize, Hash, PartialEq, Eq)]
37pub enum TokenStatus {
38 Unused,
39 Used,
40 Abused,
41 Disabled,
42}
43
44#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
45#[error("invalid token status")]
46pub struct ParseTokenStatusError {
47 pub msg: &'static str,
48}
49
50impl FromStr for TokenStatus {
51 type Err = ParseTokenStatusError;
52
53 fn from_str(s: &str) -> Result<Self, Self::Err> {
54 match s {
55 "unused" => Ok(TokenStatus::Unused),
56 "used" => Ok(TokenStatus::Used),
57 "abused" => Ok(TokenStatus::Abused),
58 "disabled" => Ok(TokenStatus::Disabled),
59 _ => Err(ParseTokenStatusError { msg: "invalid token status" }),
60 }
61 }
62}
63
64impl fmt::Display for TokenStatus {
65 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
66 match self {
67 TokenStatus::Unused => f.write_str("unused"),
68 TokenStatus::Used => f.write_str("used"),
69 TokenStatus::Abused => f.write_str("abused"),
70 TokenStatus::Disabled => f.write_str("disabled"),
71 }
72 }
73}