use crate::cell::RefCell; use crate::collections::HashMap; use crate::thread_local; #[test] fn smoke() { fn square(i: i32) -> i32 { i * i } thread_local!(static FOO: i32 = square(3)); FOO.with(|f| { assert_eq!(*f, 9); }); } #[test] fn hashmap() { fn map() -> RefCell> { let mut m = HashMap::new(); m.insert(1, 2); RefCell::new(m) } thread_local!(static FOO: RefCell> = map()); FOO.with(|map| { assert_eq!(map.borrow()[&1], 2); }); } #[test] fn refcell_vec() { thread_local!(static FOO: RefCell> = RefCell::new(vec![1, 2, 3])); FOO.with(|vec| { assert_eq!(vec.borrow().len(), 3); vec.borrow_mut().push(4); assert_eq!(vec.borrow()[3], 4); }); }