• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..15-Mar-2021-

src/H15-Mar-2021-1,5841,326

.cargo-checksum.jsonH A D15-Mar-2021657 11

Cargo.tomlH A D15-Mar-2021896 2623

LICENSE-APACHEH A D15-Mar-202110.6 KiB202169

LICENSE-MITH A D15-Mar-20211 KiB2622

README.mdH A D15-Mar-20212.1 KiB5232

README.md

1Generic `Atomic<T>` for Rust
2============================
3
4[![Build Status](https://travis-ci.org/Amanieu/atomic-rs.svg?branch=master)](https://travis-ci.org/Amanieu/atomic-rs) [![Crates.io](https://img.shields.io/crates/v/atomic.svg)](https://crates.io/crates/atomic)
5
6A Rust library which provides a generic `Atomic<T>` type for all `T: Copy` types, unlike the standard library which only provides a few fixed atomic types (`AtomicBool`, `AtomicIsize`, `AtomicUsize`, `AtomicPtr`).
7
8This library will use native atomic instructions if possible, and will otherwise fall back to a lock-based mechanism. You can use the `Atomic::<T>::is_lock_free()` function to check whether native atomic operations are supported for a given type. Note that a type must have a power-of-2 size and alignment in order to be used by native atomic instructions.
9
10Only a subset of native atomic operations are supported on stable Rust (types which are the same size as `AtomicUsize`), but you can use the `nightly` Cargo feature on a nightly compiler to enable the full range of native atomic instructions. The `nightly` feature also enables `const fn` constructors which allow you to initialize static atomic variables.
11
12This crate uses `#![no_std]` and only depends on libcore.
13
14[Documentation](https://amanieu.github.io/atomic-rs/atomic/index.html)
15
16## Usage
17
18Add this to your `Cargo.toml`:
19
20```toml
21[dependencies]
22atomic = "0.4"
23```
24
25and this to your crate root:
26
27```rust
28extern crate atomic;
29```
30
31To enable nightly-only features, add this to your `Cargo.toml` instead:
32
33```toml
34[dependencies]
35atomic = {version = "0.4", features = ["nightly"]}
36```
37
38## License
39
40Licensed under either of
41
42 * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
43 * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
44
45at your option.
46
47### Contribution
48
49Unless you explicitly state otherwise, any contribution intentionally submitted
50for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
51additional terms or conditions.
52