九、Cargo发布

99 阅读3分钟

前言

本文阅读耗时两分钟

Crates.Io

目录

九、Cargo发布.png

一、发布配置

有两种模式

  • 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配置,如何做?

发布配置.PNG 只要在Cargo.toml 里添加对应的profile即可(profile.devprofile.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 use 来简化使用。 在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
new_token.PNG Next
运行cargo login 你的token,会将我们的Api token 存储在本地 ~/.cargo/credentials Next
一些必要的信息一定要填,例如

捕获.PNG 不知道的字段可以在这里搜索 Cargo.toml发布配置信息

Next
cargo publish发布到crates.io
发布后就删除不了,已存在版本永久可以工作
但是我们可以发布已经存在的crate的新版本,修改Cargo.tomlversion值后,重新发布。
版本语义化

cargo_pub.PNG 撤回版本
虽然不可以删除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 addercargo new add-one lib,创建一个二进制create和一个库crate

cargo.PNG 我们将adder`` crate 依赖 库create add-one.PNG 二进制.png 然后我们就可以用了 add.PNG

但是如果我们想运行单个二进制crate的话,需要到对应目录,执行 cargo build 或者 工作空间下指定crate, cargo build -p adder
如果依赖外部的库,需要在Cargo.toml中都要写上对应的版本和依赖,但是工作空间最终用的都是最新的一样的版本进行编译的。

五、安装二进制Crate

主要是通过carog install 二进制crate名
例如: cargo_install.PNG 其中有main.rs 是可执行程序 ,就可以运行了(cargo环境变量默认配置到PATH中了,执行二进制名就行)。