use cell::RefCell;
use thread::Thread;
-use thread::LocalKeyState;
struct ThreadInfo {
stack_guard: Option<usize>,
impl ThreadInfo {
fn with<R, F>(f: F) -> Option<R> where F: FnOnce(&mut ThreadInfo) -> R {
- if THREAD_INFO.state() == LocalKeyState::Destroyed {
- return None
- }
-
- THREAD_INFO.with(move |c| {
+ THREAD_INFO.try_with(move |c| {
if c.borrow().is_none() {
*c.borrow_mut() = Some(ThreadInfo {
stack_guard: None,
thread: Thread::new(None),
})
}
- Some(f(c.borrow_mut().as_mut().unwrap()))
- })
+ f(c.borrow_mut().as_mut().unwrap())
+ }).ok()
}
}