tiny-json-rs 0.2.5

tiny-json-rs is a simple and lightweight JSON parser for Rust.
Documentation
use crate::lexer::{StringType, Token, TokenType};
use crate::mapper::Value;
use crate::serializer::Serialize;
use alloc::string::{String, ToString};
use alloc::vec::Vec;

impl Serialize for u8 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for u16 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for u32 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for u64 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for usize {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for i8 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for i16 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for i32 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for i64 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Int,
            literal: self.to_string(),
        })
    }
}

impl Serialize for f32 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Float,
            literal: self.to_string(),
        })
    }
}

impl Serialize for f64 {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::Float,
            literal: self.to_string(),
        })
    }
}

impl Serialize for bool {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::ReservedString,
            literal: self.to_string(),
        })
    }
}

impl Serialize for String {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::String(StringType::ComplexString),
            literal: self.to_string(),
        })
    }
}

impl Serialize for char {
    fn serialize(&self) -> Value {
        Value::Token(Token {
            token_type: TokenType::String(StringType::SimpleString),
            literal: self.to_string(),
        })
    }
}

impl<T> Serialize for Option<T>
where
    T: Serialize,
{
    fn serialize(&self) -> Value {
        match self {
            Some(val) => val.serialize(),
            None => Value::Token(Token {
                token_type: TokenType::ReservedString,
                literal: String::from("null"),
            }),
        }
    }
}

impl<T> Serialize for Vec<T>
where
    T: Serialize,
{
    fn serialize(&self) -> Value {
        let mut array = Vec::new();
        for val in self {
            array.push(val.serialize());
        }
        Value::Array(array)
    }
}