File tree 2 files changed +8
-8
lines changed
2 files changed +8
-8
lines changed Original file line number Diff line number Diff line change 5
5
use core:: mem:: MaybeUninit ;
6
6
use core:: slice;
7
7
8
- /// Split an uninitialized byte slice into initialized and uninitialized parts.
8
+ /// Split an uninitialized slice into initialized and uninitialized parts.
9
9
///
10
10
/// # Safety
11
11
///
12
- /// At least `init` bytes must be initialized.
12
+ /// At least `init` items must be initialized.
13
13
#[ inline]
14
- pub ( super ) unsafe fn split_init (
15
- buf : & mut [ MaybeUninit < u8 > ] ,
14
+ pub ( super ) unsafe fn split_init < T > (
15
+ buf : & mut [ MaybeUninit < T > ] ,
16
16
init : usize ,
17
- ) -> ( & mut [ u8 ] , & mut [ MaybeUninit < u8 > ] ) {
17
+ ) -> ( & mut [ T ] , & mut [ MaybeUninit < T > ] ) {
18
18
let ( init, uninit) = buf. split_at_mut ( init) ;
19
- let init = slice:: from_raw_parts_mut ( init. as_mut_ptr ( ) as * mut u8 , init. len ( ) ) ;
19
+ let init = slice:: from_raw_parts_mut ( init. as_mut_ptr ( ) . cast :: < T > ( ) , init. len ( ) ) ;
20
20
( init, uninit)
21
21
}
Original file line number Diff line number Diff line change @@ -437,6 +437,7 @@ fn test_epoll_layouts() {
437
437
438
438
mod buf {
439
439
use super :: Event ;
440
+ use crate :: buffer:: split_init;
440
441
#[ cfg( feature = "alloc" ) ]
441
442
use alloc:: vec:: Vec ;
442
443
use core:: mem:: MaybeUninit ;
@@ -501,8 +502,7 @@ mod buf {
501
502
}
502
503
503
504
unsafe fn filled ( self , count : usize ) -> Self :: Out {
504
- let filled = & mut self [ ..count] ;
505
- unsafe { core:: mem:: transmute :: < & mut [ MaybeUninit < Event > ] , & mut [ Event ] > ( filled) }
505
+ unsafe { split_init ( self , count) } . 0
506
506
}
507
507
}
508
508
}
You can’t perform that action at this time.
0 commit comments