Patch lazy_static to std::sync::LazyLock

This does remove the no-`std` variant of `lazy_static`, but that was unused and
`std` was not additively implemented (making it poor to work with).

This primarily tidies our `deny.toml` with one less `git` dependency.
This commit is contained in:
Luke Parker
2025-12-11 03:48:33 -05:00
parent 5a3cf1f2be
commit ee9b9778b5
5 changed files with 34 additions and 8 deletions

View File

@@ -0,0 +1,16 @@
[package]
name = "lazy_static"
version = "1.99.0"
description = "`lazy_static` which patches to `std::sync::LazyLock`"
license = "MIT"
repository = "https://github.com/serai-dex/serai/tree/develop/patches/lazy_static"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
keywords = []
edition = "2021"
rust-version = "1.80"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[workspace]

View File

@@ -0,0 +1,14 @@
#[macro_export]
macro_rules! lazy_static {
($($(#[$attr: meta])* $vis: vis static ref $name: ident: $type: ty = $value: expr;)*) => {
$(
$(#[$attr])*
$vis static $name: std::sync::LazyLock<$type> = std::sync::LazyLock::new(|| $value);
)*
}
}
/// Explicitly initialize a static declared with [`lazy_static`].
pub fn initialize<T, F: Fn() -> T>(lazy: &std::sync::LazyLock<T, F>) {
std::sync::LazyLock::force(lazy);
}