1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
pub fn remember<'a, T>(data: &'a T) -> &'static T {
unsafe {
std::mem::transmute(data)
}
}
pub fn remember_mut<'a, 'b, T>(data: &'a mut T) -> &'b mut T {
unsafe {
std::mem::transmute(data)
}
}
#[cfg(test)]
mod tests {
use crate::remember;
#[test]
fn test_remember() {
let mut data = 1;
let refer = &data;
let refer = remember(refer);
let mut_refer = &mut data;
assert_eq!(*refer, 1);
*mut_refer = 2;
assert_eq!(*refer, 2);
}
}