learn-rust-publish 0.1.1

learn how to publish rust library
Documentation
### 13.4 将包发布在crates.io

这一小节我们主要讲讲怎么讲我们写好的包发到crates.io上面分享给其他的开发者使用。

#### 13.4.1 在crates.io上面登录获取API Token

首先,我们需要在[crates.io](https://crates.io/)登录账号,目前它只支持github账号登录,登陆成功后,在头像处,我们进入,**Account Setting**,然后生成一个API TOKEN,接下来我们先创建一个包。

#### 13.4.2 配置一个发布包

我们先生成一个新的库包,使用命令`cargo new learn-rust-publish`,然后我们在github上面建立一个[仓库](https://github.com/1847016090/learn-rust-publish),然后在我们的项目中执行`git init -y`,然后使用`git remote add origin 你的仓库地址`将项目和远程地址管理起来,将代码初始化到仓库中,后续在发布前也需要将代码更新到仓库中,再执行发布流程。

##### 13.4.2.1 为包添加元数据

打开项目,进入到`Cargo.toml`中,在`[package]`中配置元数据信息,如下:

```rust
[package]
# 创建项目默认添加
name = "learn-rust-publish"
version = "0.1.0"
edition = "2021"

# 需要添加
email = "your email"
description = "learn how to publish rust library"
license = "MIT OR Apache-2.0"
repository = "https://github.com/1847016090/learn-rust-publish"
```

其中前三项是创建项目时默认生成的,我们只需要添加后面几项即可。

#### 13.4.2.2 登录 & 发布

然后我们先来执行`cargo login`命令执行登录,然后将我们刚才生成的API TOKEN填入即可登录成功。我们接着再执行`cargo publish`,发现如下报错:

```rust
the remote server responded with an error: A verified email address is required to publish crates to crates.io. Visit https://crates.io/settings/profile to set and verify your email address.
```

我们需要跟随着链接去验证一下我们的邮箱即可。验证完后,再执行`cargo publish`就能成功发布我们的包了([我发布的包](https://crates.io/crates/learn-rust-publish))。

#### 13.4.2.3 撤销或重新发布新版本包

当我们发布了一个版本的包之后,我们就不能再次覆盖这个包了。但是我们使用`cargo yank --vers 0.1.0`撤销当前版本的包(只针对新包。如果有项目已经安装了当前版本的包,Cargo.lock文件已经存在当前版本,他依旧可以继续使用当前版本的包)。

当然,如果我们想取消撤销,我们执行`cargo yank --vers 0.1.0 --undo`就行。

如果我们想发布新的版本,我们只需要修改我们`Cargo.toml`文件中的`version`字段即可