#lazy #initialization #no-std #one-time #multi-threading

no-std conquer-once

Synchronization primitives for lazy and one-time initialization

7 releases

new 0.3.1 Nov 24, 2020
0.3.0 Nov 21, 2020
0.2.1 Jul 10, 2020
0.2.0 Dec 24, 2019
0.1.2 Aug 20, 2019

#32 in Concurrency

Download history 293/week @ 2020-08-07 406/week @ 2020-08-14 469/week @ 2020-08-21 448/week @ 2020-08-28 845/week @ 2020-09-04 809/week @ 2020-09-11 1031/week @ 2020-09-18 863/week @ 2020-09-25 521/week @ 2020-10-02 633/week @ 2020-10-09 413/week @ 2020-10-16 871/week @ 2020-10-23 1136/week @ 2020-10-30 546/week @ 2020-11-06 636/week @ 2020-11-13 1105/week @ 2020-11-20

3,180 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

68KB
899 lines

conquer-once

Synchronization primitives for lazy and one-time initialization using low-level blocking mechanisms with clear distinction between blocking and non-blocking methods and additional support for #[no_std] environments when using spin-locks.

Build Status Latest version Documentation License Rust 1.36+

Usage

To use this crate, add the following to your Cargo.toml

[dependencies]
conquer-once = "0.3.0"

Minimum Supported Rust Version (MSRV)

The minimum supported Rust version for this crate is 1.36.0.

Cargo Features

By default, conquer-once enables the std feature. With this feature enabled, the crate exports the Lazy, Once and OnceCell types that use an OS and standard library reliant blocking mechanism. Without this feature, the crate is #[no_std] environment compatible, but only exports the types in the crate's spin sub-module, which use spin-locks.

The feature can be disabled by specifying the dependency as follows:

[dependencies.conquer-once]
version = "0.3.0"
use-default-features = false

License

conquer-once is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

Dependencies

~36KB