bytary 0.1.0

A simple CLI tool for binary data manipulation
Documentation
use crate::error::{BytaryError, BytaryResult};
use std::fmt::{Display, Formatter};
use strum::EnumIter;

#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, EnumIter)]
pub enum Format {
    Bytes,
    Bin,
    Hex,
    Oct,
    Base32,
    Base64,
}
impl Default for Format {
    fn default() -> Self {
        Format::Bytes
    }
}

impl TryFrom<&str> for Format {
    type Error = BytaryError;
    fn try_from(name: &str) -> BytaryResult<Self> {
        match name.to_lowercase().as_str() {
            "bytes" => Ok(Format::Bytes),
            "bin" => Ok(Format::Bin),
            "hex" => Ok(Format::Hex),
            "oct" => Ok(Format::Oct),
            "base32" => Ok(Format::Base32),
            "base64" => Ok(Format::Base64),
            _ => Err(BytaryError::InvalidFormat(name.to_string())),
        }
    }
}

impl Display for Format {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            Format::Bytes => write!(f, "bytes"),
            Format::Bin => write!(f, "bin"),
            Format::Hex => write!(f, "hex"),
            Format::Oct => write!(f, "oct"),
            Format::Base32 => write!(f, "base32"),
            Format::Base64 => write!(f, "base64"),
        }
    }
}