pub trait Codec: Copy + Clone + Into<u8> {
type Error;
const WIDTH: u8;
fn unsafe_from_bits(b: u8) -> Self;
fn try_from_bits(b: u8) -> Result<Self, Self::Error>;
fn from_char(c: char) -> Result<Self, Self::Error>;
fn to_char(self) -> char;
}