Rust编程语言入门教程(三) Hello Cargo

目录

引言

在现代软件开发中,构建系统和包管理工具是提高开发效率和项目管理能力的重要工具。Rust 语言的官方构建系统和包管理工具是 Cargo,它为 Rust 开发者提供了强大的功能,包括构建代码、下载依赖库、管理项目依赖等。Cargo 的使用贯穿了 Rust 项目的整个生命周期,从项目的创建、构建、运行到发布,Cargo 都扮演着不可或缺的角色。本文将详细介绍 Cargo 的基本功能和高级用法,帮助开发者更好地理解和使用这一工具。

一、Cargo

  • Cargo 是 Rust的构建系统和包管理工具
  • 构建代码、下载依赖的库、构建这些库...

安装 Rust 的时候会安装 Cargo

输入以下验证cargo安装

cargo --version

二、创建Cargo项目

cargo new hello_cargo

进入项目,用VSCode打开。

可以看到 hello_cargo 的项目目录。因为我的 VSCode 安装了 rust 插件,所以自动编译了,生成了以下两个文件。正常情况下,不执行命令是不会生成的。

创建项目:cargo new hello_cargo

项目名称也是 hello_cargo

会创建一个新的目录 hello_cargo

  • Cargo.toml
    src 目录
    main.rs
  • 初始化了一个新的 Git 仓库 .gitignore
    可以使用其它的 VCS 或不使用 VCS: cargo new 的时候使用 --vcs 这个 flag

①Cargo.toml

  • TOML (Tom's Obvious, Minimal Language) 格式,是 Cargo 的配置格式 pacakge ,是一个区域标题,表示下方内容是用来配置包 (package) 的。
    -name,项目名
    -version,项目版本
    -authors,项目作者 如果你没有在 Cargo.toml 中指定 authors 字段,Cargo 会默认使用空值。作者信息会以 Name <email@example.com> 的格式书写,我这里是没有写的。
    -edition,使用的Rust 版本
    [dependencies],另一个区域的开始它会列出项目的依赖项,在 Rust 里面,代码的包称作 crate。

②src/main.rs

  • cargo 生成的 main.rs 在 src 目录下
  • 而 Cargo.toml 在项目顶层下
  • 源代码都应该在 src 目录下
  • 顶层目录可以放置:README、许可信息、配置文件和其它与程序源码无关的文件
  • 如果创建项目时没有使用 cargo,也可以把项目转化为使用 cargo
    把源代码文件移动到 src下
    创建 Cargo.toml 并填写相应的配置

三、构建 Cargo 项目

cargo build

  • 创建可执行文件:target/debug/hello_cargo 或 target\debug\hello_cargo.exe (Windows)`
  • 运行可执行文件::/target/debug/hello_cargo 或 .\target\debug\hello_cargo.exe (Windows)
  • 第一次运行 cargo build 会在顶层目录生成 cargo.lock 文件
    该文件负责追踪项目依赖的精确版本
    不需要手动修改该文件

(一) cargo build 的高级用法

①指定构建目标

可以使用 --target 选项指定目标平台。例如,构建为 ARM 架构:

cargo build --target armv7-unknown-linux-gnueabihf

②并行构建

cargo build 默认会并行编译依赖项。可以通过设置环境变量 RUSTFLAGS 来控制并行级别。例如:

RUSTFLAGS="--jobs 4" cargo build

四、构建和运行 cargo 项目

cargo run

cargo run,编译代码 + 执行结果

如果之前编译成功过,并且源码没有改变,那么就会直接运行二进制文件

第一次执行 cargo run 是编译结束运行。第二次源码没有改变,会直接执行exe文件。

(一) cargo run 的高级用法

①传递参数

可以在 cargo run 后直接传递参数给可执行文件。例如:

cargo run arg1 arg2

②指定运行环境

可以通过设置环境变量来指定运行环境。例如:

RUST_BACKTRACE=1 cargo run

五、cargo check

cargo check

cargo check,检查代码,确保能通过编译,但是不产生任何可执行文件
cargo check 要比 cargo build 快得多

编写代码的时候可以连续反复的使用 cargo check 检查代码,周期性调用,提高效率

(一) cargo check 的高级用法

①指定包进行检查

如果项目中有多个包,可以使用--package或 -p 选项指定特定的包进行检查。例如:

cargo check --package my_package

②检查特定目标文件

可以使用 --lib、--bin、--example 等选项指定特定的目标文件进行检查。例如:

cargo check --bin my_binary

六、cargo bulid两种配置

为发布构建
cargo build --release 编译时会进行优化, 默认使用 03 优化级别

代码会运行的更快,但是编译时间更长

发布构建的目录位于 target/release 目录下,大小通常会比调试构建的小很多,并且运行速度更快。而不是 target/debug 生成可执行文件

两种配置:

一个开发

一个正式发布

总结

Cargo 是 Rust 的核心构建系统和包管理工具,贯穿项目从创建到发布的整个生命周期。通过 cargo new 可快速初始化项目,cargo build 和 cargo run 分别用于构建和运行代码,cargo check 提供快速编译检查,而 cargo build --release 则用于生成优化后的发布版本。掌握这些功能,可以显著提升 Rust 项目的开发效率和管理能力。

相关推荐
Wx-bishekaifayuan12 分钟前
django医院营收信息预测系统49414-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wx-bishekaifayuan13 分钟前
springboot会议室预约管理系统42030-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
AINative软件工程20 分钟前
LLM 输出 Guardrail 工程实践:5 层防护栏让 AI 生成的内容不会炸掉生产
后端·llm·ai编程
IT_陈寒42 分钟前
Vite热更新失效?你可能漏了这个配置项
前端·人工智能·后端
Wx-bishekaifayuan42 分钟前
springboot生活商城系统21035-计算机课程设计、毕业设计
spring boot·后端·python·spring·elasticsearch·golang·课程设计
云浪1 小时前
通过 Goroutine 搞懂 Go 并发与常见的 9 个坑
后端·go
Wx-bishekaifayuan1 小时前
springboot贵州旅游系统55916-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Fruit_Caller1 小时前
static
开发语言·c++
mldong1 小时前
事务不归引擎管:ITransactionTemplate,聚合一致性的最后一块拼图
后端·架构
IT_陈寒6 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端