Crate of the Week

I'd like to nominate Loadstone, a bare-metal bootloader for embedded systems, specifically systems running on Cortex-M microcontrollers.

4 Likes

Self-nomination: sycamore, a Rust library for making web applications using WebAssembly. Features include components, no VDOM, fine-grained reactivity, Server Side Rendering (SSR), Router, among others...

Sycamore is actually pretty fast (it's faster than Svelte) based on js-framework-benchmark.

8 Likes

Another self-nomination: synth is an open source declarative command line test data generator written in Rust.

3 Likes

I'll nominate Ockam.

https://crates.io/crates/ockam

I've personally tried to build some fundamental constructs like transport agnostic e2e encryption and actor libraries, but never invested enough in them. Ockam is basically doing what I had attempted and failed at, but way way way better.

I saw their blog post the other day and I think it's quite cool. e2e encryption + actors is a super cool primitive for secure and resilient services. It reminds me a bit of the hashicorp stack, but as a library.

IMO definitely worth checking out - I think frameworks like this are extremely high potential.

10 Likes

I'll nominate format_serde_error.

2 Likes

And a shameless self-nomination:

1 Like

Another Configuration Library for Rust Applications (with auto derive).

I nominate this abuse of the type system:

via reddit

3 Likes

Thank you @taiki-e!

7 Likes

Self-nomination:

2 Likes

Self-nomination:

This library is a simple schema migration library for rusqlite using user_version instead of an SQL table to maintain the current schema version.

Thus, it aims for:

  • simplicity: define a set of SQL statements. Just add more SQL statement to change the schema. No external CLI, no macro.
  • performance: no need to add a table to be parsed, the user_version field is at a fixed offset in the sqlite file format.
2 Likes

Self nomination:

This is a unix utility for letting you split stdout from a command in a GUI, then get the results back in the terminal to be passed along. It's meant to let you explore command output as a table.

Has qcell been nominated yet? It's a heavily underrated crate, particularly when working with dynamic views of trait objects (runtime polymorphism).

3 Likes

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!

1 Like

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

1 Like

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.

3 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)

1 Like

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!

3 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.

2 Likes