今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。
什么是 Rust 库?
在 Rust 中,常被称为 “crate” 的库,是一个打包的单元,可以包含一个或多个模块,提供了一组相关的功能,如脚本和模块,让程序员能够避免重复实现。有两种主要类型的 crate,二进制可执行文件(Binary crate)和库(Library crate)。
如何使用 Rust 库?
使用 Rust 库参考以下步骤。
(1)选择库,确定你想要使用的库,可以到 crates.io 上搜索 Rust 库,里面非常丰富的。
(2)添加依赖 `Cargo.toml
确定好 create 后,通过在 Cargo.toml 文件的 dependencies 部分中包含它来将其添加到你的项目中,也可以通过命令来添加,如 cargo add serde --features derive
(3)编译依赖
当你运行cargo build 或 cargo run时,Rust 的包管理器 Cargo 将从 crates.io 中获取 crate 及其依赖项,并将它们编译为项目的一部分。
(4)在代码中使用库
添加依赖项后,就可以通过使用关键字将其纳入范围来在 Rust 代码中使用该库use,如下:
use rand::Rng;
fn main() {
let random_number = rand::thread_rng().gen_range(1..=100);
println!("随机数: {}", random_number);
}
(5)更新库
通过更新库cargo update,然后 Cargo 将解析最新的兼容版本并Cargo.lock相应地更新文件的。
很受欢迎的 Rust 库
- Serde:它是数据序列化和反序列化的包,非常受欢迎,下载量已经超过 2.16 亿次,有 270 多个版本。而且支持很多的数据格式包括 JSON、YAML、TOML、Pickle、BSON 等等。
- Lazy_static :用于惰性静态数据初始化的包,在 Rust 中的静态变量通常在编译时初始化,但在某些情况下您可能希望在运行时初始化它们。
- Thiserror:是 Rust 中的一个实用库,帮你简化了创建自定义错误类型的过程。可以用 #[error(...)] 宏定义错误的显示方式,并自动获得标准库的 Error 特性。
- Itertools:是一个 Rust 的包,提供了额外的迭代器特征、函数和适配器,扩展了 Rust 标准迭代器的功能。
- Anyhow:是一个简化 Rust 错误处理的包。与 dyn Error 相比,它不需要装箱,避免了额外的内存开销,主打就是一种轻量且方便处理错误的方式。
音频和声音
- Hound:它是一个基于 Rust 的库,用于以 WAV 音频格式进行编码和解码,通常用于原始、未压缩的音频。它的开发主要是为了测试 Claxon,另一个用于 FLAC 解码的 Rust 库。Hound 在 Apache 2.0 许可证下运行,可用于开源和闭源项目,无论是否商业。
- CPAL(跨平台音频库)是一个用纯 Rust 编写的低级音频输入和输出库。主要功能包括枚举音频主机、识别可用音频设备、确定默认输入/输出设备以及管理 PCM 流。
- Symphonia:是一个基于 Rust 的多媒体库,专注于音频解复用、标签读取和解码。它支持流行的音频编解码器和媒体容器,提供高效的音频数据操作系统。
此外,Symphonia 注重 100% Rust 安全性和速度,同时具有最小的依赖性,保持高性能。
其他
- Chrono:是 Rust 的一个日期和时间库。
- Time:是 Rust 的日期和时间库。
- Ring:是一个使用 Rust、C 和汇编语言编写的加密库,旨在促进用户友好和安全的操作。
- Rust bio:该库为生物信息学提供算法和数据结构解决方案,科学领域使用广泛。
- geo:这个包每月的下载量超过 12 万次,提供点、线串和多边形等地理空间类型,并包括各种操作:面积计算、距离测量和仿射变换,搞科学的应该很方便。
有兴趣,可以使用 Rust 的性能优势来完成各个领域的任务,可以从金融科技和生物医学到机器学习和商业智能。在今天认为 Rust 广泛应用于容错软件,特别是生产就绪系统和性能关键组件,未来可期!