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

相关推荐
程序员cxuan6 小时前
我用 WorkBuddy + ima 把公众号文章做成了知识库。
人工智能·后端·程序员
程序员cxuan6 小时前
玩了一天 REA,我号快没了
人工智能·后端·程序员
卷无止境6 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
smallyoung7 小时前
告别N+1:Spring Boot 一键数据翻译框架体系
java·后端·架构
程序猿DD7 小时前
OctaFuse Gateway 2.16.0:新增 ElevenLabs 的支持、厂商原生端点重构、后台管理优化
后端
掘金者阿豪7 小时前
列存储适不适合订单报表?从一条慢 SQL 聊聊金仓 KES 的使用边界
后端
武子康7 小时前
150毫秒和2400毫秒:同一 Agent 任务的两种延迟
人工智能·后端·agent
海边捡石子8 小时前
FreeSWITCH 入门:把电话系统接入语音客服机器人
人工智能·后端
武子康8 小时前
Agent 偏好记忆怎样确认写入:范围、版本与撤销的一个最小例
人工智能·后端·agent
Bazingga8 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端