#enums #no-alloc #no-std

no-std enumap

基于数组的枚举类似于HashMap和HashSet的接口

3个版本 (破坏性更新)

0.3.0 2024年3月3日
0.2.0 2024年3月3日
0.1.0 2024年3月3日

#470 in 嵌入式开发

每月下载量43次

MIT/Apache

60KB
780

EnuMap

Crates.io License Build Status docs.rs

枚举的HashMap和HashSet类似接口,由数组支持。

enumapno_std 兼容,无依赖和proc宏,编译速度极快。

使用方法

此包位于crates.io上,您可以通过将其添加到项目的 Cargo.toml 依赖项中来进行使用。

[dependencies]
enumap = "0.3"

示例

use enumap::{EnumMap, EnumSet};

enumap::enumap! {
    /// A beautiful fruit, ready to be sold.
    #[derive(Debug)]
    enum Fruit {
        Orange,
        Banana,
        Grape,
    }
}

// A fruit shop: fruit -> stock.
let mut shop = EnumMap::new();
let mut orders = EnumSet::new();

shop.insert(Fruit::Orange, 100);
shop.insert(Fruit::Banana, 200);

for (fruit, amount) in &shop {
    println!("There are {amount} {fruit:?}s in stock!");
}

if !shop.contains_key(Fruit::Grape) {
    println!("Sorry no grapes in stock :(");
    orders.insert(Fruit::Grape);
}

for fruit in &orders {
    println!("{fruit:?} needs to be ordered!");
}

查看文档以获取更多示例!

依赖项

~175KB