prefix-range 0.1.0

Compute bounds for prefix string queries for BTreeSet/BTreeMap::range
Documentation
  • Coverage
  • 100%
    3 out of 3 items documented1 out of 2 items with examples
  • Size
  • Source code size: 12.38 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 644.05 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • VorpalBlade/prefix-range
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • VorpalBlade

Compute bounds for prefix string queries for BTreeSet/BTreeMap::range

[ crates.io ] [ lib.rs ] [ docs.rs ]

If you have a BTreeSet or BTreeMap with string keys and want to find all entries with a given prefix, the standard library (as of Rust 1.75) doesn't offer any built in methods to do so.

You could use something like the following:

let iterator = mymap.range(Bounds::Included("myprefix"),
                           Bounds::Excluded("myprefiy"));

This issue is finding the upper bound myprefiy. You have to deal with UTF-8 encoding, invalid code points etc. That is what the code in this library solves.

The code is taken from a blog post by Jimmy Hartzell, and slightly tweaked:

  • To work in no-std (still needs alloc though)
  • To work with BTreeMaps (not just BTreeSets).

A huge thanks to Jimmy Hartzell for solving the problem already (though they never published it as a crate reusable by others).

See the crate documentation for usage examples.

MSRV

The code is simple, and will likely compile on quite old versions, though nothing older than 1.65 is being actively tested.