| Crates.io | sector |
| lib.rs | sector |
| version | 0.1.21 |
| created_at | 2025-03-23 23:16:51.758146+00 |
| updated_at | 2025-03-30 13:36:03.655752+00 |
| description | A stateful vector implementation that provides different memory management behaviors through Rust traits and state machines. |
| homepage | |
| repository | https://github.com/Dari-OS/sector |
| max_upload_size | |
| id | 1603193 |
| size | 195,794 |
A stateful vector implementation that provides different memory management behaviors through Rust traits and state machines.
sector is a Rust library that provides a stateful vector structure (Sector<State, T>) with choosable memory allocation strategies.
Unlike Vec<T>, it allows developers to control how memory grows/shrinks.
[!NOTE] This library is under development. Expect changes and optimizations.
Stateful Memory Management – Control memory allocation behavior dynamically.
Lightweight & Fast – Minimal overhead while allowing full customization.
No Std Support – Support for #![no_std] environments by default.
Sector has 6 different states:
Normal Acts like the normal std::vec::Vec<T>.Dynamic Grows the internal capacity by a factor of 2. Shrinks to 3/4 of the original capacityFixed Is not able to grow nor shrink. Returns false if the capacity is full and you try to add elements.Locked Does not allow to add or remove elements, regardless of the inner capacity.Manual Requires you to grow and shrink the inner capacity manually.Tight The inner capacity is exactly as large as the length[!WARNING] Be careful! Zero Sized Types are treated differently by each state. Refer to the specific documentation of each state to get more information.
Add sector as a dependency in your Cargo.toml:
[dependencies]
sector = "0.1"
use sector::{states::Normal, Sector};
fn main() {
let mut sec: Sector<Normal, _> = Sector::new();
sec.push(10);
sec.push(20);
// Access elements
println!("First element: {:?}", sec.get(0));
}
Generate docs locally:
cargo doc --open
Or visit the documentation online:
Contributions are welcome!
no_std supportThis project is dual licensed: