comtains_macros 0.1.1

Procedural macro that builds comtains byte-set matchers
Documentation
  • Coverage
  • 50%
    1 out of 2 items documented0 out of 1 items with examples
  • Size
  • Source code size: 13.69 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 304.11 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 5s Average build duration of successful builds.
  • all releases: 5s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Coffeeri

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

  1. All inputs are parsed at macro expansion time into a trie that shares common prefixes.
  2. Each edge records how many sequences traverse it; siblings are sorted by descending weight to probe common paths first.
  3. The macro generates a nested match ladder that compares candidate[depth], short-circuiting on the first mismatch.
  4. Debug metadata is emitted alongside the matcher so tests and benchmarks can assert branch ordering or inspect the trie layout.