cl_token/
token_data.rs
1#[derive(Clone, Debug, PartialEq)]
6pub enum TokenData {
7 String(String),
9 Character(char),
11 Integer(u128),
13 Float(f64),
15 None,
17}
18from! {
19 value: String => Self::String(value),
20 value: u128 => Self::Integer(value),
21 value: f64 => Self::Float(value),
22 value: char => Self::Character(value),
23 _v: () => Self::None,
24}
25macro from($($value:ident: $src:ty => $dst:expr),*$(,)?) {
27 $(impl From<$src> for TokenData {
28 fn from($value: $src) -> Self { $dst }
29 })*
30}
31impl std::fmt::Display for TokenData {
32 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
33 match self {
34 TokenData::String(v) => write!(f, "\"{v}\""),
35 TokenData::Character(v) => write!(f, "'{v}'"),
36 TokenData::Integer(v) => v.fmt(f),
37 TokenData::Float(v) => v.fmt(f),
38 TokenData::None => "None".fmt(f),
39 }
40 }
41}