3 releases

0.0.3 Dec 9, 2024
0.0.2 Dec 7, 2024
0.0.1 Nov 12, 2024

#118 in Science

Download history 161/week @ 2024-11-11 61/week @ 2024-11-18 87/week @ 2024-11-25 307/week @ 2024-12-02 426/week @ 2024-12-09

887 downloads per month
Used in 36 crates (3 directly)

MIT license

15KB
326 lines

🎰 sparse-slot

A lightning-fast, memory-efficient sparse slot map implementation in Rust.

✨ Features

  • 🚀 Fixed-size Power: Pre-allocated capacity for predictable performance
  • 🎯 Safe Access: Generation-based handles prevent the "dangling pointer blues"
  • 🔄 Reusable Slots: Removed items' slots can be reused, like a game of musical chairs
  • 🎭 Double Life: Values can be accessed both immutably and mutably

📦 Installation

Add this to your Cargo.toml:

[dependencies]
sparse-slot = "0.0.3"

🛠️ Usage

Here's a quick example to get you started:

use sparse_slot::SparseSlot;

fn main() {
    let mut slot = SparseSlot::new(5);
    let id = slot.try_set("Hello, world!").expect("failed to set");
    println!("Stored value: {:?}", slot.get(id));
}

About Contributions

This project is open source with a single copyright holder (that's me!). While the code is publicly available under the MIT License, I'm not accepting external contributions at this time.

If you have suggestions or stumble upon bugs, please open an issue for discussion. While I can't accept pull requests, your feedback is invaluable and helps make the project better.

Thank you for your understanding and interest in this project! Your engagement means the world to me. 🙏

License

This project is licensed under the MIT License - see the LICENSE file for details.

Copyright (c) 2024 Peter Bjorklund. All rights reserved.

No runtime deps