PackageTrack
Sign in Get early access

rangemap

Map and set data structures whose keys are stored as ranges. Contiguous and overlapping ranges that map to the same value are coalesced into a single range.

1.8.0 31M downloads/mo #1629 most downloaded on crates.io jeffparsons/rangemap

What this package is like to depend on

Last release 9 days ago

14 Aug 2026

Release timing varies

gaps range from 2 weeks to 1.4 years

Most releases are documented

notes for 24 of 30 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

30 releases · first in 2019

3 releases in the last 12 months

see the full history below

Release timeline

30 releases · Feb 2019 to Aug 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 30
  1. 1.8.0 14 Aug 2026
    Release notes
    • Features:

      • Add support for using ordered_float::NotNan<f32> and ordered_float::NotNan<f64> as keys of RangeInclusiveMap and RangeInclusiveSet, gated behind the ordered-float5 feature. The successor of a float is taken to be the next representable float, so ranges that are one ULP (unit in the last place) apart will be coalesced. Thanks to Qix- for implementing this!
    • Fixes:

      • Fix building without the Rust standard library when the serde1 feature is enabled. Enabling serde1 also enabled serde's default features, including its std feature, so this has never actually worked.
    • Changes:

      • Switch to the version 2 feature resolver, so that features enabled by dev-dependencies no longer leak into normal builds.
    Open source →
  2. 1.7.1 19 Dec 2025
    Release notes
    • Fixes:
      • Fix PartialEq, PartialOrd, and Ord implementations for RangeInclusiveMap (and RangeInclusiveSet). These previously only compared the starts of ranges instead of the entire range. (Same class of bug that was fixed for RangeMap in v1.3.1.)
    Open source →
  3. 1.7.0 15 Nov 2025
    Release notes
    • Features:

      • Relax Eq bounds to PartialEq. (We don't actually need to demand reflexivity.)
    • Changes:

      • Bump minimum supported Rust version to 1.81.0 (released 2024-09-05).
    Open source →
  4. 1.6.0 26 Jul 2025
    Release notes
    • Features:
      • Add quickcheck support, gated behind the quickcheck feature.
      • Improve performance of RangeMap::gaps by efficiently seeking to the start of the query range.
    Open source →
  5. 1.5.1 27 Feb 2024
    Release notes
    • Fixes:
      • Relax bounds on Default implementation for all map and set types. Requiring K: Default and V: Default was accidentally introduced in v1.5.0.
    Open source →
  6. 1.5.0 09 Feb 2024
    Release notes

    chore: Release rangemap version 1.5.0

    Open source →
    Release notes

    Huge thanks to xfbs, who did pretty much all the work you see in the changelog below! 💖

    • Features:

      • Add union and intersection methods to iterate over the union or intersection of two sets.
      • Add first_range_value and last_range_value methods to map types and first and last methods to set types.
      • Add literal macros for all collection types — e.g. range_set![0..100, 200..300, 400..500].
      • Implement Default and Hash for all collection types.
      • Implement DoubleEndedIterator for all iterators.
      • Implement From<[_; N]> (e.g. From<[Range<T>; N]> for RangeSet<T>) for all collections. (Previously you could build a collection from an iterator, but not directly from an array.)
      • Implement BitOr and BitAnd for set types. (Convenience wrapper around the union and intersection methods mentioned above.)
      • Accept any R: Borrow<Range<K>> as argument to overlapping methods, allowing it to take ranges by value.
    • Changes:

      • Bump minimum supported Rust version to 1.66.0 (released 2022-12-15). This is to gain access to BTreeMap::first_key_value and BTreeMap::last_key_value, and for compatibility with new versions of some of rangemap's test dependencies.
    • Internal:

      • New benchmarks and improved test coverage.
    Open source →
  7. 1.4.0 18 Sep 2023
    Release notes

    Bump MSRV to 1.61.0 and prepare 1.4.0 release

    Open source →
    Release notes
    • Changes:
      • Bump minimum supported Rust version to 1.61.0 (released 2022-05-19). This is for compatibility with new versions of some of rangemap's test dependencies.
    Open source →
  8. 1.3.1 18 Sep 2023
    Release notes
    • Fixes:
      • Fix PartialEq, PartialOrd, and Ord implementations for RangeMap (and RangeSet). These previously only compared the starts of ranges instead of the entire range. Thanks to https://github.com/hecrj for finding and fixing this!
    • Changes:
      • Minimum supported Rust version for running this crate's tests has increased to 1.61.0 due to a corresponding MSRV bump in a test dependency. This is causing CI builds to fail against rustc 1.56.1, but should not affect consumers of the crate. The next minor release (1.4.0) will bump the minimum supported Rust version of rangemap itself.
    Open source →
  9. 1.3.0 03 Jan 2023
    Release notes
    • Features:
      • Add overlapping method to all collection types, which returns an iterator over all stored entries that completely or partially overlap a given range.
      • Add overlaps convenience method to all collection types, which returns whether any stored range completely or partially overlaps a given range.
      • Credit to Rua for the original implementation of these new methods. (Unfortunately I couldn't use their code directly because I made other incompatible changes.) Thanks also to rumpuslabs for their engagement.
    Open source →
  10. 1.2.0 26 Dec 2022
    Release notes
    • Features:
      • Add clear, len, and is_empty methods for all map and set types.
    • Fixes:
      • Make const_fn feature work again. (Previous release accidentally broke the const versions of RangeMap::new and RangeSet::new.)
    Open source →
  11. 1.1.0 11 Nov 2022
    Release notes
    • Features:
      • Implement PartialEq, Eq, PartialOrd, and Ord for all map and set types.
      • Make new functions for all map and set types const when const_fn feature is enabled.
    • Changes:
      • Bump minimum supported Rust version to 1.56.1. (Released a year ago.) This is for compatibility with new versions of some of rangemap's development dependencies.
    Open source →
  12. 1.0.3 11 Jun 2022
    Release notes
    • Fixes:
      • Fix Gaps iterator for RangeMap yielding an empty gap for an empty outer range. Simplified gaps logic and expanded fuzz testing to better cover this and similar cases.
    Open source →
  13. 1.0.2 17 May 2022
    Release notes
    • Fixes:
      • Fix empty gaps returned by Gaps iterator for RangeInclusiveMap. Added fuzz tests for Gaps iterators.
    Open source →
  14. 1.0.1 29 Jan 2022
    Release notes
    • Fixes:
      • Fix empty gaps returned by Gaps iterator for RangeMap, and incorrect gaps returned by Gaps iterator for RangeInclusiveMap.
    Open source →
  15. 1.0.0 27 Jan 2022
    Release notes

    It's time. (No functional change.)

    Open source →
  16. 0.1.14 15 Nov 2021
    Release notes
    • Features:
      • Expose nameable types for iterators: Iterator, IntoIterator, Gaps (for each collection type).
    • Changes:
      • Document overflow behaviour required by implementors of StepLite and StepFns.
    Open source →
  17. 0.1.13 25 Aug 2021
    Release notes
    • Features:
      • Add serde support.
    Open source →
  18. 0.1.12 23 Aug 2021
    Release notes
    • Features:
      • Implement more traits for all map and set types: IntoIter, FromIter, and Extend.
    • Changes:
      • Bump minimum supported Rust version to 1.46.
    Open source →
  19. 0.1.11 30 Jun 2021
    Release notes
    • Features:
      • Support no_std environments.
    • Changes:
      • Update all dev-dependencies to latest versions.
    Open source →
  20. 0.1.10 22 Feb 2021
    Release notes
    • Fixes:
      • Fix performance regression introduced in v0.1.9, which made inserts extremely slow for large maps.
    Open source →
  21. 0.1.9 22 Feb 2021
    Release notes
    • Fixes:
      • Fix coalescing of contiguous ranges. In some cases RangeMap and RangeInclusiveMap would leave two separate contiguous ranges with the same value instead of combining them into one.
    Open source →
  22. 0.1.8 22 Nov 2020
    Release notes
    • Features:
      • Implement Debug for all map and set types.
    Open source →
  23. 0.1.7 07 Sep 2020
    Release notes
    • Features:
      • Add gaps method to all map and set types for iterating over sub-ranges of a given outer range that are not covered by any stored range.
    Open source →
  24. 0.1.6 14 Jul 2020
    Release notes
    • Features:
      • Add RangeInclusiveMap and RangeInclusiveSet types for storing closed ranges.
    Open source →
  25. 0.1.5 23 Jun 2020

    Nothing published for this version

  26. 0.1.4 07 Jan 2020

    Nothing published for this version

  27. 0.1.3 25 Feb 2019

    Nothing published for this version

  28. 0.1.2 25 Feb 2019

    Nothing published for this version

  29. 0.1.1 15 Feb 2019

    Nothing published for this version

  30. 0.1.0 15 Feb 2019

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive