# 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: ```rust 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](https://www.thecodedmessage.com/posts/prefix-ranges/), 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][docs.rs] 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. [crates.io]: https://crates.io/crates/prefix_range [docs.rs]: https://docs.rs/prefix_range [lib.rs]: https://lib.rs/crates/prefix_range