use crate::ptr; | |
pub type Key = usize; | |
type Dtor = unsafe extern "C" fn(*mut u8); | |
static mut STORAGE: crate::vec::Vec<(*mut u8, Option<Dtor>)> = Vec::new(); | |
#[inline] | |
pub unsafe fn create(dtor: Option<Dtor>) -> Key { | |
let key = STORAGE.len(); | |
STORAGE.push((ptr::null_mut(), dtor)); | |
key | |
} | |
#[inline] | |
pub unsafe fn set(key: Key, value: *mut u8) { | |
STORAGE[key].0 = value; | |
} | |
#[inline] | |
pub unsafe fn get(key: Key) -> *mut u8 { | |
STORAGE[key].0 | |
} | |
#[inline] | |
pub unsafe fn destroy(_key: Key) { | |
} |