-
Couldn't load subscription status.
- Fork 201
Description
lazy_static!, while a declarative macro, is a macro nonetheless. It can add quite a bit of additional compilation time cost. once_cell::sync::Lazy does the same thing with generics, and can be used more flexibly (i.e. non-static lazily initialised values), and has been proposed to be added to std: rust-lang/rfcs#2788.
Famous Rust projects already did the transition, such as:
- Replace lazy_static with once_cell tokio-rs/tokio#3187
- Migrate from lazy_static to once_cell tokio-rs/tracing#2147
Edit: Since the opening of this issue, a lot of things has happened in Rust, and with Rust 1.80.0, std::sync::LazyLock has been stabilised (see https://doc.rust-lang.org/std/sync/struct.LazyLock.html). There is no need anymore to rely on a crate to lazy initialised a value that is thread safe, everything can now be managed from Rust std 🚀