« BackIntervaltree with Rust Back Endgithub.comSubmitted by athekunal 3 days ago
  • 2Pacalypse- 2 hours ago

    Pretty cool to have this in Rust, might be useful if/when I decide to move some functionality from TS -> Rust.

    In the meantime, I have this impelemented in TypeScript in case anyone else will find it useful: https://github.com/ShieldBattery/node-interval-tree

    • jonstewart 14 minutes ago

      In C++ there’s the Boost Interval Container Library, which has an excellent API: https://www.boost.org/doc/libs/latest/libs/icl/doc/html/inde...

      Unfortunately it’s implemented on top of std::set/std::map and I’ve had problems with heap blow up on large maps. This project looks like it uses 32 bit indices into a vector for backing store.

      • vswaroop04 2 hours ago

        Pretty nice to have this in Rust could come in handy if I decide to migrate some functionality from TypeScript to Rust later on.

        • athekunal 3 days ago

          I built a project that implemented intervaltree in Rust and exposed PyO3 bindings as a drop-in replacement for Python's native intervaltree. It is significantly faster, and I will be adding more features, such as AVL and red-black trees for balancing.

          • Epa095 an hour ago

            What is the native intervaltree, is it [1] you mean? Do you also support the set operations? And can it be pickled safely?

            1: https://pypi.org/project/intervaltree/

            • eru 3 hours ago

              If you want balanced trees, have a look at what Rust's standard library does with BTreeMap.

              • jeffparsons 3 hours ago

                And with a little work you can even use them to map ranges of keys to values in a way that's reminiscent of interval trees — e.g. https://crates.io/crates/rangemap. (Disclosure: that's my crate.)

                • eru 3 hours ago

                  Nice! I was only suggesting considering BTrees because they also play nice with caches, instead of the more conventional binary tree balancing mechanisms.

              • stefanka 3 hours ago

                Will you publish it as a crate too?