43|生产环境:真实世界下的一个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
《陈天 · Rust 编程第一课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 交流会没想到rust几行代码的小项目会占这么大空间,哈哈 2.4G ./queryer 797M ./scrape_url 1.7G ./httpie 1.9G ./thumbor
作者回复: 有很多中间过程
2021-12-083 - 彭亚伦弱弱地问一句, "加餐|开悟之坡 业界都在用rust干什么"这节课木有了么?
编辑回复: 有的,只是这是邀请的场外大咖来加餐,所以上线时间不是很稳定。不过放心,会有的。
2021-12-0821 - Rayjun很赞,不仅仅是 rust 项目可以参考这个流程,对于其他语言的项目,同样适用
作者回复: 👍
2021-12-08 - 柱子老师,看到您这章提到了:min-sized-rust,并且您在27讲中有提到一些Rust开发前端应用、以Wasm的方式在浏览器里运行的框架,如Yew、Seed; 请问这类Wasm的方案是否有方法编译 Wasm的代码分包,并且以懒加载的方式在用到部分代码的时候再动态加载?2022-05-21
收起评论