Amanieu / parking_lot

Compact and efficient synchronization primitives for Rust. Also provides an API for creating custom synchronization primitives.
Apache License 2.0
2.74k stars 216 forks source link

[Feature Request] Create `OnceLock` and `OnceCell` using this library's Once #440

Open BLucky-gh opened 6 months ago

BLucky-gh commented 6 months ago

Since unlike Mutex, you can't specify which underlying Once to use with std::sync::OnceLock and std::cell::OnceCell, I would either have to roll my own, which seems wasteful and will not update when the std versions get changed, or manage the value and the Once separately like in the Once example, which is error-prone and puts the burden of upholding invariants on the developer

Amanieu commented 6 months ago

I would be happy to accept a PR for it, but it is not something I have time to work on myself.

BLucky-gh commented 6 months ago

I could try making a PR for it, but it will probably be almost entirely just a copy paste of the std implementation and just changing the import from std::sync::Once to parking_lot::Once, would that be any good?

Amanieu commented 6 months ago

That's fine.