diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 18 | 
1 files changed, 16 insertions, 2 deletions
| @@ -1,5 +1,7 @@  extern crate num_traits; +use std::str::FromStr; +  use std::fmt::{Debug, Display};  use std::ops::{Add, Sub, AddAssign, SubAssign}; @@ -20,8 +22,10 @@ pub trait Address where Self:      AddAssign + SubAssign +      WrappingAdd + WrappingSub +      CheckedAdd + CheckedSub + +    FromStr +      identities::One + identities::Zero {      fn to_linear(&self) -> usize; +  }  /*  impl <T> Address for T where T: Sized + Ord + Add<Output=Self> + From<u16> + Into<usize> { @@ -29,6 +33,12 @@ impl <T> Address for T where T: Sized + Ord + Add<Output=Self> + From<u16> + Int  }  */ +impl AddressDisplay for usize { +    fn stringy(&self) -> String { +        format!("{:#x}", self) +    } +} +  impl AddressDisplay for u32 {      fn stringy(&self) -> String {          format!("{:#x}", self) @@ -49,9 +59,13 @@ impl Address for u32 {      fn to_linear(&self) -> usize { *self as usize }  } +impl Address for usize { +    fn to_linear(&self) -> usize { *self } +} +  pub trait Decodable where Self: Sized { -    fn decode<'a, T: IntoIterator<Item=&'a u8>>(bytes: T) -> Option<Self>; -    fn decode_into<'a, T: IntoIterator<Item=&'a u8>>(&mut self, bytes: T) -> Option<()>; +    fn decode<T: IntoIterator<Item=u8>>(bytes: T) -> Option<Self>; +    fn decode_into<T: IntoIterator<Item=u8>>(&mut self, bytes: T) -> Option<()>;  }  pub trait Arch { | 
