use std::io::*;
#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)]
pub enum ControlValue {
Char(char),
UnsignedInteger(u32),
Integer(i32),
}
impl ControlValue {
pub fn write<WriteT>(&self, mut writer: WriteT) -> Result<()>
where
WriteT: Write,
{
match self {
Self::Char(char_) => write!(writer, "{}", char_),
Self::UnsignedInteger(unsigned_integer) => write!(writer, "{}", unsigned_integer.to_string()),
Self::Integer(integer) => write!(writer, "{}", integer.to_string()),
}
}
}
impl From<char> for ControlValue {
fn from(char_: char) -> Self {
Self::Char(char_)
}
}
impl From<i32> for ControlValue {
fn from(integer: i32) -> Self {
Self::Integer(integer)
}
}
impl From<u32> for ControlValue {
fn from(unsigned_integer: u32) -> Self {
Self::UnsignedInteger(unsigned_integer)
}
}
impl From<isize> for ControlValue {
fn from(integer: isize) -> Self {
(integer as i32).into()
}
}
impl From<usize> for ControlValue {
fn from(unsigned_integer: usize) -> Self {
(unsigned_integer as u32).into()
}
}