自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你應(yīng)該嘗試的12個(gè)殺手級(jí)Rust庫(kù)

開(kāi)發(fā) 后端
我剛剛在我的一個(gè)較大的Rust項(xiàng)目中跨越了20K LOC,我想暫停一下并分享一些我所使用的偉大的Rust庫(kù)。

我剛剛在我的一個(gè)較大的Rust項(xiàng)目中跨越了20K LOC,我想暫停一下并分享一些我所使用的偉大的Rust庫(kù)。

我還計(jì)劃在未來(lái)的文章中討論一些話題,比如在Rust與Go之間做決定,或者決定是否為你的團(tuán)隊(duì)或項(xiàng)目采用Rust,以及在你決定接受它之后應(yīng)該期待什么。

[[426531]]

Clap

用Rust構(gòu)建CLI工具是天作之合--看看ripgrep和Rust自己的Cargo。超快的啟動(dòng)時(shí)間,較小的二進(jìn)制大小,類(lèi)型安全的代碼,運(yùn)行時(shí)安全的二進(jìn)制,交叉編譯到你可能想要的幾乎所有架構(gòu)。

要開(kāi)始構(gòu)建CLI工具,clap是一個(gè)非常棒的CLI庫(kù),它是如此之好,我不認(rèn)為有任何理由像其他語(yǔ)言中常見(jiàn)的那樣有一打替代品。事實(shí)上,如果你想嘗試Rust,我建議先看看rustup,然后試試這個(gè)庫(kù),看看它能給你帶來(lái)什么。

Serde

和clap一樣,serde是一個(gè)功能豐富、性能卓越的通用序列化庫(kù)。事實(shí)上,想想Java和.NET,我不記得有哪個(gè)序列化庫(kù)從各方面都做得這么好--人體工程學(xué)和性能。

不要自己嘗試從/向文件讀/寫(xiě),相反--先寫(xiě)好你的數(shù)據(jù)類(lèi)型,讓serde做所有的工作。作為獎(jiǎng)勵(lì),你可以在一切完成后混合和匹配數(shù)據(jù)格式(YAML、JSON)。

Reqwest

Reqwest遵循HTTP客戶端庫(kù)的黃金標(biāo)準(zhǔn),如request、superagent和requests,并將其完美地應(yīng)用于Rust。它是我的HTTP客戶端的首選庫(kù),功能豐富且完整。

Rayon

Rayon是一個(gè) "Rust的數(shù)據(jù)并行庫(kù)",簡(jiǎn)單地說(shuō),給它數(shù)據(jù),它就知道如何把它分割成獨(dú)立的塊,讓你所有的CPU核心工作。

或者更簡(jiǎn)單地說(shuō),給它一個(gè)列表,它就會(huì)在上面并行化映射,還有其他功能。這對(duì)CLI工具非常有用;不是所有的語(yǔ)言都能在命令行上實(shí)現(xiàn)并行化。

Slog

slog是一個(gè)非常完整的Rust日志套件。它是一個(gè)核心,后面有很多插件,比如終端輸出的term,JSON輸出的json等等。

你應(yīng)該知道,還有l(wèi)og,它的目標(biāo)是成為標(biāo)準(zhǔn)Rust的一部分,是一個(gè)更簡(jiǎn)單的選擇。出于這個(gè)原因,我個(gè)人已經(jīng)從slog轉(zhuǎn)到了log。

itertools

在你的列表上多加幾個(gè)運(yùn)算符也無(wú)妨,尤其是許多或大多數(shù)運(yùn)算符是零成本的。有了itertools,你就可以得到這些。如果你是一個(gè)像lodash這樣的庫(kù)的粉絲,那就太好了。

Hyper

hyper是一個(gè)用Rust編寫(xiě)的快速HTTP實(shí)現(xiàn),也是為Rust編寫(xiě)的(相對(duì)于那些用C編寫(xiě)的,涵蓋了動(dòng)態(tài)語(yǔ)言的性能)。你會(huì)發(fā)現(xiàn)hyper幾乎出現(xiàn)在你使用的所有高級(jí)庫(kù)中,如果你直接使用它,感覺(jué)有點(diǎn)像Netty或Finagle。我發(fā)現(xiàn)自己既把hyper當(dāng)作一個(gè)HTTP工具箱(使用其中的部分),也把它當(dāng)作一個(gè)整體,在它上面建立一個(gè)服務(wù)器。

猜猜看,什么東西不使用Hyper?是Actix。Actix試圖變得更簡(jiǎn)單,從我的經(jīng)驗(yàn)來(lái)看--它能做到。我經(jīng)常使用Actix而不是Hyper,因?yàn)樗呒?jí),對(duì)于服務(wù)的目的來(lái)說(shuō),更成熟。今天,我默認(rèn)直接使用Actix而不是Hyper,除非我需要建立一些低級(jí)別的東西,或者有一個(gè)直接需要Hyper的庫(kù)(有很多)。

PyO3

PyO3是在Python中構(gòu)建Rust庫(kù)(或者說(shuō)是Rust中的Python庫(kù)? )的比較流行的庫(kù)之一。如果你想看看這種混合的結(jié)果,這里有hyperjson--一個(gè)由Rust的serde支持的Python的JSON庫(kù)。

依靠Rust的安全性和Serde的性能,你幾乎不費(fèi)吹灰之力就得到了一個(gè)安全的、最快的Python JSON庫(kù)之一。

想在3個(gè)步驟中改進(jìn)Python嗎?

  • 找到一個(gè)偉大的Rust 庫(kù)
  • 用PyO3包住它
  • 注意:PyO3(可能還有rust-cpython)可能有一些設(shè)計(jì)缺陷,可能會(huì)放棄安全。

proptest

proptest是Rust的一個(gè)基于屬性的測(cè)試庫(kù)。自從我在短暫的Haskell工作中使用QuickCheck后,我就在我使用的每一種語(yǔ)言中尋找這類(lèi)庫(kù)--這些庫(kù)提出它們會(huì)通過(guò)智能地思考一組輸入數(shù)據(jù)來(lái)自動(dòng)為你找到一個(gè)失敗的測(cè)試案例,使你的代碼陷入困境。

libloading

對(duì)于那些想把Go或其他c-lib庫(kù)混入Rust前端的人來(lái)說(shuō),libloading使其變得簡(jiǎn)單。

在過(guò)去的一年里,我用Rust構(gòu)建了大中型項(xiàng)目,我接受Rust生態(tài)系統(tǒng)的某些部分還沒(méi)有準(zhǔn)備好,并且不吝于用其他語(yǔ)言(主要是Go)來(lái)構(gòu)建這些項(xiàng)目--只是用libloading把所有東西都掛回Rust中。

性能

最后你應(yīng)該知道的是,干凈、簡(jiǎn)單的Rust在默認(rèn)情況下是非??斓?。這里有一個(gè)關(guān)于正確時(shí)間的談話。

還有幾個(gè)我?guī)缀跻恢毕矚g使用的庫(kù),它們?cè)赗ust已經(jīng)提供的默認(rèn)情況下給你帶來(lái)了不錯(cuò)的性能提升。

  • regex - 一個(gè)Regex庫(kù),速度真的很快,包括與其他編程語(yǔ)言相比。
  • jemalloc - 最快的內(nèi)存分配器之一,在最近的Rust版本中被放棄了,轉(zhuǎn)而使用操作系統(tǒng)的默認(rèn)值。我發(fā)現(xiàn)它比OSX的默認(rèn)分配器更快,但只有在你知道你需要它的時(shí)候才使用它,因?yàn)樗o你的二進(jìn)制文件增加了一些重量(大約700kb)。

摘要

Rust,用一個(gè)詞來(lái)形容就是--強(qiáng)大。

但還有很多話要說(shuō)。例如--與其他編程語(yǔ)言相比,Rust也是極其年輕的。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2022-10-24 00:38:36

RustCLI工具

2023-04-10 14:49:35

Web應(yīng)用程序工具

2022-07-06 08:39:33

Python代碼

2021-01-19 22:27:36

Python編程語(yǔ)言開(kāi)發(fā)

2023-12-07 08:35:22

2015-08-24 10:51:00

全棧

2015-08-25 09:57:18

程序員全棧工程師

2021-09-16 21:22:15

Flutter庫(kù)系統(tǒng)

2019-03-27 08:32:26

邊緣計(jì)算網(wǎng)絡(luò)

2014-11-05 09:34:06

開(kāi)源監(jiān)測(cè)工具

2020-05-26 08:38:57

JavaScript庫(kù)語(yǔ)言

2015-10-21 17:38:22

程序員全棧工程師

2022-10-20 15:16:23

JavaScript數(shù)組技能

2023-12-06 18:06:37

Git開(kāi)發(fā)

2024-08-13 00:23:48

2023-12-21 18:01:58

Docker容器部署

2023-12-03 18:26:25

IDEA插件

2018-07-31 09:00:00

網(wǎng)站優(yōu)化工具

2012-04-20 09:52:02

移動(dòng)應(yīng)用

2013-07-09 09:55:16

Windows 8.1
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)