RustConf 2021 项目精选
以下项目来自 RustConf 2021。
移动构造函数:有可能吗?
“自引用” 类型是一种对自身引用的类型;异步 Features 是当今 Rust 中最常见的自引用类型。但是,它们不能在不使引用无效的情况下移动,因此常被固定在堆或栈上。你不能返回它们或将之放入 Collection(当然了不用 Boxing)。C++ 通过移动构造函数大量使用可安全移动的自引用类型,将移动构造函数桥接到 Rust 是 C++ FFI 未解决的重大问题之一。使用对 Pin P 保证的新颖解释,我们将所有 C++ 构造函数(而不仅仅是移动构造函数)移植到 Rust,而不影响 Rust 的「使用后移动」保护(C++ 所缺乏的)。今天,稳定的 Rust 完全支持按移动返回和集合,除了零成本的 C++ FFI,Rust 的 “构造函数” 还可用于在纯 Rust 中表达新颖的数据结构。
视频:(4) RustConf 2021 - Move Constructors: Is it Possible? by Miguel Young de la Sota - YouTube
在 Rust 中不要过度优化的重要性
Rust 编程语言具有许多高级功能,可以实现一些出色的优化。对于新的 Rust 开发人员来说,这些既令人兴奋又令人沮丧。因为 Rust 允许我们编写经验丰富的 Rust 开发人员可以理解的高度优化的代码,所以很容易一直这样做。本演讲将展示这些优化通常对于获得优于 Python 等高度动态语言的性能来说是不必要的。对于新的 Rust 开发人员来说,打破过度优化的诱惑可以提高 Rust 的生产力和满意度。
视频:(4) RustConf 2021 - The Importance of Not Over-Optimizing in Rust by Lily Mara - YouTube
模糊驱动开发
有时候你可以想出一种简单的方法验证正确性,但很难找到单元测试的实际示例。你知道「对于所有 x 都成立」但是无法为 x 想出好的可能性。这就是依靠模糊测试可以通过提供一些代码尚未涵盖的真实示例来快速推动开发的地方。本演讲我们将一起完成使用 cargo fuzz 的过程,以构建一个可以压缩 JSON Patch 操作的快速程序,涉及 Rust 社区的一些实用程序/库(模糊测试工具,serde_json 等),以及学习一些关于在开始模糊测试时你可能会有什么样的误解。
视频:(4) RustConf 2021 - Fuzz Driven Development by Midas Lambrichts - YouTube
使用 Rust 写最快的 GBDT 库
本演讲将分享作者优化梯度提升决策树机器学习算法的 Rust 实现的经验。通过代码片段、堆栈跟踪和基准测试,探索如何使用 rayon、perf、cargo-asm、编译器内在函数和 unsafe rust 来编写一个 GBDT 库,该库的训练速度比用 C/C++ 编写的类似库更快。PS:作者是个美女。
视频:(4) RustConf 2021 - Writing the Fastest GBDT Library in Rust by Isabella Tromba - YouTube
Twitter 工程师使用 Rust 重构的故事
三名工程师,在不同的方面,各自采用自己的方法将 Rust 添加到 C 代码库中,每个人都越来越雄心勃勃。最初只是想用同样快速的 Rust 实现替换服务器的网络和事件循环。我们会重用 C 中的许多核心组件,然后从 Rust 中调用它们。肯定不会有那么多代码...... Pelikan 是 Twitter 用于内存缓存的开源和模块化框架,允许我们用单个代码库替换 Memcached 和 Redis 分支并获得更好的性能。在 Twitter,我们运行数百个缓存集群,在内存中存储数百 TB 的小对象。内存缓存至关重要,需要性能、可靠性和效率,本演讲将分享在 Pelikan 工作的冒险经历以及如何用 Rust 重写它。
视频:(4) RustConf 2021 - Whoops! I Rewrote It in Rust by Brian Martin - YouTube
五个鲜为人知的属性增强你的代码
属性是 Rust 语言中最有用和最方便的特性之一,它使程序员能够自动推导 Trait,在几分钟内设置测试套件,并有条件地为不同平台编译代码。但是在标准库的内部和外部,还有许多其他有用的属性,它们常常被忽视。
视频:(4) RustConf 2021 - Supercharging Your Code With Five Little-Known Attributes by Jackson Lewis - YouTube
编译时协调
你可以写出好的代码,我可以,但是我们可以一起编写正确的代码吗?今天普通开发者面临的最困难的问题不是算法或框架。错误通常在代码间发现。项目包含必须在任何地方遵守但未在任何地方指定的规则。它们是惯例、部落知识和最佳实践。让我们了解 Rust 如何让编写在文件、crates 和人员之间代码的一致变得更容易。这是关于如何停止踩到每个人的脚趾并学会爱上 borrow checker 的故事。
视频:(4) RustConf 2021 - Compile-Time Social Coordination by Zac Burns - YouTube
Hacking Rustc
编译器通常被视为一个令人生畏的 “黑匣子”,只有少数人才能理解。实际上,编译器 “只是” 另一种类型的程序。只要你知道编译器是用什么语言编写的,编译器编译的语言是什么,并且有时间,你也可以处理它们。如果你曾经对修改编译器感兴趣,或者遇到了一个真心希望尽快修复的错误,那么这是卷起袖子自己动手的机会,因为我们将介绍 rustc 上的 hacking 基础知识。
视频:(4) RustConf 2021 - Hacking rustc: Contributing to the Compiler by Esteban Kuber - YouTube
完整内容可以查看:This Week in Rust 409 · This Week in Rust
全栈 Rust:包含示例的 Tutorial
本 Tutorial 是一个简单的全栈 Web 应用,包含具有数据库支持的 REST 后端和基于 Wasm 的单页应用程序前端。具体是构建一个简单的宠物主人应用程序,使用户能够添加主人和他们的宠物。程序需要将所有者和他们的宠物列表提供详细视图,能够根据需要删除和添加宠物。
教程涵盖以下内容:
- 创建一个全栈的 Rust APP
- 常用功能
- 构建 REST 后端
- 前端实现
- 测试
教程地址:Full-stack Rust: A complete tutorial with examples - LogRocket Blog
Rust For Javaer
写给 Java 程序员的 Rust 介绍 Tutorial。包括以下内容:
- 简介
- Rust 构建和运行
- Rust 变量
- Rust 默认的不可变性
- Rust 函数
- Rust if/else 和表达式
- Rust 字符串
- Rust 结构体(Java 类)
- Rust 结构体函数(Java 静态函数)
- Rust 结构体方法(Java 方法)
- Rust Trait(Java 接口)
- Rust 数组(Java 数组)
- Rust 元组
- Rust Vec
- Rust 枚举(Java 枚举)
- Rust Match
- Java 17 Switch 表达式(Rust Match)
- Rest Generics
- Rust Option(vs Null/Optional)
- Rust Result(Java Exception)
非常不错的介绍,值得一看看。
视频地址:(4) Rust for Java Developers - YouTube
eztd:让 Rust 更易学习
项目致力于『可学习性和可控制』,目标包括:
- 低语法噪声
- 对 Python 开发者熟悉
- 允许优化内循环
- 与 Rust 生态互操作
设计指南:eztd/CONTRIBUTING.md at main · epage/eztd
GitHub:epage/eztd: Source code spell checker
网址:Learnability of Rust
社区学习交流平台订阅:
- Rustcc 论坛:支持 rss
- 微信公众号:Rust 语言中文社区