sack making progress!
[pspp] / rust / src / endian.rs
index dd562e60eff7c9cf8500879f1064c41618ba5ae7..bf861af2d18765697eab1e078f5ff3fd374d43a8 100644 (file)
@@ -37,6 +37,35 @@ impl Endian {
 pub trait ToBytes<T, const N: usize> {
     fn to_bytes(self, value: T) -> [u8; N];
 }
+impl ToBytes<i64, 8> 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<u32, 4> 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<u16, 2> 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<u8, 1> for Endian {
+    fn to_bytes(self, value: u8) -> [u8; 1] {
+        [value]
+    }
+}
 impl ToBytes<f64, 8> for Endian {
     fn to_bytes(self, value: f64) -> [u8; 8] {
         match self {