cluStaticData/once_const_static/
generic.rs1
2use crate::err::IgnoreInitErr;
3use crate::err::StaticErr;
4
5pub trait GenericStaticData<T> {
6 fn set(&self, v: T) -> Result<(), StaticErr<T>>;
7 fn replace(&self, v: T) -> Result<T, StaticErr<T>>;
8
9 unsafe fn unsafe_replace(&self, v: T) -> T;
10
11 fn get<'a>(&'a self) -> &'a T;
12
13
14 fn ignore_initialize(&self) -> Result<(), IgnoreInitErr>;
15 fn ignore_initialize_dont_result(&self);
16
17
18 fn is_init_state(&self) -> bool;
19
20 #[inline]
21 fn is_noinit_state(&self) -> bool {
22 !self.is_init_state()
23 }
24}
25
26pub trait UnsafeGenericStaticData<T> {
27 unsafe fn set_box(&self, v: Box<T>) -> Result<(), StaticErr<Box<T>>>;
28 unsafe fn set_raw(&self, v: T) -> Result<(), StaticErr<T>>;
29}
30