【跟小嘉学 Rust 编程】一、Rust 编程基础
【跟小嘉学 Rust 编程】二、Rust 包管理工具使用
【跟小嘉学 Rust 编程】三、Rust 的基本程序概念
【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念
【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据
【跟小嘉学 Rust 编程】六、枚举和模式匹配
【跟小嘉学 Rust 编程】七、使用包(Packages)、单元包(Crates)和模块(Module)来管理项目
【跟小嘉学 Rust 编程】八、常见的集合
【跟小嘉学 Rust 编程】九、错误处理(Error Handling)
【跟小嘉学 Rust 编程】十一、编写自动化测试
【跟小嘉学 Rust 编程】十二、构建一个命令行程序
【跟小嘉学 Rust 编程】十三、函数式语言特性:迭代器和闭包
【跟小嘉学 Rust 编程】十四、关于 Cargo 和 Crates.io
到目前为止,我们讲解了 Cargo 的最基本的特性来构建、运行、测试代码,但是它可以为我们做更多的事情。本章节讲解 Cargo 更高级的特性,例如:
主要教材参考 《The Rust Programming Language》
发布配置(Release profile) 是 预定义的,也可以自定义(可以使用不同的配置) 对代码编译拥有更多的控制。每个Profile的配置都独立于其他的Profile。
Cargo 主要两个 Profile:
针对每个 profile,Cargo 都提供了默认的配置,如果想自定义 xxx profile 的配置,可以在 cargo.toml 里面添加 [profile.xxx] 区域,在里面覆盖默认配置的子集。
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
opt-level 参数表示优化级别,编译时间比较久。针对每个配置的默认值和完整选项,可以参考 profile
可以通过发布包来共享你的代码,crate 的注册表 在 crates.io 上,它会分发已注册的包的源代码,主要托管开源的代码。
文档注释用于生成HTML文档,显式公共 API的文档注释(如何使用API),使用 /// 来表示 支持markdown 语法。
使用 cargo doc 可以生成文档,它会运行 rustdoc 工具,把生成的HTML文档放在 target/doc 目录下。
使用 cargo doc --open 可以打开生成的文档。
示例代码块的附加值:运行 cargo test 可以把文档注释中的示例代码作为测试来运行。
使用 pub use 导出方便使用的公共 API。
一旦发布,就是永久性,该版本无法覆盖,代码无法删除,目的:依赖于该版本的项目可继续正常工作
1、创建并设置 crate.io 账号,并且获得 api token
2、 运行命令: cargo login [api token],通知 cargo ,你的 api token 存储在本地 ~/.cargo/credentials
3、发布之前需要 在 [package] 上设置元数据。
4、发布:使用 cargo publish 命令
5、使用 cargo yank 撤回版本:
Cargo 工作空间,帮助管理多个相互关联需要协同开发的 crate。cargo 工作空间就是一套共享同一个 cargo.lock和输出文件夹的包。
[workspace]
members = [
"adder"
]
运行 :cargo run -p 二进制crate
工作空间只有一个 cargo.lock,在工作空间的顶层目录,保证工作空间内所有 crate 的使用的依赖的版本都相同,工作空间内所有 crate 相互兼容。
命令 cargo install
来源:crates.io
限制:只能安装具有二进制目标(binary target)的crate
通常在 README 里面有关于 crate 的描述
cargo install 安装的二进制目录存在根目录的bin文件夹
如果你使用 rustup 安装的 rust 没有任何自定义配置,那么二进制文件将存放在 $HOME/.cargo/bin。
以上就是今天要讲的内容