facet-singularize 0.44.0

Fast, no-regex English singularization for the facet ecosystem
Documentation

facet-singularize

crates.io documentation MIT/Apache-2.0 licensed Discord

Fast, no-regex English singularization.

Overview

This crate converts plural English words to their singular form without using regex. It's designed for use in deserialization where performance matters—for example, when mapping JSON field names like "dependencies" to Rust struct fields like dependency.

Example

use facet_singularize::singularize;

assert_eq!(singularize("dependencies"), "dependency");
assert_eq!(singularize("items"), "item");
assert_eq!(singularize("children"), "child");
assert_eq!(singularize("boxes"), "box");
assert_eq!(singularize("matrices"), "matrix");

Features

  • No regex: Uses simple suffix matching and table lookups
  • no_std compatible: Works without the standard library (with alloc feature)
  • Irregular plurals: Handles common exceptions like children→child, mice→mouse
  • Latin/Greek plurals: Supports -ices→-ix (matrices→matrix), -ae→-a (larvae→larva)

Performance

Benchmarked to be fast enough for hot paths. The implementation prioritizes predictable performance over completeness—it handles the common cases well rather than trying to be a full linguistic library.

Part of the Facet Ecosystem

This crate is part of the facet ecosystem, providing reflection for Rust.

License

Licensed under either of:

at your option.