pub trait Serial: Send {
fn register_port(&mut self, port: u16) -> Result<(), ()>;
fn release_port(&mut self, port: u16) -> Result<(), ()>;
fn process(&mut self);
fn recv<'a>(
&mut self,
port: u16,
buf: &'a mut [u8]
) -> Result<&'a mut [u8], ()>;
fn send<'a>(&mut self, port: u16, buf: &'a [u8]) -> Result<(), &'a [u8]>;
}