This commit applies rustfmt with rust-lang/rust's default settings to files in src/libstd *that are not involved in any currently open PR* to minimize merge conflicts. THe list of files involved in open PRs was determined by querying GitHub's GraphQL API with this script: https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8 With the list of files from the script in outstanding_files, the relevant commands were: $ find src/libstd -name '*.rs' \ | xargs rustfmt --edition=2018 --unstable-features --skip-children $ rg libstd outstanding_files | xargs git checkout -- Repeating this process several months apart should get us coverage of most of the rest of libstd. To confirm no funny business: $ git checkout $THIS_COMMIT^ $ git show --pretty= --name-only $THIS_COMMIT \ | xargs rustfmt --edition=2018 --unstable-features --skip-children $ git diff $THIS_COMMIT # there should be no difference
46 lines
1.3 KiB
Rust
46 lines
1.3 KiB
Rust
#![allow(dead_code)] // stack_guard isn't used right now on all platforms
|
|
|
|
use crate::cell::RefCell;
|
|
use crate::sys::thread::guard::Guard;
|
|
use crate::thread::Thread;
|
|
|
|
struct ThreadInfo {
|
|
stack_guard: Option<Guard>,
|
|
thread: Thread,
|
|
}
|
|
|
|
thread_local! { static THREAD_INFO: RefCell<Option<ThreadInfo>> = RefCell::new(None) }
|
|
|
|
impl ThreadInfo {
|
|
fn with<R, F>(f: F) -> Option<R>
|
|
where
|
|
F: FnOnce(&mut ThreadInfo) -> R,
|
|
{
|
|
THREAD_INFO
|
|
.try_with(move |c| {
|
|
if c.borrow().is_none() {
|
|
*c.borrow_mut() =
|
|
Some(ThreadInfo { stack_guard: None, thread: Thread::new(None) })
|
|
}
|
|
f(c.borrow_mut().as_mut().unwrap())
|
|
})
|
|
.ok()
|
|
}
|
|
}
|
|
|
|
pub fn current_thread() -> Option<Thread> {
|
|
ThreadInfo::with(|info| info.thread.clone())
|
|
}
|
|
|
|
pub fn stack_guard() -> Option<Guard> {
|
|
ThreadInfo::with(|info| info.stack_guard.clone()).and_then(|o| o)
|
|
}
|
|
|
|
pub fn set(stack_guard: Option<Guard>, thread: Thread) {
|
|
THREAD_INFO.with(|c| assert!(c.borrow().is_none()));
|
|
THREAD_INFO.with(move |c| *c.borrow_mut() = Some(ThreadInfo { stack_guard, thread }));
|
|
}
|
|
|
|
pub fn reset_guard(stack_guard: Option<Guard>) {
|
|
THREAD_INFO.with(move |c| c.borrow_mut().as_mut().unwrap().stack_guard = stack_guard);
|
|
}
|