23
23
html_root_url = "https://doc.rust-lang.org/nightly/" ,
24
24
test( no_crate_inject, attr( deny( warnings) ) ) ) ]
25
25
#![ deny( warnings) ]
26
-
27
26
#![ feature( alloc) ]
28
27
#![ feature( core_intrinsics) ]
29
28
#![ feature( dropck_eyepatch) ]
30
29
#![ feature( generic_param_attrs) ]
31
30
#![ cfg_attr( test, feature( test) ) ]
32
-
33
31
#![ allow( deprecated) ]
34
32
35
33
extern crate alloc;
@@ -69,7 +67,9 @@ struct TypedArenaChunk<T> {
69
67
impl < T > TypedArenaChunk < T > {
70
68
#[ inline]
71
69
unsafe fn new ( capacity : usize ) -> TypedArenaChunk < T > {
72
- TypedArenaChunk { storage : RawVec :: with_capacity ( capacity) }
70
+ TypedArenaChunk {
71
+ storage : RawVec :: with_capacity ( capacity) ,
72
+ }
73
73
}
74
74
75
75
/// Destroys this arena chunk.
@@ -132,7 +132,9 @@ impl<T> TypedArena<T> {
132
132
133
133
unsafe {
134
134
if mem:: size_of :: < T > ( ) == 0 {
135
- self . ptr . set ( intrinsics:: arith_offset ( self . ptr . get ( ) as * mut u8 , 1 ) as * mut T ) ;
135
+ self . ptr
136
+ . set ( intrinsics:: arith_offset ( self . ptr . get ( ) as * mut u8 , 1 )
137
+ as * mut T ) ;
136
138
let ptr = mem:: align_of :: < T > ( ) as * mut T ;
137
139
// Don't drop the object. This `write` is equivalent to `forget`.
138
140
ptr:: write ( ptr, object) ;
@@ -156,7 +158,9 @@ impl<T> TypedArena<T> {
156
158
/// - Zero-length slices
157
159
#[ inline]
158
160
pub fn alloc_slice ( & self , slice : & [ T ] ) -> & mut [ T ]
159
- where T : Copy {
161
+ where
162
+ T : Copy ,
163
+ {
160
164
assert ! ( mem:: size_of:: <T >( ) != 0 ) ;
161
165
assert ! ( slice. len( ) != 0 ) ;
162
166
@@ -320,7 +324,10 @@ impl DroplessArena {
320
324
let ( chunk, mut new_capacity) ;
321
325
if let Some ( last_chunk) = chunks. last_mut ( ) {
322
326
let used_bytes = self . ptr . get ( ) as usize - last_chunk. start ( ) as usize ;
323
- if last_chunk. storage . reserve_in_place ( used_bytes, needed_bytes) {
327
+ if last_chunk
328
+ . storage
329
+ . reserve_in_place ( used_bytes, needed_bytes)
330
+ {
324
331
self . end . set ( last_chunk. end ( ) ) ;
325
332
return ;
326
333
} else {
@@ -356,9 +363,9 @@ impl DroplessArena {
356
363
357
364
let ptr = self . ptr . get ( ) ;
358
365
// Set the pointer past ourselves
359
- self . ptr . set ( intrinsics :: arith_offset (
360
- self . ptr . get ( ) , mem:: size_of :: < T > ( ) as isize
361
- ) as * mut u8 ) ;
366
+ self . ptr . set (
367
+ intrinsics :: arith_offset ( self . ptr . get ( ) , mem:: size_of :: < T > ( ) as isize ) as * mut u8 ,
368
+ ) ;
362
369
// Write into uninitialized memory.
363
370
ptr:: write ( ptr as * mut T , object) ;
364
371
& mut * ( ptr as * mut T )
@@ -373,7 +380,9 @@ impl DroplessArena {
373
380
/// - Zero-length slices
374
381
#[ inline]
375
382
pub fn alloc_slice < T > ( & self , slice : & [ T ] ) -> & mut [ T ]
376
- where T : Copy {
383
+ where
384
+ T : Copy ,
385
+ {
377
386
assert ! ( !mem:: needs_drop:: <T >( ) ) ;
378
387
assert ! ( mem:: size_of:: <T >( ) != 0 ) ;
379
388
assert ! ( slice. len( ) != 0 ) ;
@@ -389,7 +398,8 @@ impl DroplessArena {
389
398
unsafe {
390
399
let arena_slice = slice:: from_raw_parts_mut ( self . ptr . get ( ) as * mut T , slice. len ( ) ) ;
391
400
self . ptr . set ( intrinsics:: arith_offset (
392
- self . ptr . get ( ) , ( slice. len ( ) * mem:: size_of :: < T > ( ) ) as isize
401
+ self . ptr . get ( ) ,
402
+ ( slice. len ( ) * mem:: size_of :: < T > ( ) ) as isize ,
393
403
) as * mut u8 ) ;
394
404
arena_slice. copy_from_slice ( slice) ;
395
405
arena_slice
@@ -454,8 +464,9 @@ mod tests {
454
464
455
465
let arena = Wrap ( TypedArena :: new ( ) ) ;
456
466
457
- let result =
458
- arena. alloc_outer ( || Outer { inner : arena. alloc_inner ( || Inner { value : 10 } ) } ) ;
467
+ let result = arena. alloc_outer ( || Outer {
468
+ inner : arena. alloc_inner ( || Inner { value : 10 } ) ,
469
+ } ) ;
459
470
460
471
assert_eq ! ( result. inner. value, 10 ) ;
461
472
}
0 commit comments