2 releases
| 0.1.1 | Oct 23, 2025 |
|---|---|
| 0.1.0 | Oct 22, 2025 |
#72 in #matcher
Used in comtains
14KB
285 lines
comtains
comtains expands static byte sequences into zero-allocation matchers at compile time. The byte_set! macro emits a branch-ordered decision tree, keeping membership checks to a handful of predictable instructions—ideal for tight opcode dispatchers or protocol parsers.
use comtains::{byte_set, ByteSet};
const HTTP_METHODS: ByteSet = byte_set![b"GET", b"POST", b"PUT", b"PATCH"];
assert!(HTTP_METHODS.contains(b"GET"));
assert!(!HTTP_METHODS.contains(b"DELETE"));
How it works
- All inputs are parsed at macro expansion time into a trie that shares common prefixes.
- Each edge records how many sequences traverse it; siblings are sorted by descending weight to probe common paths first.
- The macro generates a nested
matchladder that comparescandidate[depth], short-circuiting on the first mismatch. - Debug metadata is emitted alongside the matcher so tests and benchmarks can assert branch ordering or inspect the trie layout.
Dependencies
~135–520KB
~12K SLoC