#[derive(Clone, Copy)]
pub enum Type<'a> {
Boolean,
Byte,
Char,
Short,
Int,
Long,
Float,
Double,
Void,
Object(&'a str),
Array(&'a Type<'a>),
}
impl<'a> From<Type<'a>> for String {
fn from(r#type: Type) -> Self {
let result = match r#type {
Type::Boolean => "Z".into(),
Type::Byte => "B".into(),
Type::Char => "C".into(),
Type::Short => "S".into(),
Type::Int => "I".into(),
Type::Long => "J".into(),
Type::Float => "F".into(),
Type::Double => "D".into(),
Type::Void => "V".into(),
Type::Object(s) => format!("L{};", s),
Type::Array(t) => format!("[{}", <Type as Into<String>>::into(*t)),
};
result
}
}