Skip to content

Conversation

noritada
Copy link
Contributor

@noritada noritada commented Nov 3, 2024

This PR suggests std::sync::LazyLock instead of once_cell::sync::Lazy.

This issue was discussed three months ago right after the stabilization of std::sync::LazyLock in Rust 1.80,
and since two more minor versions of Rust have been released since then,
I think it's about time.

Many thanks,

Closes #1217

@nyurik
Copy link
Contributor

nyurik commented Jan 25, 2025

thx!! Do we really want to mention 3rd party crates when the exact same functionality is available in stdlib?

README.md Outdated
Comment on lines 83 to 86
they're used from inside a helper function. Instead, we recommend using
[`std::sync::LazyLock`] stabilized in [Rust 1.80], the [`once_cell`] crate, or
the [`lazy_static`] crate to ensure that regular expressions are compiled
exactly once. For example:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason not to just use the LazyLock option? As a user without much idea on the history, it would be nice if there was just one standard and recommended option, the stdlib one.

Also the one that clippy recommends: https://rust-lang.github.io/rust-clippy/master/index.html#non_std_lazy_statics

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gibfahn
Thanks for your comment.
As regex and once_cell can be used with no_std where std::sync::LazyLock is not available, I thought it would be a good idea to leave mention of once_cell.
Since I have not tried it, if I am wrong please let me know.

@gibfahn
Copy link

gibfahn commented Jan 31, 2025

I found this PR (eventually) because clippy now has a pedantic lint against lazy_static: https://rust-lang.github.io/rust-clippy/master/index.html#non_std_lazy_statics

Would be nice to get this landed so it's easy for folks who see that lint to update.

shilangyu

This comment was marked as spam.

This seems fine now given that `LazyLock` has been stabilized for quite
some time.

Closes rust-lang#1217, PR rust-lang#1235
@BurntSushi BurntSushi force-pushed the feat/switch_once_cell_suggestion_to_lazy_lock branch from b9637b9 to b80e391 Compare August 24, 2025 12:10
@BurntSushi BurntSushi merged commit 16d47c5 into rust-lang:master Aug 24, 2025
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

switch once_cell recommendation to std::sync::LazyLock
5 participants