Few days ago I’ve decided to make small contributions to rxRust library, so I couldn’t stop myself from advertising it here.
A nice, feature-rich and Rx-standard (well, as much to as Rx standard is defined) library is something I was truly missing for a while. My passion to Rust as well as reactive programming style make this little crate an interesting piece, something worth helping to grow.
A spirit of the past
Few words about where rust stands now in Rx extensions space. There is an old, and looking like like an abandon RxRust library on Github (notice the capital spelling case here). This library seem to only vaguely follow the Rx components consensus described on ReactiveX.io. It provides a kind of older-version of the concept, rooted back to times where it was more known as reactive-streams API.
This is the library that looks like a beginning, but not quite as a final piece you would take and use in any of the production code. Well - at least I think so.
A new beginning
A new library
rxRust (now pay attention - lowercase here :) has been born as of this year. I’ve found it almost accidentally by seeing this post on redit and I have to admit I’ve got excited almost immediately.
After trying out how it feels in hands and how it has been structured, I consider it an extremely promising starting point for Rust catching up in Rx space.
A combination of compile-time optimization Rust can add + super robust composability of Rx observables and operators makes an explosive (in nothing but a positive meaning) mixture. Rust can offer a zero-cost abstractions, and, for a reactive-in-style algorithm, it means an possibility to be compiled to a super lean, fast and minimal-in-size binary code. Not mentioning the fact, that it is particularly natural and “easy” in Rust (once you’ve acquired black-magic skills of understanding dark soul of borrow-checker) suitable for writing safe multi-threaded code that operates on references and slices rather than data being copied over the places (see my remarks to rxCpp), this indeed sounds like a perfect marriage.
The ability to access these Rust features is where
rxRust can IMO really shine amongst Rx implementations targeting other languages and technologies.
So heads up, fingers crossed and hurray for rxRust (…and remember - lowercase ;)