use std::fmt::{Debug, Error, Formatter};
#[derive(Eq, PartialEq)]
pub enum ItemValue
{
String(String),
Duration(i64),
I64(i64),
U16(u16),
Usize(usize)
}
impl ItemValue
{
pub fn is_u16(&self) -> bool
{
match *self
{
ItemValue::U16(_) => true,
_ => false
}
}
pub fn is_duration(&self) -> bool
{
match *self
{
ItemValue::Duration(_) => true,
_ => false
}
}
pub fn is_i64(&self) -> bool
{
match *self
{
ItemValue::I64(_) => true,
_ => false
}
}
pub fn is_usize(&self) -> bool
{
match *self
{
ItemValue::Usize(_) => true,
_ => false
}
}
pub fn is_str(&self) -> bool
{
match *self
{
ItemValue::String(_) => true,
_ => false
}
}
pub fn get_i64(&self) -> i64
{
match *self
{
ItemValue::Duration(value) => value,
ItemValue::I64(value) => value,
_ => panic!("Item is a {:?}", self)
}
}
pub fn get_str(&self) -> &str
{
match *self
{
ItemValue::String(ref value) => value.as_str(),
_ => panic!("Item is a {:?}", self)
}
}
pub fn get_u16(&self) -> u16
{
match *self
{
ItemValue::U16(value) => value,
_ => panic!("Item is a {:?}", self)
}
}
pub fn get_usize(&self) -> usize
{
match *self
{
ItemValue::Usize(value) => value,
_ => panic!("Item is a {:?}", self)
}
}
}
impl Debug for ItemValue
{
fn fmt(
&self,
fmt : &mut Formatter
) -> Result<(), Error>
{
match *self
{
ItemValue::String(ref value) => write!(fmt, "String({})", value),
ItemValue::Duration(value) => write!(fmt, "Duration({})", value),
ItemValue::I64(value) => write!(fmt, "I64({})", value),
ItemValue::U16(value) => write!(fmt, "U16({})", value),
ItemValue::Usize(value) => write!(fmt, "Usize({})", value)
}
}
}