1414const MULTIPLIER : u128 = 0x2360_ED05_1FC6_5DA4_4385_DF64_9FCC_F645 ;
1515
1616use core:: fmt;
17- use rand_core:: { RngCore , SeedableRng , le } ;
17+ use rand_core:: { RngCore , SeedableRng , utils } ;
1818#[ cfg( feature = "serde" ) ]
1919use serde:: { Deserialize , Serialize } ;
2020
@@ -126,8 +126,7 @@ impl SeedableRng for Lcg128Xsl64 {
126126 /// We use a single 255-bit seed to initialise the state and select a stream.
127127 /// One `seed` bit (lowest bit of `seed[8]`) is ignored.
128128 fn from_seed ( seed : Self :: Seed ) -> Self {
129- let mut seed_u64 = [ 0u64 ; 4 ] ;
130- le:: read_u64_into ( & seed, & mut seed_u64) ;
129+ let seed_u64: [ u64 ; 4 ] = utils:: read_words ( & seed) ;
131130 let state = u128:: from ( seed_u64[ 0 ] ) | ( u128:: from ( seed_u64[ 1 ] ) << 64 ) ;
132131 let incr = u128:: from ( seed_u64[ 2 ] ) | ( u128:: from ( seed_u64[ 3 ] ) << 64 ) ;
133132
@@ -150,7 +149,7 @@ impl RngCore for Lcg128Xsl64 {
150149
151150 #[ inline]
152151 fn fill_bytes ( & mut self , dest : & mut [ u8 ] ) {
153- le :: fill_bytes_via_next ( self , dest )
152+ utils :: fill_bytes_via_next_word ( dest , || self . next_u64 ( ) ) ;
154153 }
155154}
156155
@@ -232,8 +231,7 @@ impl SeedableRng for Mcg128Xsl64 {
232231
233232 fn from_seed ( seed : Self :: Seed ) -> Self {
234233 // Read as if a little-endian u128 value:
235- let mut seed_u64 = [ 0u64 ; 2 ] ;
236- le:: read_u64_into ( & seed, & mut seed_u64) ;
234+ let seed_u64: [ u64 ; 2 ] = utils:: read_words ( & seed) ;
237235 let state = u128:: from ( seed_u64[ 0 ] ) | ( u128:: from ( seed_u64[ 1 ] ) << 64 ) ;
238236 Mcg128Xsl64 :: new ( state)
239237 }
@@ -253,7 +251,7 @@ impl RngCore for Mcg128Xsl64 {
253251
254252 #[ inline]
255253 fn fill_bytes ( & mut self , dest : & mut [ u8 ] ) {
256- le :: fill_bytes_via_next ( self , dest )
254+ utils :: fill_bytes_via_next_word ( dest , || self . next_u64 ( ) ) ;
257255 }
258256}
259257
0 commit comments