你一定要知道,Rust 最受欢迎的这些库

2024年 2月 19日 75.3k 0

大家好,我是渔夫。

今天分享主题是,关于一些值得注意的 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 广泛应用于容错软件,特别是生产就绪系统和性能关键组件,未来可期!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论