陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
23196 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
基础篇 (21讲)
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

43|生产环境:真实世界下的一个Rust项目包含哪些要素?

结合工作流程思考 Rust 的适配性
Rust 在开发流程中的应用
开发流程中的关键环节
业余项目与实际项目的不同
优化可执行文件尺寸的方法
Rust 对监控的支持
收集系统行为数据和性能指标
详尽的日志记录
使用 build.rs 进行编译期处理
预处理数据以简化运行期代码
合理使用特性以减小编译出的文件大小
条件编译
文档测试
crate 级别的文档
Rust 代码的文档注释
GitHub workflow 的定义
持续集成的必要性
集成测试和性能测试
doctest 和文档测试
架构和接口设计对单元测试的影响
单元测试的重要性
使用 cargo-deny 进行依赖审查
使用 Git 的 pre-commit hook
提交代码前的检查
Makefile 或脚本自动化构建
crate 划分
Workspace
思考题
总结
可执行文件大小
日志和监控
编译期处理
特性管理
文档
测试和持续集成
代码仓库的管理
生产环境下的 Rust 项目要素

该思维导图由 AI 生成,仅供参考

你好,我是陈天。
随着我们的实战项目 KV server 接近尾声,课程也到了收官阶段。掌握一门语言的特性,能写出应用这些特性解决一些小问题的代码,算是初窥门径,就像在游泳池里练习冲浪;真正想把语言融会贯通,还要靠大风大浪中的磨练。所以接下来的三篇文章,我们会偏重了解真实的 Rust 应用环境,看看如何用 Rust 构建复杂的软件系统。
今天,我们首先来学习真实世界下的一个 Rust 项目,应该包含哪些要素。主要介绍和开发阶段相关的内容,包括:代码仓库的管理、测试和持续集成、文档、特性管理、编译期处理、日志和监控,最后会顺便介绍一下如何控制 Rust 代码编译出的可执行文件的大小。

代码仓库的管理

我们先从一个代码仓库的结构和管理入手。之前介绍过,Rust 支持 workspace,可以在一个 workspace 下放置很多 crates。不知道你有没有发现,这门课程在 GitHub 上的 repo,就把每节课的代码组织成一个个 crate,放在同一个 workspace 中。
在构建应用程序或者服务的时候,我们要尽量把各个模块划分清楚,然后用不同的 crate 实现它们。这样,一来增量编译的效率更高(没有改动的 crate 无需重编),二来可以通过 crate 强制为模块划分边界,明确公开的接口和私有接口。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了在真实世界下的Rust项目中应该包含的各种要素。首先从代码仓库的管理入手,介绍了在构建应用程序或服务时,应该将各个模块划分清楚,并使用不同的crate实现它们,以提高增量编译效率和明确模块边界。其次,强调了在提交代码时进行基本的检查,包括代码风格检查、编译检查、静态检查和单元测试。文章还提到了使用Git管理代码仓库时可以使用pre-commit hook进行自动化检查,以保证提交代码的正确性。此外,还介绍了使用cargo-deny来确保第三方依赖的安全性。在测试和持续集成方面,文章强调了单元测试的重要性,并介绍了doctest的使用方法。同时,还提到了集成测试和性能测试的引入,以及持续集成的必要性。最后,文章给出了一个基本的Rust github workflow的定义,用于进行持续集成。整体而言,本文为读者提供了全面的指导和建议,使其能够快速了解在真实世界下的Rust项目中应该包含的各种要素。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《陈天 · Rust 编程第一课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 交流会
    没想到rust几行代码的小项目会占这么大空间,哈哈 2.4G ./queryer 797M ./scrape_url 1.7G ./httpie 1.9G ./thumbor

    作者回复: 有很多中间过程

    2021-12-08
    3
  • 彭亚伦
    弱弱地问一句, "加餐|开悟之坡 业界都在用rust干什么"这节课木有了么?

    编辑回复: 有的,只是这是邀请的场外大咖来加餐,所以上线时间不是很稳定。不过放心,会有的。

    2021-12-08
    2
    1
  • Rayjun
    很赞,不仅仅是 rust 项目可以参考这个流程,对于其他语言的项目,同样适用

    作者回复: 👍

    2021-12-08
  • 柱子
    老师,看到您这章提到了:min-sized-rust,并且您在27讲中有提到一些Rust开发前端应用、以Wasm的方式在浏览器里运行的框架,如Yew、Seed; 请问这类Wasm的方案是否有方法编译 Wasm的代码分包,并且以懒加载的方式在用到部分代码的时候再动态加载?
    2022-05-21
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部