陈天 · Rust 编程第一课
实战驱动,快速上手 Rust
陈天  Tubi TV 研发副总裁
总榜 第16名
专栏
已完结·共 65 讲
|
2.3w 人已学
|
收藏
如果你不希望值的所有权被转移,在 Move 语义外,Rust 提供了 Copy 语义。如果一个数据结构实现了 Copy trait,那么它就会使用 Copy 语义。这样,在你赋值或者传参时,值会自动按位拷贝(浅拷贝)。
来自:07|所有权:值的生杀大权到底在谁手上?
11 人划过
Rust 函数参数的类型和返回值的类型都必须显式定义,如果没有返回值可以省略,返回 unit。函数内部如果提前返回,需要用 return 关键字,否则最后一个表达式就是其返回值。如果最后一个表达式后添加了; 分号,隐含其返回值为 unit。
来自:03|初窥门径:从你的第一个Rust程序开始!
10 人划过
Rust 的创造者们,重新审视了堆内存的生命周期,发现大部分堆内存的需求在于动态大小,小部分需求是更长的生命周期。所以它默认将堆内存的生命周期和使用它的栈内存的生命周期绑在一起,并留了个小口子 leaked 机制,让堆内存在需要的时候,可以有超出帧存活期的生命周期。
来自:11|内存管理:从创建到消亡,值都经历了什么?
9 人划过
但单态化之后,原本的泛型信息就被丢弃了。
来自:12|类型系统:Rust的类型系统有什么特点?
7 人划过
我这里的思路是使用 protobuf。protobuf 可以描述数据结构,几乎所有语言都有对 protobuf 的支持。当用 protobuf 生成一个 image spec 后,我们可以将其序列化成字节流。但字节流无法放在 URL 中,怎么办?我们可以用 base64 转码!
来自:05|get hands dirty:做一个图片服务器有多难?
5 人划过
虽然 HTTP/2 依旧受困于 TCP 层的队头阻塞,但它解决了应用层的队头阻塞。
来自:29|网络开发(下):如何使用Rust处理网络请求?
4 人划过
Rust 标准库的 From/ TryFromtrait ,就是出于这个目的设计的,非常值得我们好好使用
来自:06|get hands dirty:SQL查询工具怎么一鱼多吃?
4 人划过
Channel 把锁封装在了队列写入和读取的小块区域内,然后把读者和写者完全分离
来自:34|并发处理(下):从atomics到Channel,Rust都提供了什么工具?
4 人划过
建议你在开发前,先用类似 thiserror 的库定义好你项目中主要的错误类型,并随着项目的深入,不断增加新的错误类型,让系统中所有的潜在错误都无所遁形
来自:18|错误处理:为什么Rust的错误处理与众不同?
3 人划过
所以,如果你希望你的数据结构不能被移动,可以为其添加 PhantomPinned 字段来隐式声明 !Unpin。
来自:39|异步处理:async/await内部是怎么实现的?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

陈天

Tubi TV 研发副总裁

陈天,现任北美最大的免费流媒体服务 TubiTV 的高级研发副总裁。他始终致力于高性能系统的研发,活跃在网络协议、网络安全、服务端架构、区块链以及云服务等诸多热门领域,已经积累了 18 年工作经验。 因为始终坚持自己的工作理念——“以合适的工具解决合适的问题”,所以在职业...查看更多
编辑推荐
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283790 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180992 人已学习

¥98¥399
Rust 程序设计(第 2 版)
Jim Blandy, Jason Orendorff, Leonora F. S. Tindall
软件工程师

41讲 | 1489 人已学习

¥62.93¥89.9
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224925 人已学习

¥68¥199
Rust 语言从入门到实战
唐刚
Rust 语言中文社区联合创始人

36讲 | 5290 人已学习

¥59¥129
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123455 人已学习

¥98¥299