bitcoinleveldb_util/
no_destructor.rs

1crate::ix!();
2
3//-------------------------------------------[.cpp/bitcoin/src/leveldb/util/no_destructor.h]
4
5/**
6  | Wraps an instance whose destructor is never
7  | called.
8  |
9  | This is intended for use with function-level
10  | static variables.
11  */
12pub struct NoDestructor<InstanceType> {
13    __remove_me__: std::marker::PhantomData<InstanceType>,
14
15    /*
16    lazy_static!{
17        /*
18        typename std::aligned_storage<sizeof(InstanceType),
19                                        alignof(InstanceType)>::type instance_storage_;
20        */
21    }
22*/
23}
24
25impl<InstanceType> NoDestructor<InstanceType> {
26
27    pub fn new<Ts>(constructor_args: Ts) -> Self {
28    
29        todo!();
30        /*
31
32
33            const_assert(sizeof(instance_storage_) >= sizeof(InstanceType),
34                      "instance_storage_ is not large enough to hold the instance");
35        const_assert(
36            alignof(decltype(instance_storage_)) >= alignof(InstanceType),
37            "instance_storage_ does not meet the instance's alignment requirement");
38        new (&instance_storage_)
39            InstanceType(std::forward<ConstructorArgTypes>(constructor_args)...);
40        */
41    }
42    
43    pub fn get(&mut self) -> *mut InstanceType {
44        
45        todo!();
46        /*
47            return reinterpret_cast<InstanceType*>(&instance_storage_);
48        */
49    }
50}