Skip to content

Replace ancient lazy_static crate with once_cell or const slices#471

Merged
Swatinem merged 1 commit intogetsentry:masterfrom
MarijnS95:once-cell
Jun 13, 2022
Merged

Replace ancient lazy_static crate with once_cell or const slices#471
Swatinem merged 1 commit intogetsentry:masterfrom
MarijnS95:once-cell

Conversation

@MarijnS95
Copy link
Contributor

Piggybacking on the motivation in winit: lazy_static! is a macro whereas once_cell achieves the same using generics. Its implementation has also been proposed for inclusion in std, making it easier to switch to a standardized version if/when that happens. The author of that winit PR is making this change to many more crates, slowly turning the scales in favour of once_cell in most dependency trees. Furthermore lazy_static hasn't published any updates for 3 years.

See also the once_cell F.A.Q..

In addition "constant" Vector allocations don't need to be wrapped in a lazy_static! macro call at all but can be replaced with true const slices (or const sized arrays, but those are slightly more tedious to construct).

@codecov-commenter
Copy link

Codecov Report

Merging #471 (f04cedc) into master (02c6775) will increase coverage by 0.16%.
The diff coverage is 100.00%.

❗ Current head f04cedc differs from pull request most recent head 2b216e6. Consider uploading reports for the commit 2b216e6 to get more accurate results

@@            Coverage Diff             @@
##           master     #471      +/-   ##
==========================================
+ Coverage   80.53%   80.69%   +0.16%     
==========================================
  Files          73       74       +1     
  Lines        8475     8549      +74     
==========================================
+ Hits         6825     6899      +74     
  Misses       1650     1650              

Piggybacking on the [motivation in winit]: `lazy_static!` is a macro
whereas `once_cell` achieves the same using generics.  Its
implementation has also been [proposed for inclusion in `std`], making
it easier to switch to a standardized version if/when that happens.  The
author of that winit PR is making this change to many more crates,
slowly turning the scales in favour of `once_cell` in most dependency
trees.  Furthermore `lazy_static` hasn't published any updates for 3
years.

See also [the `once_cell` F.A.Q.].

In addition "constant" `Vec`tor allocations don't need to be wrapped in
a `lazy_static!` macro call at all but can be replaced with true `const`
slices (or `const` sized arrays, but those are slightly more tedious to
construct).

[motivation in winit]: rust-windowing/winit#2313
[proposed for inclusion in `std`]: rust-lang/rust#74465
[the `once_cell` F.A.Q.]: https://docs.rs/once_cell/latest/once_cell/#faq
Copy link
Contributor

@Swatinem Swatinem left a comment

Choose a reason for hiding this comment

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

lgtm, thanks!

I have been following this for quite a while, but rather waiting for it to stabilize in std.

"anyhow::",
"log::",
];
const WELL_KNOWN_SYS_MODULES: &[&str] = &[
Copy link
Contributor

Choose a reason for hiding this comment

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

nice! this could have been done independently anyway. No reason for these being Vecs

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yup, exactly!

@Swatinem Swatinem merged commit 4b04b44 into getsentry:master Jun 13, 2022
@MarijnS95
Copy link
Contributor Author

I have been following this for quite a while, but rather waiting for it to stabilize in std.

Yeah, not sure when it lands but this brings us a step closer at least :)

@MarijnS95 MarijnS95 deleted the once-cell branch June 13, 2022 08:58
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.

3 participants