Skip to content

Commit f15a9a3

Browse files
refactor: Replace lazy_static with std::sync::LazyLock (#827)
* refactor: Replace lazy_static with std::sync::LazyLock std::cell::LazyCell and std::sync::LazyLock were stabilized in Rust 1.80.0. We can now use the standard library types instead of the lazy_static crate. * fix: Fix new Clippy errors introduced in Rust 1.80.0 * chore: Bump Rust toolchain version in workflows * chore: Bump cargo-udeps to 0.1.50 in build workflow * chore: Update PR link in changelog * chore: Mark change as breaking in changelog * Apply suggestion Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * fix: Use correct link format in changelogs --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com>
1 parent d33dce7 commit f15a9a3

File tree

22 files changed

+107
-86
lines changed

22 files changed

+107
-86
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ env:
1717
CARGO_TERM_COLOR: always
1818
CARGO_INCREMENTAL: '0'
1919
CARGO_PROFILE_DEV_DEBUG: '0'
20-
RUST_TOOLCHAIN_VERSION: "1.79.0"
20+
RUST_TOOLCHAIN_VERSION: "1.80.0"
2121
RUSTFLAGS: "-D warnings"
2222
RUSTDOCFLAGS: "-D warnings"
2323
RUST_LOG: "info"
@@ -37,7 +37,7 @@ jobs:
3737
- uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
3838
with:
3939
key: udeps
40-
- run: cargo install --locked cargo-udeps@0.1.47
40+
- run: cargo install --locked cargo-udeps@0.1.50
4141
- run: cargo udeps --all-targets
4242

4343
run_cargodeny:

.github/workflows/pr_pre-commit.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
env:
88
CARGO_TERM_COLOR: always
9-
RUST_TOOLCHAIN_VERSION: "1.79.0"
9+
RUST_TOOLCHAIN_VERSION: "1.80.0"
1010

1111
jobs:
1212
pre-commit:

Cargo.lock

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ json-patch = "2.0.0"
3232
k8s-openapi = { version = "0.22.0", default-features = false, features = ["schemars", "v1_30"] }
3333
# We use rustls instead of openssl for easier portablitly, e.g. so that we can build stackablectl without the need to vendor (build from source) openssl
3434
kube = { version = "0.92.1", default-features = false, features = ["client", "jsonpatch", "runtime", "derive", "rustls-tls"] }
35-
lazy_static = "1.5.0"
3635
opentelemetry = "0.23.0"
3736
opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"] }
3837
opentelemetry-appender-tracing = "0.4.0"

crates/k8s-version/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Changed
8+
9+
- Replace `lazy_static` with `std::cell::LazyCell` ([#827]).
10+
11+
[#827]: https://github.com/stackabletech/operator-rs/pull/827
12+
713
## [0.1.1] - 2024-07-10
814

915
### Changed

crates/k8s-version/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ darling = ["dep:darling"]
1111

1212
[dependencies]
1313
darling = { workspace = true, optional = true }
14-
lazy_static.workspace = true
1514
regex.workspace = true
1615
snafu.workspace = true
1716

crates/k8s-version/src/group.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
use std::{fmt, ops::Deref, str::FromStr};
1+
use std::{fmt, ops::Deref, str::FromStr, sync::LazyLock};
22

3-
use lazy_static::lazy_static;
43
use regex::Regex;
54
use snafu::{ensure, Snafu};
65

76
const MAX_GROUP_LENGTH: usize = 253;
87

9-
lazy_static! {
10-
static ref API_GROUP_REGEX: Regex =
11-
Regex::new(r"^(?:(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.?)+$")
12-
.expect("failed to compile API group regex");
13-
}
8+
static API_GROUP_REGEX: LazyLock<Regex> = LazyLock::new(|| {
9+
Regex::new(r"^(?:(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.?)+$")
10+
.expect("failed to compile API group regex")
11+
});
1412

1513
/// Error variants which can be encountered when creating a new [`Group`] from
1614
/// unparsed input.

crates/k8s-version/src/level.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@ use std::{
44
num::ParseIntError,
55
ops::{Add, AddAssign, Sub, SubAssign},
66
str::FromStr,
7+
sync::LazyLock,
78
};
89

9-
use lazy_static::lazy_static;
1010
use regex::Regex;
1111
use snafu::{OptionExt, ResultExt, Snafu};
1212

1313
#[cfg(feature = "darling")]
1414
use darling::FromMeta;
1515

16-
lazy_static! {
17-
static ref LEVEL_REGEX: Regex = Regex::new(r"^(?P<identifier>[a-z]+)(?P<version>\d+)$")
18-
.expect("failed to compile level regex");
19-
}
16+
static LEVEL_REGEX: LazyLock<Regex> = LazyLock::new(|| {
17+
Regex::new(r"^(?P<identifier>[a-z]+)(?P<version>\d+)$").expect("failed to compile level regex")
18+
});
2019

2120
/// Error variants which can be encountered when creating a new [`Level`] from
2221
/// unparsed input.

crates/k8s-version/src/version.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use std::{cmp::Ordering, fmt::Display, num::ParseIntError, str::FromStr};
1+
use std::{cmp::Ordering, fmt::Display, num::ParseIntError, str::FromStr, sync::LazyLock};
22

3-
use lazy_static::lazy_static;
43
use regex::Regex;
54
use snafu::{OptionExt, ResultExt, Snafu};
65

@@ -9,11 +8,10 @@ use darling::FromMeta;
98

109
use crate::{Level, ParseLevelError};
1110

12-
lazy_static! {
13-
static ref VERSION_REGEX: Regex =
14-
Regex::new(r"^v(?P<major>\d+)(?P<level>[a-z0-9][a-z0-9-]{0,60}[a-z0-9])?$")
15-
.expect("failed to compile version regex");
16-
}
11+
static VERSION_REGEX: LazyLock<Regex> = LazyLock::new(|| {
12+
Regex::new(r"^v(?P<major>\d+)(?P<level>[a-z0-9][a-z0-9-]{0,60}[a-z0-9])?$")
13+
.expect("failed to compile version regex")
14+
});
1715

1816
/// Error variants which can be encountered when creating a new [`Version`] from
1917
/// unparsed input.

crates/stackable-operator/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Changed
8+
9+
- BREAKING: Replace `lazy_static` with `std::cell::LazyCell` ([#827]).
10+
11+
[#827]: https://github.com/stackabletech/operator-rs/pull/827
12+
713
## [0.71.0] - 2024-07-29
814

915
### Added

0 commit comments

Comments
 (0)