基础使用
一、什么是Cargo
Cargo 是 Rust 的官方包管理器和构建系统,是 Rust 开发生态的核心工具,几乎每个 Rust 项目都会使用它。它将常用命令集于一身,无需引入其它命令。
Cargo = 项目管理器 + 编译器 + 包管理器 + 运行工具
与其他语言的对比:

1.1 Cargo常用命令
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 创建新项目 | cargo new 项目名 |
生成完整的项目目录结构 |
| 编译项目 | cargo build |
编译代码,生成可执行文件 |
| 运行项目 | cargo run |
编译并立即运行 |
| 检查代码 | cargo check |
快速检查是否能编译通过(不生成文件) |
| 添加依赖 | cargo add serde |
添加第三方库到 Cargo.toml |
| 更新依赖 | cargo update |
更新依赖到最新兼容版本 |
| 运行测试 | cargo test |
执行所有测试函数 |
| 生成文档 | cargo doc |
根据注释生成本地文档 |
| 代码格式化 | cargo fmt |
自动格式化代码 |
| 代码检查 | cargo clippy |
检查代码风格和潜在问题 |
| 发布到 crates.io | cargo publish |
把你的库发布到官方包仓库 |
| 安装二进制包 | cargo install ripgrep |
安装其他 Rust 编写的工具 |
1.2 简单应用全流程
新建文件夹->vscode打开文件夹->新建终端
在终端中输入以下命令新建项目,项目名为:greeting
1. 创建项目
cargo new my_project
cd my_project
2. 添加依赖
cargo add anyhow
cargo add serde --features derive
3. 编写代码(编辑 src/main.rs)
xxxx
4. 开发循环
cargo check # 快速检查错误
cargo run # 测试功能
cargo test # 运行测试
5. 代码优化和发布
cargo fmt # 格式化
cargo clippy # 代码检查
cargo build --release # 发布构建
系统在创建工程时会生成一个 Hello, world 源程序 main.rs,这时会被编译并运行:

1.3 项目结构
一个规范的 Rust 项目通常会遵循这样的目录结构:
c
my_project/
├── Cargo.toml # 核心元数据,手动编辑
├── Cargo.lock # 依赖锁定,自动生成
├── src/ # 源代码目录
│ ├── main.rs # 程序入口 (二进制项目)
│ ├── lib.rs # 库入口 (库项目)
│ └── bin/ # 多个二进制文件目录
│ ├── tool1.rs
│ └── tool2.rs
├── tests/ # 集成测试
├── examples/ # 示例代码
├── benches/ # 基准测试
├── build.rs # 自定义构建脚本
└── target/ # 编译输出目录,包含最终的可执行文件
1.4 核心文件
Cargo 的核心文件是 Cargo.toml 和 Cargo.lock,它们共同管理着 Rust 项目的依赖、构建和元数据。main.rs是主程序源代码
1.4.1 Cargo.toml
Cargo.toml:项目配置文件,主要包含以下几个部分:
sql
[package] # ---------- 项目元信息,必填 ----------
name = "hello_rust" # 项目名称,会用作编译输出目录名
version = "0.1.0" # 语义化版本,crates.io 要求
edition = "2021" # Rust 语言版本 (2015, 2018, 2021, 2024)
authors = ["Your Name"] # 可选,项目作者
license = "MIT" # 可选,开源协议
[dependencies] # ---------- 第三方依赖,最常用 ----------
# 格式: 包名 = "版本号"
rand = "0.8.5" # 从 crates.io 拉取
serde = { version = "1.0", features = ["derive"] } # 启用 features
regex = "1.7" # 自动补全最新的兼容版本
# Git 依赖示例(不常用)
tokio = { git = "https://github.com/tokio-rs/tokio", branch = "master" }
# 本地路径依赖(不常用)
my_local_lib = { path = "../my_lib" }
[dev-dependencies] # ---------- 仅用于测试、示例、基准测试的依赖 ----------
pretty_assertions = "1.3"
[build-dependencies] # ---------- 仅用于构建脚本 build.rs 的依赖 ----------
cc = "1.0"
[profile.release] # ---------- 优化配置 ----------
opt-level = 3 # 优化级别 0-3,release 默认 3
lto = true # 开启链接时优化,减小二进制大小
1.4.2 Cargo.lock
Cargo.lock:依赖锁定文件
这个文件由 Cargo 自动生成和维护,你不需要、也不应该手动编辑它。它的作用是锁定所有依赖的确切版本和哈希值,保证项目在任何机器上构建时,依赖树都完全一致。
1.4.3 两个文件的使用场景
Cargo.toml :定义了你"想要"的依赖范围。例如,rand = "0.8"。
Cargo.lock:记录了实际使用的具体版本。例如,rand 0.8.5,以及它依赖的 libc 0.2.155。
应用程序(如 Web服务、命令行工具):必须把 Cargo.lock 提交到 Git。这能保证你在服务器上部署的版本,和本地测试时使用的依赖版本完全一样,避免线上出现意外问题。
库(你发布到 crates.io 给别人用的):通常不提交 Cargo.lock。因为你的库需要适配下游用户的不同依赖版本,由他们的 Cargo.lock 来决定。
通常不提交 Cargo.lock
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.
javascript
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
| 项目 | Value |
|---|---|
| 电脑 | $1600 |
| 手机 | $12 |
| 导管 | $1 |
设定内容居中、居左、居右
使用:---------:居中
使用:----------居左
使用----------:居右
| 第一列 | 第二列 | 第三列 |
|---|---|---|
| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants 是一个文本转换工具,主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如:
| 原始符号 | 转换后 | 说明 |
|---|---|---|
"引号" |
"引号" | 直引号变弯引号 |
'单引号' |
'单引号' | 直单引号变弯单引号 |
-- |
-- | 两个连字符变短破折号 |
--- |
--- | 三个连字符变长破折号 |
... |
... | 三个点变省略号 |
创建一个自定义列表
:
Text-to- conversion tool
:
John
:
Luke
如何创建一个注脚
一个具有注脚的文本。[1](#1)
注释也是必不可少的
Markdown将文本转换为 。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
- 关于 甘特图 语法,参考 这儿,
UML图表
可以使用UML图表进行渲染,例如下面产生的一个序列图:
王五 李四 张三 王五 李四 张三 李四想了很长时间, 文字太长了 不适合放在一行. 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 打量着王五... 很好... 王五, 你怎么样?
- 关于 UML图表 语法,参考 这儿,
流程图
链接
长方形
圆
圆角长方形
菱形
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart.js的流程图语法:
Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
- 注脚的解释 ↩︎
*[HTML]: 超文本标记语言