Crate of the Week

Nice work, @JasonWei512 ! This is now one of my favourite crates! :smiley:

2 Likes

I'd like to self-nominate file-format: a crate for determining binary-based file formats.

This crate mainly uses the magic number to detect the file formats.

1 Like

I'd like to self-nominate solomondb which is an embedded Gremlin-compatible graph database that supports multiple storage engine, currently RocksDB and Redb. The current version of SolomonDB allows you to work wit RocksDB or Redb using Gremlin query language. Hence, applying graph data structure to manage key-value pairs in those embedded storage layer.

SolomonDB embedded storage is easy to set up. You only need to identify the path where your database will be located and it's good to go.

use solomondb::Datastore;

let datastore = Datastore::new(path);
let db = Database::new(datastore.borrow());

SolomonDB supports GQL (Gremlin Query Language) and it does not require Gremlin Server or Apache TinkerPop to operate. You can query data on top of embedded storages. Below are examples on how to create vertices, properties and traverse to retrieve data.

// Create two new vertices with properties
let t1 = db
.traverse()
.v(1)
.add_v("person")
.property("github", "tin-snowflake")
.property("name", "Tin Chung")
.property("age", 21)
.add_v("coder")
.property("github", "chungquantin")
.property("age", 30);

// Traverse vertices which have property "github" and label "person"
let t2 = t1.clone().has_key("github").has_label("person").exec().to_list().await.unwrap();
// Traverse vertices which have property "github"
let t3 = t1.clone().has_key("github").exec().to_list().await.unwrap();
// Traverse vertices which does not have property "name"
let t4 = t1.clone().has_not("name").exec().next().await.unwrap();

The road map of SolomonDB will include:

  • Support more storage engines, help to graph modelize the embedded storage
  • Add protobuf and enable single-node mode.
  • Add client libraries (Javascript / Rust) to interact with SolomonDB from client side.

The mission of SolomonDB is to make graph traversal become easier, aim at plug-and-play database that can run directly in client app.

1 Like

I'd like to self-nominate dcp. dcp is a container utility tool that enables you to easily extract data from a container filesystem. It has extensive documentation and has an MIT license. It is available to download via pre-built binaries and crates.io.

I'd like to nominate RustTyC, which I discovered a couple years ago (but only sent a PR to recently). It's a library for general, lattice-based type checking and inference, and it makes writing (correct) type checkers much easier.

3 Likes

I'd like to nominate zeroize, which is used to overwrite sensitive memory with zeros on drop.

2 Likes

I'd like to self-nominate lazy_format, a lazy version of format! for more efficient composed string formatting operations

7 Likes

I'd like to self-nomiate Edma, a terminal app for embedded database management system. It helps me a lot in manging multiple embedded databases at once, from RocksDB to Redb. The built-in bytes deserializer is so powerful and versatile.

5 Likes

i'd like to self-nominate faer, a linear algebra library written in pure Rust, with a focus on correctness, portability, and high performance that matches or surpasses the commonly used C/C++ libraries.

12 Likes

I'd like to self-nominate diesel-oci, a diesel backend and connection implementation for oracle databases.

1 Like

I'd like to self-nominate cargo-rdme: a cargo command to create your README from your crate’s documentation (which supports intralinks by linking to docs.rs).

3 Likes

I'd like to self-nominate git-leave, a minimal cli that explores a folder to find repositories with unsaved changes or commits that are not yet pushed to their origin. You can also specify a kind of global projects folder in your git configuration to have a quick look at your repos.

A custom memory allocator that enables profiling memory usage of Rust programs:

6 Likes

I would like to self-nominate scraper, a crate for HTML parsing and querying with CSS selectors. BTW, we have just released a new version (0.14.0)

2 Likes

picst - A cross-platform CLI tool to resize clipboard images on the fly

1 Like

I would like to self-nominate Sniffnet, a cross-platform GUI application to analyze your network traffic with ease.

sniffnet_run_example

8 Likes

typed-sled, a typed wrapper for sled (Rust embedded DB).

I'd like to nominate cloudmqtt - "A simple and straightforward to use MQTT client/server [library in/for Rust]"

(Partly self-nominate, as I am a contributor).

There's a new lru crate on the scene and it's fast: https://crates.io/crates/schnellru

4 Likes

I'd like to nominate https://crates.io/crates/moka.

It makes adding a cache to e.g. a web service very simple by providing types for both sync and async usage, as well as providing the common knobs that you want to have (max cache size, TTL-based eviction, size-aware eviction, etc.)