当前位置: 首页 > 科技观察

你应该尝试的12个Rust杀手级库

时间:2023-03-17 22:32:09 科技观察

我刚刚在我的一个较大的Rust项目上完成了20KLOC,我想暂停一下并分享我使用的一些很棒的Rust库。我还计划在以后的文章中涵盖一些主题,例如在Rust和Go之间做出决定,或者决定是否为您的团队或项目采用Rust,以及在您决定采用它后会发生什么。Clap使用Rust构建CLI工具是天作之合——查看ripgrep和Rust自己的Cargo。超快的启动时间、较小的二进制文件大小、类型安全的代码、运行时安全的二进制文件、交叉编译到您可能想要的几乎任何架构。要开始构建CLI工具,clap是一个很棒的CLI库,它太棒了,我看不出有任何理由拥有其他语言中常见的十几个替代品。事实上,如果你想尝试Rust,我建议先看看rustup,然后试试这个库,看看它能给你带来什么。Serde和clap一样,是一个通用的序列化库,具有丰富的特性和出色的性能。事实上,考虑到Java和.NET,我不记得有哪个序列化库在各个方面都做得很好——人体工程学和性能。不要尝试自己读取/写入文件,而是先写入数据类型,然后让serde完成所有工作。作为奖励,您可以在完成所有操作后混合和匹配数据格式(YAML、JSON)。ReqwestReqwest采用了HTTP客户端库的黄金标准,如request、superagent和requests,并将它们完美地应用于Rust。它是我用于HTTP客户端的首选库,功能丰富且完整。RayonRayon是一个“Rust数据并行库”,简单地说,你给它数据,它知道如何将数据拆分成独立的块,让你所有的CPU核心工作。或者更简单地说,给它一个列表,它会并行处理上面的地图等等。这对于CLI工具非常有用;并非所有语言都在命令行上启用并行化。Slogslog是一个非常完整的Rust日志记录套件。它是一个核心,后面还有很多插件,比如终端输出的term,JSON输出的json等等。你应该知道还有日志,它旨在成为标准Rust的一部分,并且是一个更简单的替代方案。出于这个原因,我个人已经从slog转向log。Itertools在您的列表中增加几个运算符并没有坏处,特别是因为许多或大多数运算符的成本为零。使用itertools,您可以做到这一点。如果您喜欢lodash这样的库,那就太好了。Hyperhyper是一种用Rust编写并为Rust编写的快速HTTP实现(相对于用C编写的那些,涵盖动态语言性能)。你会发现hyper几乎出现在你使用的所有高级库中,如果直接使用,感觉有点像Netty或者Finagle。我发现自己将hyper用作HTTP工具箱(使用它的一部分),并将其作为一个整体,在它之上构建一个服务器。猜猜看,什么不使用Hyper?是阿克提斯。Actix试图变得更简单,并且根据我的经验-它提供了。我经常使用Actix而不是Hyper,因为它更先进,而且就服务而言,它更成熟。今天,我默认直接使用Actix而不是Hyper,除非我需要构建一些低级的东西,或者有一个库直接需要Hyper(有很多)。PyO3PyO3是用于在Python中构建Rust库的更流行的库之一(或者它是Rust中的Python库?)。如果您想查看这种混合的结果,这里有hyperjson——一个由Rust的serde提供支持的PythonJSON库。凭借Rust的安全性和Serde的性能,您可以毫不费力地获得安全且最快的PythonJSON库之一。想通过3步改进Python?找到一个很棒的Rust库用PyO3包装它注意:PyO3(可能还有rust-cpython)可能有一些设计缺陷,可能会放弃安全性。proptestproptest是一个基于属性的Rust测试库。自从我在我短暂的Haskell工作中使用QuickCheck以来,我一直在寻找我使用过的每种语言的这类库——这些库表明它们会通过智能地思考一组来自动为你找到一个失败的库使代码陷入困境的输入数据测试用例。libloading对于那些想要将Go或其他c-lib库混合到Rust前端的人来说,libloading使之变得容易。在过去的一年里用Rust构建了大中型项目,我承认Rust生态系统的某些部分还没有准备好,并且毫不犹豫地用其他语言(主要是Go)构建这些项目——只是使用libloading将所有东西都挂回Rust。性能最后你应该知道的是干净、简单的Rust默认情况下非常快。这里说一下合适的时机。还有一些我几乎总是喜欢使用的库,它们可以为您提供比Rust默认提供的更好的性能提升。regex-一个非常快的Regex库,包括与其他编程语言相比。jemalloc-最快的内存分配器之一,在最近的Rust版本中被放弃,支持操作系统的默认设置。我发现它比OSX的默认分配器更快,但只有在您知道需要它时才使用它,因为它会增加二进制文件的重量(大约700kb)。抽象Rust,一言以蔽之,是强大的。但还有很多话要说。例如——与其他编程语言相比,Rust还非常年轻。