bivec/core/
construct.rs

1use super::*; 
2
3impl <F, S> BiVec<F, S> {
4    pub fn new() -> Self {
5        Self {
6            first: NonNull::dangling(),
7            second: NonNull::dangling(),
8            capacity: 0, 
9            len: 0,
10        } 
11    } 
12    pub fn with_capacity(capacity: usize) -> Self { 
13        let (first, second); 
14        if core::mem::size_of::<F>() == 0 {
15            first = NonNull::dangling(); 
16        } else {
17            let layout = core::alloc::Layout::array::<F>(capacity).unwrap(); 
18            let alloc = unsafe { std::alloc::alloc(layout) }; 
19            first = NonNull::new(alloc as *mut F).unwrap(); 
20        }
21        if core::mem::size_of::<S>() == 0 {
22            second = NonNull::dangling(); 
23        } else {
24            let layout = core::alloc::Layout::array::<S>(capacity).unwrap(); 
25            let alloc = unsafe { std::alloc::alloc(layout) }; 
26            second = NonNull::new(alloc as *mut S).unwrap();  
27        }
28        Self {
29            first, 
30            second, 
31            capacity, 
32            len: 0, 
33        }
34    }
35}