前言
本文阅读耗时两分钟
目录
一、发布配置
有两种模式
dev profile
:开发模式,cargo build
release profile
:发布模式,cargo build --release
区别
E:\VSCodeWorkspace\rust\web>cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
E:\VSCodeWorkspace\rust\web>cargo build --release
Finished release [optimized] target(s) in 2.61s
一个是dev
没有优化代码的,一个是release
,优化了代码。
我们如果想自定义这个profile
配置,如何做?
只要在Cargo.toml
里添加对应的profile
即可(profile.dev
、profile.release
)
具体profile
的各种含义可以见 profile配置
注意
在发布前,我们必须准备好我们的文档注释,利用cargo doc
或者 cargo doc --open
打开看一看。或者通过cargo test
来检查一下文档是否有错。
二、pub use
lib.rs
pub mod kinds{
pub enum PrimaryColor{
RED,
YELLOW,
}
pub enum SecondaryColor{
ORANGE,
GREEN,
}
}
pub mod utils{
use crate::kinds::*;
pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor{
SecondaryColor::GREEN
}
}
main.rs
use hello_cargo::kinds::PrimaryColor;
use hello_cargo::utils::mix;
fn main() {
let red = PrimaryColor::RED;
let yellow = PrimaryColor::YELLOW;
mix(red, yellow);
}
上面最麻烦的就是 use
导包,对外发布必须具有语义化,并且精简。所以一般需要用pub us
e 来简化使用。
在lib.rs
头部加入以下语句,导出使用
pub use self::kinds::PrimaryColor;
pub use self::kinds::SecondaryColor;
pub use self::utils::mix;
main.rs
使用修改
use hello_cargo::PrimaryColor;
use hello_cargo::mix;
三、发布Crate
创建账号
账号注册、登陆 可关联github账号
创建API TOKEN
Next
运行cargo login 你的token
,会将我们的Api toke
n 存储在本地 ~/.cargo/credentials
Next
一些必要的信息一定要填,例如
不知道的字段可以在这里搜索 Cargo.toml发布配置信息
Next
cargo publish
发布到crates.io
发布后就删除不了,已存在版本永久可以工作
但是我们可以发布已经存在的crate
的新版本,修改Cargo.toml
的version
值后,重新发布。
版本语义化
撤回版本
虽然不可以删除crate之前的版本,但是可以撤回。
cargo yank --vers 1.0.1
yank
含义:- 所有已经产生
Cargo.lock
的项目不会中断 - 任何还没生成的,将来生成的
Cargo.lock
文件都不会使用被撤回的版本 - 也就是已经存在的项目可以继续依赖、可以下载,但是新项目不能依赖了
- 所有已经产生
取消撤回
cargo yank --vers 1.0.1 --undo
四、Cargo工作空间
何为工作空间?
帮助管理多个互相关联且需要协同开发的crate
,共享一个Cargo.lock
的包。
如图,我们 cargo new adder
和 cargo new add-one lib
,创建一个二进制create
和一个库crate
我们将adder`` crate
依赖 库create
然后我们就可以用了
但是如果我们想运行单个二进制crate
的话,需要到对应目录,执行 cargo build
或者 工作空间下指定crate
, cargo build -p adder
如果依赖外部的库,需要在Cargo.toml
中都要写上对应的版本和依赖,但是工作空间最终用的都是最新的一样的版本进行编译的。
五、安装二进制Crate
主要是通过carog install 二进制crate名
例如:
其中有main.rs
是可执行程序 ,就可以运行了(cargo
环境变量默认配置到PATH
中了,执行二进制名就行)。