diff options
author | iximeow <me@iximeow.net> | 2019-03-10 17:28:27 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2020-01-12 16:26:39 -0800 |
commit | f8b14dd92bf97841791e1938394a20aca982689f (patch) | |
tree | 3e5d05dea73c455aa875ba0ded020816e0d414c8 | |
parent | 7b6bdb989ca2204b288db8675d3066074556dfb1 (diff) |
tweak core lifetimes, add an address formatter
-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 { |