@@ -101,15 +101,12 @@ impl ObjectId {
101
101
let counter = ObjectId :: gen_count ( ) ?;
102
102
103
103
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 ] ) ;
113
110
114
111
Ok ( ObjectId :: with_bytes ( buf) )
115
112
}
@@ -155,9 +152,9 @@ impl ObjectId {
155
152
/// Retrieves the increment counter from an ObjectId.
156
153
pub fn counter ( & self ) -> u32 {
157
154
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
+
161
158
BigEndian :: read_u32 ( & buf)
162
159
}
163
160
@@ -235,9 +232,7 @@ fn count_generated_is_big_endian() {
235
232
let count_bytes = count_res. unwrap ( ) ;
236
233
237
234
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 ] ) ;
241
236
242
237
let count = BigEndian :: read_u32 ( & buf) ;
243
238
assert_eq ! ( start as u32 , count) ;
0 commit comments