RUST STUDY

基础使用

菜鸟使用
rust介绍

一、什么是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.tomlCargo.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. 项目1
  2. 项目2
  3. 项目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文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,

继续你的创作。


  1. 注脚的解释 ↩︎

*[HTML]: 超文本标记语言

相关推荐
小杍随笔1 小时前
【在 Rust + Tauri 2 应用中实现语言切换功能:完整技术指南】
开发语言·后端·rust
西门吹-禅16 小时前
【Rust setup】
rust·rust setup
x-cmd1 天前
agent-browser 源码分析(一):架构概览
rust·架构设计·浏览器自动化·cdp·agent-browser
Hemy081 天前
tauri + rust 创建初始项目
开发语言·后端·rust
古城小栈1 天前
Rust 三方库 anyhow:极简错误处理实战指南
java·网络·rust
@atweiwei1 天前
LangChainRust Agent 引擎:Graph 构建到执行
rust·langchain·llm·agent·rag·langchaingraph
techdashen2 天前
Pingora 的开源——Cloudflare 基于 Rust 搭建的用于替换Nginx的网络框架
nginx·rust·开源
余识-2 天前
古竹:将时间化作最有价值的投资
金融·rust·业界资讯·tauri·投资·基金