网站托管 域名,大连网站建设服务,外贸网站定制公司,免费的网站或软件系列文章目录
【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…系列文章目录
【跟小嘉学 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 文章目录 系列文章目录[TOC](文章目录) 前言一、发布配置(Release profile)1.1、发布配置(Release profile)1.2、自定义 profile 二、发布 crates.io2.1、crates.io2.2、文档注释2.2.1、文档注释介绍2.2.2、常用章节2.2.3、文档注释作为测试2.2.4、为包含注释的项添加文档注释 2.3、pub use2.4、发布 crate 步骤 三、Cargo 工作空间(Workspaces)3.1、工作空间3.2、创建工作空间3.3、在工作空间依赖外部 crate 四、安装 二进制 crate五、使用自定义命令扩展 cargo总结
前言
到目前为止我们讲解了 Cargo 的最基本的特性来构建、运行、测试代码但是它可以为我们做更多的事情。本章节讲解 Cargo 更高级的特性例如
通过 release profile 来自定义构建在 crates.io 上发布库文件通过 workspaces 组织大工程从 crates.io 来安装库使用自定义命令扩展 cargo
主要教材参考 《The Rust Programming Language》 一、发布配置(Release profile)
1.1、发布配置(Release profile)
发布配置(Release profile) 是 预定义的也可以自定义(可以使用不同的配置) 对代码编译拥有更多的控制。每个Profile的配置都独立于其他的Profile。
Cargo 主要两个 Profile
dev profile适用于开发(开发环境) cargo buildrelease profile适用于发布(生产环境)cargo build --release
1.2、自定义 profile
针对每个 profileCargo 都提供了默认的配置如果想自定义 xxx profile 的配置可以在 cargo.toml 里面添加 [profile.xxx] 区域在里面覆盖默认配置的子集。
[profile.dev]
opt-level 0[profile.release]
opt-level 3opt-level 参数表示优化级别编译时间比较久。针对每个配置的默认值和完整选项可以参考 profile
二、发布 crates.io
2.1、crates.io
可以通过发布包来共享你的代码crate 的注册表 在 crates.io 上它会分发已注册的包的源代码主要托管开源的代码。
2.2、文档注释
2.2.1、文档注释介绍
文档注释用于生成HTML文档显式公共 API的文档注释如何使用API使用 /// 来表示 支持markdown 语法。
使用 cargo doc 可以生成文档它会运行 rustdoc 工具把生成的HTML文档放在 target/doc 目录下。
使用 cargo doc --open 可以打开生成的文档。
2.2.2、常用章节
Examples示例代码Panics函数可能发生 panic 的场景Errors如果函数返回 Result描述可能的错误种类以及可导致错误的条件Safety如果函数处于 unsafe 调用就可以解释函数 unsafe 的原因以及调用者确保使用的前提。
2.2.3、文档注释作为测试
示例代码块的附加值运行 cargo test 可以把文档注释中的示例代码作为测试来运行。
2.2.4、为包含注释的项添加文档注释
符号//!此类注释通常用于描述 crate 和模块 crate root (按照惯例 src/lib.rs)一个模块内将 crate 或模块作为一个整体进行记录
2.3、pub use
使用 pub use 导出方便使用的公共 API。
2.4、发布 crate 步骤
一旦发布就是永久性该版本无法覆盖代码无法删除目的依赖于该版本的项目可继续正常工作
1、创建并设置 crate.io 账号并且获得 api token
2、 运行命令 cargo login [api token]通知 cargo 你的 api token 存储在本地 /.cargo/credentials
3、发布之前需要 在 [package] 上设置元数据。
crate 需要唯一的名称namedescription一两句话即可license需要提供许可证的标识值(可以在 http://spdx.org/licenses/ 查找)。version可以参照 http://semver.org 来使用你的语义版本author
4、发布使用 cargo publish 命令
5、使用 cargo yank 撤回版本
不可以删除 crate 之前的版本但是可以防止其他项目把它作为新的依赖但是已经存在的项目可以继续作为依赖
三、Cargo 工作空间(Workspaces)
3.1、工作空间
Cargo 工作空间帮助管理多个相互关联需要协同开发的 crate。cargo 工作空间就是一套共享同一个 cargo.lock和输出文件夹的包。
3.2、创建工作空间
[workspace]
members [adder
]
运行 cargo run -p 二进制crate
3.3、在工作空间依赖外部 crate
工作空间只有一个 cargo.lock在工作空间的顶层目录保证工作空间内所有 crate 的使用的依赖的版本都相同工作空间内所有 crate 相互兼容。
四、安装 二进制 crate 命令 cargo install 来源crates.io 限制只能安装具有二进制目标binary target的crate 二进制目标 binary target是一个可运行的程序由 src/main.rs 或其他被指定为二进制文件的crate 生成 通常在 README 里面有关于 crate 的描述 拥有 binary target拥有 library target两者兼备 cargo install 安装的二进制目录存在根目录的bin文件夹 如果你使用 rustup 安装的 rust 没有任何自定义配置那么二进制文件将存放在 $HOME/.cargo/bin。
五、使用自定义命令扩展 cargo
cargo 被设计成可以使用自命令扩展如果$PATH中的某个二进制文件是 cargo-something你可以像子命令一样运行cargo something。类似这样的自定义命令可以通过该命令列出cargo --list优点可以使用cargo install 来安装扩展像内置工具一样来使用。
总结
以上就是今天要讲的内容