2020-07-04 18:10:33 +00:00
|
|
|
# DashMap
|
2019-08-25 17:53:35 +00:00
|
|
|
|
2019-08-26 18:20:31 +00:00
|
|
|
Blazingly fast concurrent map in Rust.
|
|
|
|
|
2019-12-06 15:10:52 +00:00
|
|
|
DashMap is an implementation of a concurrent associative array/hashmap in Rust.
|
|
|
|
|
|
|
|
DashMap tries to implement an easy to use API similar to `std::collections::HashMap`
|
|
|
|
with some slight changes to handle concurrency.
|
|
|
|
|
|
|
|
DashMap tries to be very simple to use and to be a direct replacement for `RwLock<HashMap<K, V>>`.
|
|
|
|
To accomplish these all methods take `&self` instead modifying methods taking `&mut self`.
|
|
|
|
This allows you to put a DashMap in an `Arc<T>` and share it between threads while being able to modify it.
|
|
|
|
|
|
|
|
DashMap puts great effort into performance and aims to be as fast as possible.
|
|
|
|
If you have any suggestions or tips do not hesitate to open an issue or a PR.
|
|
|
|
|
2020-02-06 13:39:05 +00:00
|
|
|
[Documentation](https://docs.rs/dashmap)
|
|
|
|
|
2019-08-29 15:31:25 +00:00
|
|
|
[![version](https://img.shields.io/crates/v/dashmap)](https://crates.io/crates/dashmap)
|
2019-08-26 18:20:31 +00:00
|
|
|
|
2019-08-29 15:36:03 +00:00
|
|
|
[![downloads](https://img.shields.io/crates/d/dashmap)](https://crates.io/crates/dashmap)
|
2019-08-26 18:20:31 +00:00
|
|
|
|
2020-08-11 14:32:22 +00:00
|
|
|
[![xscode](https://img.shields.io/badge/available%20on-xs%3Acode-blue?style=?style=plastic&logo=appveyor&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////////VXz1bAAAAAJ0Uk5T/wDltzBKAAAAlUlEQVR42uzXSwqAMAwE0Mn9L+3Ggtgkk35QwcnSJo9S+yGwM9DCooCbgn4YrJ4CIPUcQF7/XSBbx2TEz4sAZ2q1RAECBAiYBlCtvwN+KiYAlG7UDGj59MViT9hOwEqAhYCtAsUZvL6I6W8c2wcbd+LIWSCHSTeSAAECngN4xxIDSK9f4B9t377Wd7H5Nt7/Xz8eAgwAvesLRjYYPuUAAAAASUVORK5CYII=)](https://xscode.com/xacrimon/dashmap)
|
2020-08-11 14:24:01 +00:00
|
|
|
|
2020-01-14 18:34:03 +00:00
|
|
|
## Cargo features
|
|
|
|
|
2020-03-27 10:21:48 +00:00
|
|
|
- `no_std` - Enable no_std + alloc support.
|
|
|
|
|
2020-01-14 18:34:03 +00:00
|
|
|
- `serde` - Enables serde support.
|
|
|
|
|
2020-01-15 00:32:17 +00:00
|
|
|
- `raw-api` - Enables the unstable raw-shard api.
|
|
|
|
|
2020-08-11 14:24:01 +00:00
|
|
|
## Support me
|
2020-03-27 00:35:41 +00:00
|
|
|
|
|
|
|
[![Foo](https://c5.patreon.com/external/logo/become_a_patron_button@2x.png)](https://patreon.com/acrimon)
|
|
|
|
|
|
|
|
Creating and testing open-source software like DashMap takes up a large portion of my time
|
|
|
|
and comes with costs such as test hardware. Please consider supporting me and everything I make for the public
|
|
|
|
to enable me to continue doing this.
|
|
|
|
|
|
|
|
If you want to support me please head over and take a look at my [patreon](https://www.patreon.com/acrimon).
|
|
|
|
|
2019-12-06 15:10:52 +00:00
|
|
|
## Contributing
|
2019-12-06 15:30:34 +00:00
|
|
|
|
2019-12-06 15:10:52 +00:00
|
|
|
DashMap is gladly accepts contributions!
|
|
|
|
Do not hesitate to open issues or PR's.
|
2019-12-06 15:30:34 +00:00
|
|
|
|
2019-12-06 15:10:52 +00:00
|
|
|
I will take a look as soon as I have time for it.
|
2019-12-06 15:30:34 +00:00
|
|
|
|
2019-08-26 18:20:31 +00:00
|
|
|
## Performance
|
|
|
|
|
2020-08-12 09:38:19 +00:00
|
|
|
A comprehensive benchmark suite including DashMap can be found [here](https://github.com/xacrimon/conc-map-bench).
|
2019-08-26 18:20:31 +00:00
|
|
|
|
|
|
|
## Special thanks
|
|
|
|
|
2020-03-11 09:11:32 +00:00
|
|
|
- [Jon Gjengset](https://github.com/jonhoo)
|
2019-08-26 18:20:31 +00:00
|
|
|
|
2020-03-11 09:11:32 +00:00
|
|
|
- [Krishna Sannasi](https://github.com/KrishnaSannasi)
|
|
|
|
|
|
|
|
- [Karl Bergström](https://github.com/kabergstrom)
|
|
|
|
|
|
|
|
- [Dylan DPC](https://github.com/Dylan-DPC)
|
|
|
|
|
|
|
|
- [Lokathor](https://github.com/Lokathor)
|
|
|
|
|
|
|
|
- [namibj](https://github.com/namibj)
|
2019-08-26 18:20:31 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under MIT.
|