本文へスキップ

EnumTable

A lightweight and efficient Rust library for mapping enums to values, providing a fast and type-safe alternative to HashMap for enum keys.

2025/2/26

crate

CodeSite

技術

Rustcrate

unwrapの必要のない安全で高速なmapを実現したいと考えました。

目的

HashMapでgetした後のOptionのhandlingが気になっていました。

背景

enumをmapとして扱いやすくするため、utility関数を充実させました。

こだわり

EnumTableは、Rustのenumをキーとして値をマッピングするための軽量で効率的なライブラリです。 allocation freeで、通常の get / set 関数はO(1)で動作します。また、 get_const のようなconst関数はO(log N)で実装されており、コンパイル時にも利用できます。

HashMapと違って全variantの値を必ず持つので、get しても Option が返ってきません。 #[derive(Enumerable)] を付けるだけで使えて、no_std環境でも動きます。 今は et! マクロでのコンパイル時のテーブル作成や、serdeにも対応しています。

ギャラリー