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}