#crates #common #libraries

rst-common

快速访问常用 Rust crate

9 个稳定版本

新增 1.5.1 2024 年 8 月 18 日
1.4.0 2024 年 7 月 18 日
1.3.0 2024 年 3 月 25 日
1.1.1 2024 年 2 月 23 日

#314Rust 模式

Download history 12/week @ 2024-04-24 2/week @ 2024-05-15 13/week @ 2024-05-22 24/week @ 2024-05-29 20/week @ 2024-06-05 17/week @ 2024-06-12 12/week @ 2024-06-19 30/week @ 2024-06-26 47/week @ 2024-07-03 22/week @ 2024-07-10 135/week @ 2024-07-17 50/week @ 2024-07-24 25/week @ 2024-07-31 6/week @ 2024-08-07

每月 219 次下载
用于 9 个 crate

Apache-2.0

25KB
91

rst-common

快速访问常用 Rust crate。

动机

创建此 crate 的原因是由于我需要在每个项目中安装大量的常用 crate 库,而且我习惯了使用很多常用库。

所以我一直在想,与其重复我的活动,比如查找库、手动注册等,不如只安装一个包含所有我喜欢的 crate 的单个 crate 会更好。

安装

标准用法

[dependencies]
rst-common = {version = "1.5.0"}

示例安装 with-tokio 功能

[dependencies]
rst-common = {version = "1.3.0", features: ["with-tokio"]}

示例

您可以通过查看 examples 目录来了解如何使用此库。

代码

use rst_common::standard::uuid::Uuid;

fn main() {
    let uid = Uuid::new_v4();
    println!("{}", uid)
}

特殊 Crates

警告

特殊 Crates 意味着,它们有特定的使用方法,例如 thiserrorserde。这些 crate 需要特殊的用法,因为它们使用了 proc_macro

警告

删除包 mockall


thiserror

use rst_common::with_errors::thiserror:{self, Error};

#[derive(Error)]
enum MyError {
    #[error("general error")]
    GeneralError,
}

需要使用 self,这会向编译器发出信号,表示 Error 宏来自 thiserror,并且 crate 存在

serde

use rst_common::standard::serde::{self, Serialize, Deserialize};

#[derive(Debug, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
struct Message {
    msg: String,
}

针对 serde crate,由于此 crate 依赖于 serde_derive,它调用 serde::,我们需要显式地告诉 serde 使用的 crate 路径。

版本要求

所有使用的 crate 都将遵循这些要求

  • 所有低于 1.x (<1.0.0) 的 crate 将保持版本直到次版本,例如:~0.1,这意味着所有新的更新 patch 版本应自动更新,但不是 minor 版本。版本 ~0.1 将自动更新到 0.1.1 等,只要次版本相同。此规则背后的原因是,任何低于 1.0.0 的版本都假定仍在积极开发中,为了保持兼容性,它将使用其 minor 版本来保护。
  • 所有等于或高于 1.x 的 crate 将使用其主版本来维护版本,例如:~1。例如,如果我们使用一个版本为 1.0.1 的 crate,此规则应自动更新为下一个版本:1.0.2 或甚至 1.1.0,但它不会遵循版本 2.0.0 (假定主版本的更改将给我们带来破坏性兼容性)

信息

如果有任何支持 crate 的更新版本,它将通过此库手动更新

例如,现在我们支持 tokio: ~1,这意味着如果 tokio 库发布其新的主要版本:2.0.0,此 crate 将手动更新以支持最新版本

类别(功能标志)

  • 标准
  • 完整
  • 包含-tokio
  • 包含-tracing
  • 包含-logging
  • 包含-errors
  • 包含-tests
  • 包含-http-tokio
  • 包含-cryptography

此库实际上只是根据您选择的 功能 重新导出所有已安装的常用 crate。


standard 功能

#[cfg(feature = "standard")]
pub mod standard {
    pub use async_trait;
    pub use chrono;
    pub use dyn_clone;
    pub use erased_serde;
    pub use futures;
    pub use serde;
    pub use serde_json;
    pub use uuid;
}

full 功能

#[cfg(feature = "full")]
pub mod full {
    pub use async_trait;
    pub use chrono;
    pub use dyn_clone;
    pub use erased_serde;
    pub use futures;
    pub use serde;
    pub use serde_json;
    pub use uuid;
    pub use tokio;
    pub use tracing;
    pub use tracing_subscriber;
    pub use env_logger;
    pub use log;
    pub use anyhow;
    pub use thiserror;
    pub use mockall;
    pub use table_test;
    pub use axum;
    pub use hyper;
    pub use hyper_util;
    pub use tower;
    pub use tower_http;
    pub use rand;
    pub use rand_chacha;
    pub use hex;
    pub use chacha20poly1305;
    pub use blake3;
    pub use argon2;
    pub use ring;
    pub use ed25519_dalek;
    pub use x25519_dalek;
}

with-tokio 功能

#[cfg(feature = "with-tokio")]
pub mod with_tokio {
    pub use tokio;
}

with-tracing 功能

#[cfg(feature = "with-tracing")]
pub mod with_tracing {
    pub use tracing;
    pub use tracing_subscriber;
}

with-logging 功能

#[cfg(feature = "with-logging")]
pub mod with_logging {
    pub use env_logger;
    pub use log;
}

with-errors 功能

#[cfg(feature = "with-errors")]
pub mod with_errors {
    pub use anyhow;
    pub use thiserror;
}

with-tests 功能

#[cfg(feature = "with-tests")]
pub mod with_tests {
    pub use table_test;
}

with-http-tokio 功能

#[cfg(feature = "with-http-tokio")]
pub mod with_http_tokio {
    pub use axum;
    pub use hyper;
    pub use hyper_util;
    pub use tower;
    pub use tower_http;
}

with-cryptography 功能

#[cfg(feature = "with-cryptography")]
pub mod with_cryptography {
    pub use rand;
    pub use rand_chacha;
    pub use hex;
    pub use chacha20poly1305;
    pub use blake3;
    pub use argon2;
    pub use ring;
    pub use sha2;
    pub use ed25519_dalek;
    pub use x25519_dalek;
}

依赖项

~5–21MB
~348K SLoC