Crate of the Week

tupleops: GitHub - Kijewski/tupleops: https://crates.io/crates/tupleops

A neat toolbox for manipulating tuples. New and still underappreciated crate with just one star on github. I used it recently in tandem with derive_new to handle the tuples that diesel returns on joins. I just wanted to add another item to the tuple (append) before I fed the elements into the new-method (apply) for my return-struct. Very nice!

2 Likes

I'd like to nominate a crate that my friend has spent much time on: a fast no_std websocket crate called 'embedded-websocket'

https://crates.io/crates/embedded-websocket

2 Likes

I would like to nominate cargo guppy, a crate which can be used to track and query Cargo dependency graphs.

The crate is very well documented, tested and serves, in my opinion, as a great example on how to structure and write beautiful Rust API's.

4 Likes

Still not seen a cargo dependency tree viewer in 3D yet. There's surely lots of fun to be had there.
(Bonus points for cyberpunk theming)

2 Likes

Hi everyone! I'd like to make a self-suggestion: GitHub - mikaelmello/inquire: A Rust library for building interactive prompts

It is a crate to build interactive prompts that was inspired by the amazing (IMO) Github CLI app. You might be familiar with a similar crate that is dialoguer. To make mine stand out, I focused a lot on providing the greatest developer experience possible with nice to use APIs, sane defaults and an extensive documentation, besides more features :slight_smile:

I talked about it on the last RustConf and people loved it! Thought it might be worth a shot to put it here too, thanks!

5 Likes

I'd like to recommend ulid crate for making "Universally Unique Lexicographically Sorted Identifiers."

3 Likes

I'd like to nominate arbitrary, a crate for state-of-the-art fuzzing and property-based testing:

This crate doesn't include a proptestering or fuzzing "runner", it only defines a trait to generate arbitrary values. The trait is simple, but very powerful -- it allows you to get minimization and coverage-based search for structured input for free.

4 Likes

A promising crate, for those who work with both Rust and TypeScript ts-rs : auto-generate your TypeScript definitions directly from your Rust structs, with many customization options :rocket:
Big up to its author and contributors :tada:

4 Likes

bigdecimal or please suggest if you know something better

Thats really useful. Would like to try it out asap.

I would like to nominate Flowistry, which is a static analysis tool for Rust. It's implemented as a VSCode plugin and looks really awesome!

9 Likes

I'll nominate tap (crates.io):

This crate provides extension methods on all types that allow transparent, temporary, inspection/mutation (tapping), transformation (piping), or type conversion. These methods make it convenient for you to insert debugging or modification points into an expression without requiring you to change any other portions of your code.

5 Likes

I'd like to nominate miette, a new crate for error handling and reporting that's a mixture of thiserror, anyhow/eyre, and codespan-reporting, all in a nice neat package. It adds stuff like unique error codes (with automatic linking to docs-rs), help messages, footers, multiple messages, and even snippets.

I just tagged 3.0.0 and I'd love to get some more attention on it!

Here's what an example error looks like:

28 Likes

I was thinking maybe this tiny crate might be interesting.

skip_error allows you to discard a Result::Err and continue to the next iteration of the loop. Usually, we would think short-circuit is a good idea, but in some cases, you might want to continue the processing and just ignore the error. On top of that, skip_error can log the error for you, so the Err does not vanish into the ether (support for log and tracing). I'd be happy to see if there is any interest for such a small utility.

(full disclosure: I'm one of the main maintainer of the crate)

2 Likes

It would be great to hear from someone at Solokeys on their experience building an open source embedded solution for crypto keys, which they built entirely in Rust!

1 Like

I'd like to nominate pubgrub, a Rust implementation of the state-of-the-art version solving algorithm of the same name. Both the algorithm and the crate itself impressive bits of engineering, being very fast and with excellent error messages for what is a difficult problem. :purple_heart: to the maintainers

10 Likes

i know it was in here before, but wasmer

I would like to nominate ftd a crate that I have created. This is for a new unified document format where you can record data and UI. Checkout some of the things you can do with it already.

Nominating serde_with, which brings plenty of helper macros, wrappers and type conversions so that you almost never have to manually implement Serialize/Deserialize anymore.

Some of my highlights are the Display/FromStr and TryFrom/TryInto converters, and the Bytes and Hex wrappers around binary data.

4 Likes

Nominating flutter_rust_bridge. It is a high-level memory-safe binding generator for Flutter/Dart <-> Rust. With this crate, you can use Rust together with Flutter, a cross-platform hot-reload rapid-development UI toolkit, seamlessly.

It is not only memory-safe and high-level, but also features zero-copy, async support, easy to use, lightweight, easy to code-review, and pure-Dart compatible.

Related: Previous discussion in Reddit https://www.reddit.com/r/rust/comments/q0wrhr/anyone_interested_in_opensourcing_highlevel/

7 Likes