Crate of the Week

Self-nominating test-r, a test framework bringing some advanced features like shared dependencies, dynamic test generation, retries, etc. while remaining compatible with the built-in test harness interface.

Self nominating: Rust TcpSever
"A simple and lightweight crate for launching and using a server"

Nominating plotlars, a crate for simplifying the creation of polars visualizations.

1 Like

Self-nominating logforth, a flexible logging framework for Rust applications, providing easy log dispatching and configuration.

We use it in several data systems and observe its easy to start with and flexible to extend. Welcome users to test it out or extend with their favorite layout, appended, and filters.

Nominating GitHub - wdanilo/struct-split, which is roughly a macro-based solution to partial borrows, with actually a nice-looking interface.

2 Likes

Self nominating IronCalc a package for working with spreadsheets :grin:.

See also GitHub for the full idea

fixed-slice-vec provides a stack-allocated vector backed by byte slices.

2 Likes

postcard provides a #![no-std] focused serializer/deserializer and makes communicating with, e.g., embedded devices so much simpler and nicer. I'd like to point out especially the stability of the format and the excellently documented Postcard Wire Specification.

7 Likes

kolibri-embedded-gui

Super-lightweight Immediate-mode Embedded GUI framework, based on the awesome embedded-graphics library

augurs, a time-series toolkit for Rust with bindings to JS & Python, offering features like forecasting, outlier detection, seasonality detection and clustering. Check out the demo!

2 Likes

I once made a similar crate: variable-len-reader

A library for reading/writing variable length data. Support AsyncRead/AsyncWrite in tokio.

Self-nominating include-utils

A more powerful replacement for the standard include_str macros.

Often you only need a specific part of the file, e.g. relevant lines for an example, or section of README.md. This crate provides macros that can include only part of a file, similar to the mdbook specific feature.

Imagine that you want to include "usage" section from your repository readme file to the crate documentation. But you do not want to see in crate documentation some parts of readme file, like header, badges, etc. With theinclude_str macro you can only include the entire file content.

But with the include_md macro you can include only a specific section of the file.

5 Likes

I would like to nominate cmd_lib.

This is a library that provides a couple macros that make it much more convenient to write shell-script-like programs in Rust. In particular, spawning commands, capturing stdout, redirection and pipes are much less verbose than just using std. It even has nice logging built in.

I still think Bash is fine for scripts of a couple dozen lines, but this has lowered the threshold for me to migrate medium-sized or multi-file scripts to Rust.

Could also be interesting from a cross-platform perspective!

4 Likes

Nominating OmniLED, a helper to display things like time or audio volumne on a LED matrix that some peripherials (such as gaming keyboards) have.

(somewhat self-) nominating fake, a library (and recently console utility) to generate fake data of various types.

Full disclosure: I am a co-maintainer of that crate.

1 Like

Self-nominating sign-bound.

It implements signed integer types like PositiveIsize, NegativeI32 that are guaranteed to have the most-significant bit either set or unset. The API is mostly the same as the NonZero types. They are also layout optimized so for example Option<PositiveI32> is the same size as an i32.

(I am really surprised I couldn't find any other crates with these types by now)

4 Likes

Self-nominating terminal-colorsaurus.

It answers the seemingly simple question «Is this terminal dark or light?» for most terminals including Windows Terminal [1]. The library is used by bat and delta to automatically choose an appropriate syntax highlighting theme.


  1. starting with Windows Terminal v1.22 which is currently in preview ↩︎

3 Likes

Self-nominating vidyut, a Sanskrit toolkit that provides reliable infrastructure for the next century of Sanskrit software. The Sanskrit programming community is small, and Rust was an obvious choice to give us maximum leverage over time. Includes Python bindings through pyo3 and WebAssembly bindings through wasm-bindgen.

2 Likes

Self-nominating getifs, a bunch of cross-platform network tools for fetching interfaces (with MTU), multicast addresses, gateway addresses, local IP addresses, private IP addresses, public IP addresses, and etc.

I'd like to nominate resvg. I think it's a really impressive library!

5 Likes