cleanup
[pspp] / rust / src / endian.rs
index dd562e60eff7c9cf8500879f1064c41618ba5ae7..3692180dbaa098d847e005b9df3b5aa4de47d847 100644 (file)
@@ -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<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<i32, 4> 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<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 {
@@ -124,4 +161,3 @@ impl Parse<f64, 8> for Endian {
         }
     }
 }
-