cluStaticData/once_const_static/
generic.rs

1
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