Rust 实战 · 手写下一代云原生消息队列
许文强
前腾讯云 Kafka 技术负责人
462 人已学习
立即订阅
Rust 实战 · 手写下一代云原生消息队列
15
15
1.0x
00:00/00:00
登录|注册

03|正式开工:如何组织、编译、打包复杂的Rust项目?

本课程为精品小课,不标配音频
你好,我是文强。
这节课开始,我们就正式来写消息队列架构中的元数据集群部分。首先我们需要初始化一个项目,接下来我会详细讲解如何组织项目结构,以及如何编译打包 Rust 项目。

Rust 的 bin、lib 和 mod

在初始化项目之前,我们先来学习 3 个基础概念,cargo 中的 bin、lib、mod。
在 Rust 中,项目代码是通过 bin、lib、mod 这三种形式来组织的,先介绍下它们的功能。
1. bin
用来存放主入口 main 函数的目录。如下所示,它是通过 cargo.toml 中的 [[bin]] 语法指定的。name 表示编译生成的二进制文件的名称,path 表示主入口 main 函数所在的文件。当然,你可以在 cargo 文件中指定多个 [[bin]] ,生成多个目标二进制文件。
[[bin]]
name = "placement-center"
path = "src/placement-center/server.rs"
[[bin]]
name = "placement-center1"
path = "src/placement-center/server1.rs"
2. lib
这是 Library 的简写,表示功能库的集合。比如我们有一批通用的功能,就可以通过 lib 来组织,封装成一个独立的 lib,给其他项目调用。在 https://crates.io/ 上的各种基础功能库都是 lib 的形式。从功能来看,Rust 中 lib 的概念相当于 Java Maven 中的 module。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Rust项目的组织结构包括bin、lib和mod,用于存放主入口、功能库和独立的代码功能。 2. 推荐的项目目录结构适合单体项目,但对于复杂项目需要通过workspace来组织多个lib和bin。 3. 项目结构的核心是在项目的根目录通过workspace来组织管理子项目,其中lib完成相关业务逻辑,bin是主入口。 4. Cargo build命令可以简单地编译打包Rust项目,根据不同的Profile提供不同的优化机制。 5. 在开发测试时,应选择dev模式以获得更快的构建速度,而在线上环境则需要选择release模式。 6. 通过make和makefile来完成打包,makefile中定义了release、test、clean等target,实现编译和打包的流程。 7. makefile中的release target包含创建目录、编译release包、拷贝文件和打包成.tar.gz文件的逻辑。 8. 在组织复杂的Rust项目时,workspace是需要重点关注的一个功能,同时需要多了解Cargo的各种语法。 9. Rust在语言基础设施方面做得非常好,熟悉各种语法后,实际的工作量是很低的。 10. 项目中发布一些good first issue的任务,让学习者有真正动手的机会,可以选择自己感兴趣的任务来执行。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 实战 · 手写下一代云原生消息队列》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部