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}