@@ -101,15 +101,12 @@ impl ObjectId {
101101 let counter = ObjectId :: gen_count ( ) ?;
102102
103103 let mut buf: [ u8 ; 12 ] = [ 0 ; 12 ] ;
104- for i in 0 ..TIMESTAMP_SIZE {
105- buf[ TIMESTAMP_OFFSET + i] = timestamp[ i] ;
106- }
107- for i in 0 ..PROCESS_ID_SIZE {
108- buf[ PROCESS_ID_OFFSET + i] = process_id[ i] ;
109- }
110- for i in 0 ..COUNTER_SIZE {
111- buf[ COUNTER_OFFSET + i] = counter[ i] ;
112- }
104+ buf[ TIMESTAMP_OFFSET ..( TIMESTAMP_SIZE + TIMESTAMP_OFFSET ) ]
105+ . clone_from_slice ( & timestamp[ ..TIMESTAMP_SIZE ] ) ;
106+ buf[ PROCESS_ID_OFFSET ..( PROCESS_ID_SIZE + PROCESS_ID_OFFSET ) ]
107+ . clone_from_slice ( & process_id[ ..PROCESS_ID_SIZE ] ) ;
108+ buf[ COUNTER_OFFSET ..( COUNTER_SIZE + COUNTER_OFFSET ) ]
109+ . clone_from_slice ( & counter[ ..COUNTER_SIZE ] ) ;
113110
114111 Ok ( ObjectId :: with_bytes ( buf) )
115112 }
@@ -155,9 +152,9 @@ impl ObjectId {
155152 /// Retrieves the increment counter from an ObjectId.
156153 pub fn counter ( & self ) -> u32 {
157154 let mut buf: [ u8 ; 4 ] = [ 0 ; 4 ] ;
158- for i in 0 .. COUNTER_SIZE {
159- buf [ i + 1 ] = self . id [ COUNTER_OFFSET + i ] ;
160- }
155+ buf [ 1 ..= COUNTER_SIZE ]
156+ . clone_from_slice ( & self . id [ COUNTER_OFFSET .. ( COUNTER_SIZE + COUNTER_OFFSET ) ] ) ;
157+
161158 BigEndian :: read_u32 ( & buf)
162159 }
163160
@@ -235,9 +232,7 @@ fn count_generated_is_big_endian() {
235232 let count_bytes = count_res. unwrap ( ) ;
236233
237234 let mut buf: [ u8 ; 4 ] = [ 0 ; 4 ] ;
238- for i in 0 ..COUNTER_SIZE {
239- buf[ i + 1 ] = count_bytes[ i] ;
240- }
235+ buf[ 1 ..=COUNTER_SIZE ] . clone_from_slice ( & count_bytes[ ..COUNTER_SIZE ] ) ;
241236
242237 let count = BigEndian :: read_u32 ( & buf) ;
243238 assert_eq ! ( start as u32 , count) ;
0 commit comments