Crate of the Week

https://crates.io/crates/enclose

A crate that provides a macro to reduce the boilerplate associated with cloning Arcs etc. for moving them into closures.

2 Likes

Self-submitting bacon, a terminal application which runs your cargo tasks on change in background, always displaying the result of the last finished task, sorting and summarizing items, managing wrapping, switching between tasks, etc.

It's not new, but was never submitted and just reached 3.0

8 Likes

Self submitting ad, a text editor that combines modal editing with many of the features found in plan 9's acme.

3 Likes

Nominating elain - "Set the minimum alignments of types using const generics, rather than #[repr(align(N))]".

This is a rather old crate, but it hasn't been nominated yet, and it recently made my life a lot easier. I would want to raise its visibility, so that it can help others as well

Self submitting rsbkb, a multicall (busybox-like) command line tool making it easy to decode/encode things through pipes.

Example:
Read 10 bytes from /etc/passwd starting at offset 0x2f, then xor with 0xF2, encode it in URL-safe base64 and finally URL encode it:

$ slice /etc/passwd 0x2f +10 | xor -x f2 | b64 -u | urlenc
l5%2DdnMjdh4GA3Q%3D%3D

Hello, I'd like to self submit tantivy-analysis-contrib, a crate that tries to bring some of Lucene components into Tantivy indexing full text search engine.

1 Like

Self-submitting muddy, a static str obfuscation library for rust projects. Use responsibly! Cheers~

2 Likes

Self nomination for web-rpc: use trait syntax to define RPCs between browsing contexts (tabs/windows), web workers, and message channels. Supports bi-directional communication over a single channel, posting/transferring Javascript types, notifications, cancellation, and async server methods. This crate was designed and is most useful for applying the actor pattern on the web.

I would like to nominate trait-gen It really saved me. And it's so elegant to use. It feels like an "impl list" should be part of the language, at least until we have min_specialization and / or generic_const_exprs in stable.

Backstory:
I wanted to make two parallel objects with the same implementation (identical except one had an internal UnsafeCell and the other doesn't) where both objects are available at runtime, both implement all the same traits and can be used interchangeably depending on the required usage.

But introducing generics to the impls exploded into a nightmare. Each new bound led to half a dozen needed bounds somewhere else. I needed to splitting traits in half. I needed to add associated types to traits. I needed to add parameters to traits that didn't have them.

By the time it was compiling again, the change involved touching 700 lines of code!!

Or I could have just used trait-gen.

5 Likes

Self nomination for threadsafe-lru, which implements a simple thread-safe LRU functionality. It is fast and there is a benchmark there comparing it with Moka. Internally it uses Indexlist1, to take care of ordering.

Self nominating ala-lape, a small tool to help with preventing the computer from going idle. Wrote it because my PC kept going to sleep while I was happily mashing buttons on my gamepad, because for various reasons, that's not counted towards activity. Unlike many other inhibitors, this does not rely on Wayland, but on logind (thus, it works fine on Xorg too). It also supports inhibiting notifications for a number of notification daemons for maximum gaming immersion.

Self-nominating confik, a flexible, multi-source configuration library built for containerized services. Read and merge values from environment variables, TOML & JSON files. Supports marking fields as secret to guarantee they're only included from allowed sources.

3 Likes

Self nominating marmite the simplest and easiest way to publish a site or a blog from markdown content. It differs from other static site generators because it is zero config.

Just have a folder with markdown files and run marmite inputfolder outputfolder and a complete site will be created.

Crate is published on crates .io and there are binary releases published to github release page

A introduction page is published on Marmite SSG | What is marmite

1 Like

Self-nominating glues: A sync-enabled TUI note-taking app with Git, CSV, and JSON support.

I created Glues to make note-taking directly from the terminal easy and efficient. Notes can be stored locally or synced effortlessly using Git. It's a simple, privacy-focused tool that gives full control over data.

I'd like to nominate bytes-varint.

bytes-varint makes it easy to work with variable-width integers (varints) in Rust. This is most notably used in Protocol Buffers, but it shows up elsewhere where bit conservation is of great importance. I'm nominating this crate because, while other crates exists, bytes-varint interoperates directly with the bytes crate, which is used heavily in zero-copy environments.

nominating enumset, a useful alternative to bitflags in cases where you want enum discriminants to have certain values, such as when you are using them as indexes into an array.

Self-nominating tower-http-client.

This crate provides middlewares and various utilities for HTTP-clients. It extends the tower_http functionality for creating HTTP clients using tower middlewares.

The goal of the project is to create a more flexible and extensible alternative for reqwest_middleware.

1 Like

Self nominating https://crates.io/crates/tower-memlim.

Enforces a limit on the underlying tower service when a self defined machine's memory threshold is met.

By combining MemoryLimitLayer with tower's load_shed feature, incoming requests can be rejected once a certain memory Threshold is met. Ths can help to protect a system from running out of memory.

2 Likes

self nominating Goku

Goku is a high-performance, scalable HTTP load-testing tool designed for benchmarking and performance analysis of web services.

Goku offers modern features and simplicity for engineers to simulate and analyze traffic efficiently.

  • Fast and scalable HTTP load testing
  • Supports structured, real-time metrics
  • Detailed performance analytics

Nominating the wtransport crate: crates.io: Rust Package Registry

wtransport is an implementation of the WebTransport specification, a successor to WebSockets with many additional features. In particular, once you've established a WebTransport connection from a client to a server, either the client or the server can initiate any number of streams.

3 Likes