X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=rust%2Fsrc%2Fendian.rs;h=3692180dbaa098d847e005b9df3b5aa4de47d847;hb=e0cbdf0daefcca81be9572aab0deedf945687f5a;hp=dd562e60eff7c9cf8500879f1064c41618ba5ae7;hpb=b8f1dedca099b32b4b4b4dda5f265cc1e8db9587;p=pspp diff --git a/rust/src/endian.rs b/rust/src/endian.rs index dd562e60ef..3692180dba 100644 --- a/rust/src/endian.rs +++ b/rust/src/endian.rs @@ -19,7 +19,7 @@ impl Endian { match (as_big == expected_value, as_little == expected_value) { (true, false) => Some(Endian::Big), (false, true) => Some(Endian::Little), - _ => None + _ => None, } } @@ -29,7 +29,7 @@ impl Endian { match (as_big == expected_value, as_little == expected_value) { (true, false) => Some(Endian::Big), (false, true) => Some(Endian::Little), - _ => None + _ => None, } } } @@ -37,6 +37,43 @@ impl Endian { pub trait ToBytes { fn to_bytes(self, value: T) -> [u8; N]; } +impl ToBytes for Endian { + fn to_bytes(self, value: i64) -> [u8; 8] { + match self { + Endian::Big => i64::to_be_bytes(value), + Endian::Little => i64::to_le_bytes(value), + } + } +} +impl ToBytes for Endian { + fn to_bytes(self, value: u32) -> [u8; 4] { + match self { + Endian::Big => u32::to_be_bytes(value), + Endian::Little => u32::to_le_bytes(value), + } + } +} +impl ToBytes for Endian { + fn to_bytes(self, value: i32) -> [u8; 4] { + match self { + Endian::Big => i32::to_be_bytes(value), + Endian::Little => i32::to_le_bytes(value), + } + } +} +impl ToBytes for Endian { + fn to_bytes(self, value: u16) -> [u8; 2] { + match self { + Endian::Big => u16::to_be_bytes(value), + Endian::Little => u16::to_le_bytes(value), + } + } +} +impl ToBytes for Endian { + fn to_bytes(self, value: u8) -> [u8; 1] { + [value] + } +} impl ToBytes for Endian { fn to_bytes(self, value: f64) -> [u8; 8] { match self { @@ -124,4 +161,3 @@ impl Parse for Endian { } } } -