Crate of the Week

I'd like to have both faster and failure as creates of the week. So I'd suggest that maybe one could be published in one week and the other the next week.

Same here, thanks for the awesome batch of suggestions @nasa42!

1 Like

How about we just post it as

This week, the community wants to promote: Faster failure.

and leave if to readers to discover these are actually two links to crates? :wink:

5 Likes

Considering how so many websites, whether high-profile or hobbyist, are still hacked by fairly trivial XSS and other injection attacks, I believe the Ammonia HTML sanitizer deserves a bit of spotlight!

They just now announced reaching a stable 1.0.0.

If you use Cargo, you've benefited from it already, as it powers the HTML sanitising behind crates.io.

10 Likes

ternimal - Simulate a lifeform in the terminal.

5 Likes

I just found out about bark: Dynamically choose between Arc or Rc - #13 by mbrubeck

https://github.com/TyOverby/Bark

Although still in research mode, it looks like a great idea.

3 Likes

I'd like to nominate rust-ipfs-api (crates.io).

I've read that in the latest Rust Weekly there was no crate to nominate.

I am submitting my own crate here, not sure this is allowed: https://crates.io/crates/printpdf

It's supposed to be a pure-Rust replacement for Apache PDFBox, etc.

  • ~ 3K LOC
  • Compiles on stable Rust
  • Good documentation and examples
  • All issues closed except for feature requests
  • No issues with clippy

So this is why I'd nominate it, instead of nominating no crate at all. Not sure if this is allowed, though.

7 Likes

I will nominate Wither. An ODM for MongoDB written in Rust.

A few awesome things about this crate:

  • extremely simple to get started with.
  • provides a model first approach to interfacing with your MongoDB data.
  • you get to deal with your structs as opposed to BSON documents.
  • well tested.
  • has a nice schema migrations system.
1 Like

I'd like to nominate Zbox. A zero-details, privacy-focused embeddable file system.

Unlike other system-level file systems, Zbox is a file system that runs inside your application. It only provides access to one process at a time.

Some of its features:

  • Metadata encryption
  • Advanced crypto
  • Content-based data chunk deduplication and file-based deduplication
  • Data compression
  • File contents versioning
  • Copy-on-write (COW :cow:) semantics
  • ACID transactional operations
  • Snapshot
  • Support multiple storages, including memory and OS file system
1 Like

smallvec is so great I think it should be in the std. It is useful for any time you need to store a small amount of items and an allocation is overkill. It is also great as a part of larger data structures because of data locality.

11 Likes

state_machine_future - Easily create type-safe Futures from state machines ā€” without the boilerplate.

4 Likes

I nominate cargo-audit which checks all dependencies for known vulnerabilities in the RustSec Advisory Database.

8 Likes

I'd like to nominate sec - simple and useful

6 Likes

https://github.com/ron-rs/ron

interesting crate

Rusty Object Notation

7 Likes

I think the "disclaimer" there is important:

While sec usually does a good job from preventing accidentally leaks through logging mistakes, it currently does not protect the actual memory (while not impossible, this requires a lot of extra effort due to heap allocations).

If protecting cryptographic secrets in-memory from stackdumps and similar is a concern, have a look at the secrets crate or similar crates.

Besides the secrets crate, there's also secstr that does something similar.

@imp do you know where the repo for sec is? I'm wanting to open a couple issues/PRs but the owner never filled in the repository or homepage fields in his Cargo.toml. I wasn't able to find it on GitHub either.

4 Likes

@Michael-F-Bryan I believe this is the one

1 Like

I'd like to nominate crossbeam-channel. It's young and in active development, but deserves more hype.

9 Likes

Whoa!! Super nice! I'll integrate this into my project to replace mpsc and see how it does.