Skip to content

Commit 91e1900

Browse files
authored
Merge pull request #1388 from dtolnay/oncelock
Replace once_cell with standard library OnceLock
2 parents 7d479c7 + 55903ce commit 91e1900

File tree

13 files changed

+12
-174
lines changed

13 files changed

+12
-174
lines changed

BUCK

-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ rust_library(
7373
deps = [
7474
"//third-party:cc",
7575
"//third-party:codespan-reporting",
76-
"//third-party:once_cell",
7776
"//third-party:proc-macro2",
7877
"//third-party:quote",
7978
"//third-party:scratch",

BUILD

-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ rust_library(
6969
deps = [
7070
"@crates.io//:cc",
7171
"@crates.io//:codespan-reporting",
72-
"@crates.io//:once_cell",
7372
"@crates.io//:proc-macro2",
7473
"@crates.io//:quote",
7574
"@crates.io//:scratch",

MODULE.bazel.lock

+1-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/build/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ experimental-async-fn = []
2121
[dependencies]
2222
cc = "1.0.83"
2323
codespan-reporting = "0.11.1"
24-
once_cell = "1.18"
2524
proc-macro2 = { version = "1.0.74", default-features = false, features = ["span-locations"] }
2625
quote = { version = "1.0.35", default-features = false }
2726
scratch = "1.0.5"

gen/build/src/cargo.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use crate::gen::{CfgEvaluator, CfgResult};
2-
use once_cell::sync::OnceCell;
32
use std::borrow::Borrow;
43
use std::cmp::Ordering;
54
use std::collections::{BTreeMap as Map, BTreeSet as Set};
65
use std::env;
6+
use std::sync::OnceLock;
77

8-
static ENV: OnceCell<CargoEnv> = OnceCell::new();
8+
static ENV: OnceLock<CargoEnv> = OnceLock::new();
99

1010
struct CargoEnv {
1111
features: Set<Name>,

gen/build/src/cfg.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,11 @@ mod r#impl {
344344
use crate::intern::{intern, InternedString};
345345
use crate::syntax::map::UnorderedMap as Map;
346346
use crate::vec::{self, InternedVec as _};
347-
use once_cell::sync::Lazy;
348347
use std::cell::RefCell;
349348
use std::fmt::{self, Debug};
350349
use std::marker::PhantomData;
351350
use std::ops::{Deref, DerefMut};
352-
use std::sync::{PoisonError, RwLock};
351+
use std::sync::{OnceLock, PoisonError, RwLock};
353352

354353
struct CurrentCfg {
355354
include_prefix: InternedString,
@@ -378,7 +377,10 @@ mod r#impl {
378377
}
379378
}
380379

381-
static CURRENT: Lazy<RwLock<CurrentCfg>> = Lazy::new(|| RwLock::new(CurrentCfg::default()));
380+
fn current() -> &'static RwLock<CurrentCfg> {
381+
static CURRENT: OnceLock<RwLock<CurrentCfg>> = OnceLock::new();
382+
CURRENT.get_or_init(|| RwLock::new(CurrentCfg::default()))
383+
}
382384

383385
thread_local! {
384386
// FIXME: If https://github.com/rust-lang/rust/issues/77425 is resolved,
@@ -401,7 +403,7 @@ mod r#impl {
401403

402404
impl<'a> Cfg<'a> {
403405
fn current() -> super::Cfg<'a> {
404-
let current = CURRENT.read().unwrap_or_else(PoisonError::into_inner);
406+
let current = current().read().unwrap_or_else(PoisonError::into_inner);
405407
let include_prefix = current.include_prefix.str();
406408
let exported_header_dirs = current.exported_header_dirs.vec();
407409
let exported_header_prefixes = current.exported_header_prefixes.vec();
@@ -481,7 +483,7 @@ mod r#impl {
481483
doxygen,
482484
marker: _,
483485
} = cfg;
484-
let mut current = CURRENT.write().unwrap_or_else(PoisonError::into_inner);
486+
let mut current = current().write().unwrap_or_else(PoisonError::into_inner);
485487
current.include_prefix = intern(include_prefix);
486488
current.exported_header_dirs = vec::intern(exported_header_dirs);
487489
current.exported_header_prefixes = vec::intern(exported_header_prefixes);

gen/build/src/intern.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::syntax::set::UnorderedSet as Set;
2-
use once_cell::sync::OnceCell;
3-
use std::sync::{Mutex, PoisonError};
2+
use std::sync::{Mutex, OnceLock, PoisonError};
43

54
#[derive(Copy, Clone, Default)]
65
pub(crate) struct InternedString(&'static str);
@@ -12,7 +11,7 @@ impl InternedString {
1211
}
1312

1413
pub(crate) fn intern(s: &str) -> InternedString {
15-
static INTERN: OnceCell<Mutex<Set<&'static str>>> = OnceCell::new();
14+
static INTERN: OnceLock<Mutex<Set<&'static str>>> = OnceLock::new();
1615

1716
let mut set = INTERN
1817
.get_or_init(|| Mutex::new(Set::new()))

third-party/BUCK

-29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

third-party/Cargo.lock

-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

third-party/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ rust-version = "1.77"
1010
cc = "1.0.83"
1111
clap = { version = "4", default-features = false, features = ["error-context", "help", "std", "usage"] }
1212
codespan-reporting = "0.11.1"
13-
once_cell = "1.9"
1413
proc-macro2 = { version = "1.0.58", features = ["span-locations"] }
1514
quote = "1.0.4"
1615
scratch = "1"

third-party/bazel/BUILD.bazel

-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

third-party/bazel/BUILD.once_cell-1.20.2.bazel

-87
This file was deleted.

third-party/bazel/defs.bzl

-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)