solana_stable_layout/
stable_ref_cell.rs1#[cfg(test)]
4mod tests {
5 use std::{
6 cell::RefCell,
7 mem::{align_of, size_of},
8 };
9
10 #[test]
11 fn test_memory_layout() {
12 assert_eq!(align_of::<RefCell<i32>>(), 8);
13 assert_eq!(size_of::<RefCell<i32>>(), 8 + 4 + 4);
14
15 let value = 42;
16 let refcell = RefCell::new(value);
17 let _borrow = refcell.borrow(); let addr_refcell = &refcell as *const _ as usize;
20 let addr_borrow = addr_refcell;
21 let addr_value = addr_refcell + 8;
22 assert_eq!(unsafe { *(addr_borrow as *const isize) }, 1);
23 assert_eq!(unsafe { *(addr_value as *const i32) }, 42);
24 }
25}