【Rust日报】 2019-08-28
「系列文章」在Rust中使用C库
两篇文章介绍了如何绑定C库,并且将其抽象为安全的方法调用。
Part I: https://medium.com/dwelo-r-d/using-c-libraries-in-rust-13961948c72a
Part II: https://medium.com/dwelo-r-d/wrapping-unsafe-c-libraries-in-rust-d75aeb283c65
使用async/await构建高性能TCP客户端
作者通过创建了一个TCP客户端的项目Clobber来体验将在1.39中稳定的Async/Await的功能,结论:体验非常好,非常期待Rust异步稳定之后,社区将会带来什么变化。
- Read More:https://ragona.com/posts/clobber_async_await
- Clobber : https://github.com/ragona/clobber
通过AVL树来理解Rust的所有权
一个Elixir程序员开始学习Rust,在看完Too Many LinkedList之后,进一步实现更复杂的数据结构:AVL树(自平衡二叉查找树),以此来学习Rust的所有权机制。
- Read More: https://francismurillo.github.io/2019-07-31-Understanding-Rust-Through-AVL-Trees/
- Codes: https://github.com/FrancisMurillo/avl_tree_set_rs
在Rust中使用Tree-sitter解析器生成器
TreeSitter是 GitHub 团队的解析器项目, 目的在于给 GitHub 及 Atom 编辑器提供高效以及跨语言的语法解析支持, 采用 GLR 算法, 支持消歧, 从错误中恢复, 增量解析等功能。TreeSitter支持多种语言,且支持增量解析,它的出现降低了自己实现语言的门槛。
该文章简单介绍了Rust中使用TreeSitter的方法。
- Read More: https://rfdonnelly.github.io/posts/using-tree-sitter-parsers-in-rust/
- tree-sitter: https://tree-sitter.github.io/tree-sitter/
Crev的使用教程
cargo-crev是一个代码审查工具,旨在构建信任的生态网络。但它并不局限于Rust社区,C/Cpp也可以使用。
该工具可以判断你项目中依赖crate的安全性、质量和发现的问题。可以在公共的git仓库里发布可验证的review信息。通过这种方式期望在Rust生态系统中构建可信任的网络。将不会有人再受到未经审查和不受信任代码的困扰。
想想npm因为依赖包出了多少次安全事故。这个工具ms不错,但是否真的可以解决问题?
Read More: https://wiki.alopex.li/ActuallyUsingCrev
使用Rust进行游戏开发6个月之后收获到了什么?
一位使用Rust开发游戏的妹纸,最近6个月内使用ggez框架开发自己的个人游戏项目,这篇文章简单介绍了她的一些感想,比如如何坚持做自己的项目、ECS很棒之类的。
重点是她之前写的另一篇文章:24小时游戏开发,介绍了如何使用ggez框架在24小时内开发一款小游戏。感兴趣的看看吧。
Read More: https://iolivia.me/posts/6-months-of-rust-game-dev/
artichoke: Rust实现的Ruby
兼容MRI。Artichoke core提供了一个与实现无关的Ruby运行时,任何实现都可以加载它。Artichoke core中的运行时将100%通过core和标准库Ruby规范。运行时将以Rust和Ruby的混合方式实现。Artichoke中的Regexp实现就是这种方法的一个典型例子。
rx: 一个Rust实现的可扩展的现代像素编辑器
像素编辑器一般用于对小图片进行编辑制作的工具。
- Read More: https://cloudhead.io/rx/
- Repo: https://github.com/cloudhead/rx
「系列」Rust for OOP系列:闭包
这位博主打算写一系列主题是Rust for OOP的文章,主要是针对有一定OOP语言开发经验的人来学习。已经写了多篇,本文是关于闭包。
Read More:https://oribenshir.github.io/afternoon_rusting/blog/closures
actix-raft: 基于actix框架实现的raft库
Raft是一种分布式共识协议。该作者的目标也是想做分布式数据库。
Repo: https://github.com/railgun-rs/actix-raft
Rust异步代码的优势:相比于其他语言更加容易调试
该文作者通过研究栈回溯信息发现,Rust的异步代码基于轮询(Poll)模型,意味着我们总是有「异步调用者」在轮询期间,等待「异步被调用函数」在栈上完成。这个属性使得调试异步代码在Rust中相比于其他语言更加容易。(该文比较了JavaScript中的异步栈回溯信息
Read More: http://fitzgeraldnick.com/2019/08/27/async-stacks-in-rust.html
「视频」使用Rust扩展Python
演讲的重点是:pyo3 和 milksnake
- Videos: https://www.youtube.com/watch?v=4h8Ll9_-SZY
- PyO3 : https://github.com/PyO3
- milksnake: https://github.com/getsentry/milksnake
「思考」对于小的结构体,传值(By-Copy)还是传引用(By-Borrow)?
这个小小的问题,涉及日常编写代码需要考虑的两个问题:性能 vs 人体工程学
我们是追求性能呢,还是追求代码的可读性和维护性等?
该文作者通过大篇幅的讨论,甚至深入到C++中探讨,得出结论:还是By-Copy吧。至于原因,还需要仔细阅读他的文章。
Read More: https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/
RACC: Berkeley YACC解析器生成器移植到Rust
作者的练手项目
Repo: https://github.com/sivadeilra/racc/
From 日报小组 Chaos
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅: