@@ -102,26 +102,23 @@ impl CqlTimeuuid {
102102        // 4 bytes    2 bytes    2 bytes 
103103        // time_low - time_mid - time_hi_and_version 
104104        let  bytes = self . 0 . as_bytes ( ) ; 
105-         ( ( bytes[ 6 ]  &  0x0F )  as  u64 )  << 56 
106-             | ( bytes[ 7 ]  as  u64 )  << 48 
107-             | ( bytes[ 4 ]  as  u64 )  << 40 
108-             | ( bytes[ 5 ]  as  u64 )  << 32 
109-             | ( bytes[ 0 ]  as  u64 )  << 24 
110-             | ( bytes[ 1 ]  as  u64 )  << 16 
111-             | ( bytes[ 2 ]  as  u64 )  << 8 
112-             | ( bytes[ 3 ]  as  u64 ) 
105+         u64:: from_be_bytes ( [ 
106+             bytes[ 6 ]  &  0x0f , 
107+             bytes[ 7 ] , 
108+             bytes[ 4 ] , 
109+             bytes[ 5 ] , 
110+             bytes[ 0 ] , 
111+             bytes[ 1 ] , 
112+             bytes[ 2 ] , 
113+             bytes[ 3 ] , 
114+         ] ) 
113115    } 
114116
115117    fn  lsb ( & self )  -> u64  { 
116118        let  bytes = self . 0 . as_bytes ( ) ; 
117-         ( bytes[ 8 ]  as  u64 )  << 56 
118-             | ( bytes[ 9 ]  as  u64 )  << 48 
119-             | ( bytes[ 10 ]  as  u64 )  << 40 
120-             | ( bytes[ 11 ]  as  u64 )  << 32 
121-             | ( bytes[ 12 ]  as  u64 )  << 24 
122-             | ( bytes[ 13 ]  as  u64 )  << 16 
123-             | ( bytes[ 14 ]  as  u64 )  << 8 
124-             | ( bytes[ 15 ]  as  u64 ) 
119+         u64:: from_be_bytes ( [ 
120+             bytes[ 8 ] ,  bytes[ 9 ] ,  bytes[ 10 ] ,  bytes[ 11 ] ,  bytes[ 12 ] ,  bytes[ 13 ] ,  bytes[ 14 ] ,  bytes[ 15 ] , 
121+         ] ) 
125122    } 
126123
127124    fn  lsb_signed ( & self )  -> u64  { 
@@ -1249,3 +1246,39 @@ pub fn deser_cql_value(
12491246pub  struct  Row  { 
12501247    pub  columns :  Vec < Option < CqlValue > > , 
12511248} 
1249+ 
1250+ #[ cfg( test) ]  
1251+ mod  tests { 
1252+     use  std:: str:: FromStr  as  _; 
1253+ 
1254+     use  super :: * ; 
1255+ 
1256+     #[ test]  
1257+     fn  timeuuid_msb_byte_order ( )  { 
1258+         let  uuid = CqlTimeuuid :: from_str ( "00010203-0405-0607-0809-0a0b0c0d0e0f" ) . unwrap ( ) ; 
1259+ 
1260+         assert_eq ! ( 0x0607040500010203 ,  uuid. msb( ) ) ; 
1261+     } 
1262+ 
1263+     #[ test]  
1264+     fn  timeuuid_msb_clears_version_bits ( )  { 
1265+         // UUID version nibble should be cleared 
1266+         let  uuid = CqlTimeuuid :: from_str ( "ffffffff-ffff-ffff-ffff-ffffffffffff" ) . unwrap ( ) ; 
1267+ 
1268+         assert_eq ! ( 0x0fffffffffffffff ,  uuid. msb( ) ) ; 
1269+     } 
1270+ 
1271+     #[ test]  
1272+     fn  timeuuid_lsb_byte_order ( )  { 
1273+         let  uuid = CqlTimeuuid :: from_str ( "00010203-0405-0607-0809-0a0b0c0d0e0f" ) . unwrap ( ) ; 
1274+ 
1275+         assert_eq ! ( 0x08090a0b0c0d0e0f ,  uuid. lsb( ) ) ; 
1276+     } 
1277+ 
1278+     #[ test]  
1279+     fn  timeuuid_lsb_modifies_no_bits ( )  { 
1280+         let  uuid = CqlTimeuuid :: from_str ( "ffffffff-ffff-ffff-ffff-ffffffffffff" ) . unwrap ( ) ; 
1281+ 
1282+         assert_eq ! ( 0xffffffffffffffff ,  uuid. lsb( ) ) ; 
1283+     } 
1284+ } 
0 commit comments