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 项目的开发效率和管理能力。

相关推荐
华仔啊4 分钟前
Spring 配置混乱?搞懂这两个核心组件,问题真能少一半
java·后端·spring
珍宝商店15 分钟前
原生 JavaScript 方法实战指南
开发语言·前端·javascript
喂完待续15 分钟前
【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
java·后端·spring·big data·spring data·序列晋升
神龙斗士24023 分钟前
Java 数组的定义与使用
java·开发语言·数据结构·算法
白露与泡影23 分钟前
2025互联网大厂高频Java面试真题解析
java·开发语言·面试
forever銳25 分钟前
java中如何保证接口幂等性
java·后端
IT_陈寒25 分钟前
告别低效!用这5个Python技巧让你的数据处理速度提升300% 🚀
前端·人工智能·后端
gopyer27 分钟前
180课时吃透Go语言游戏后端开发2:Go语言中的变量
开发语言·游戏·golang·游戏后端开发
程序员NEO28 分钟前
B站油管抖音一键笔记
后端
月月吃喝29 分钟前
【PyQt5】嵌套多线程数据交互实现
开发语言·qt·交互