Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork0
Forked version of index_vec
License
oxc-project/oxc-index-vec
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Forked version ofindex_vec.
This crate provides several optional features:
rayon- Enables parallel iteration support via Rayonserde- Enables serialization/deserialization support via Serdenonmax- Enablesdefine_nonmax_u32_index_type!macro for memory-efficient index types usingNonMaxU32
Add this to yourCargo.toml:
[dependencies]oxc_index ="3.1"# Enable optional features as needed:# oxc_index = { version = "3.1", features = ["serde", "nonmax"] }
use oxc_index::{IndexVec, define_index_type};define_index_type!{pubstructMyIdx =u32;}letmut vec:IndexVec<MyIdx,&str> =IndexVec::new();let idx = vec.push("hello");assert_eq!(vec[idx],"hello");
Thedefine_nonmax_u32_index_type! macro creates index types backed byNonMaxU32,which uses the niche optimization to storeOption<MyIdx> in the same space asMyIdx:
use oxc_index::{IndexVec, define_nonmax_u32_index_type};define_nonmax_u32_index_type!{pubstructCompactIdx;}// Option<CompactIdx> is the same size as CompactIdx (4 bytes)assert_eq!( std::mem::size_of::<CompactIdx>(), std::mem::size_of::<Option<CompactIdx>>());letmut vec:IndexVec<CompactIdx,String> =IndexVec::new();let idx = vec.push("world".to_string());
All index types andIndexVec automatically support Serde serialization when theserde feature is enabled:
use oxc_index::{IndexVec, define_index_type};use serde::{Serialize,Deserialize};define_index_type!{pubstructMyIdx =u32;}#[derive(Serialize,Deserialize)]structMyData{items:IndexVec<MyIdx,String>,}
Compared to the originalindex_vec:
rayonfeature - Parallel iteration supportserdefeature - Automatic serialization support using the crate's own serde dependencynonmaxfeature - Memory-efficient index types withdefine_nonmax_u32_index_type!macro- Const support - Many methods are now
const fnwhere possible - Proc macro compatibility - Macros work seamlessly with custom derive attributes like
#[ast],#[estree(skip)], etc.
About
Forked version of index_vec
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Contributors15
Uh oh!
There was an error while loading.Please reload this page.