# tagptr
Strongly typed marked pointers for storing bit patterns (_tags_) alongside raw pointers
for concurrent programming with atomic operations.
[](https://github.com/oliver-giersch/tagptr/actions/workflows/rust.yml)
[](https://crates.io/crates/tagptr)
[](https://docs.rs/tagptr)
[](https://github.com/oliver-giersch/tagptr)
## Usage
Add the following to your `Cargo.toml`
```
[dependencies]
tagptr = "0.2.0"
```
## Motivation
Most atomic CPU instructions only work with register-sized memory words (e.g., 32-bit or 64-bit).
Many low-level concurrent algorithms thus need to store aditional data (_tags_) in the unused lower
bits of pointers to referenced data objects.
This crate provides thin and efficient abstractions for working with such pointers.
## License
`tagptr` is distributed under the terms of both the MIT license and the
Apache License (Version 2.0).
See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) for details.