Libra 中使用的 rust crates

昨天朋友圈被 Facebook 的 Libra 刷屏。网上有很多关于 Libra 的快文章,从上帝视角到技术细节,从经济模型到语言实现,可谓是各领风骚,我就不凑短期的热闹。因为最近在学 Rust,就在本地 build libra 的漫长时间里,整理了 Libra 的依赖 —— 我想一个语言的初学者都会有类似的问题,一个大公司(成熟团队)所做的项目,究竟会用到哪些生态中成熟的类库?毕竟,awesome-xxx 过于大而全,反而不便甄选。我之前也整理过 tikv 的依赖,发现一些关键库的使用,大家英雄所见略同。libra 因为涉及到 cryptocurrency,相关的加密算法也额外多些。具体细节大家移步(可以点击原文链接):https://github.com/tyrchen/unchained/blob/master/code/libra.md。因为我直接从编译时下载的 log (Downloaded xxx) 来抓的依赖,所以里面有依赖的依赖。

有同学可能好奇是怎么做的,其实很简单:我把抓下来的一行行文字,类似:

Downloaded arc-swap v0.3.11

放在 vscode 里用 regex find/replace 成:

## [arc-swap (v0.3.11)](https://crates.io/crates/arc-swap)

具体的 regex 长这样:

Downloaded\s+([\w_-]+)\s+(v[^$]+)$

vscode 里的截图:

然后用 sort lines 给它们排个序,去重,然后 option + click 每个链接,读 crates.io 的文档,复制其描述,然后放上例子 —— 这是个苦力活,主要是一个个做阅读理解的时间比较长。

libra 里面用了 pingcap 出品的 grpc-rs 和 rust-rocksdb。其中 rust-rocksdb 并没有放在 crates.io 里,猜想原因之一是 crates.io 里已经有同名 library。pingcap 威武!tikv 威武!

原文发布于微信公众号 - 程序人生(programmer_life)

原文发表时间:2019-06-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券