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

相关推荐
paterWang1 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
东方佑1 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
我真不会起名字啊2 小时前
“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?
开发语言·qt
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
水瓶丫头站住2 小时前
Qt的QStackedWidget样式设置
开发语言·qt
小钊(求职中)3 小时前
Java开发实习面试笔试题(含答案)
java·开发语言·spring boot·spring·面试·tomcat·maven
慕诗客5 小时前
QT基于Gstreamer采集的简单示例
开发语言·qt
Blasit5 小时前
C++ Qt建立一个HTTP服务器
服务器·开发语言·c++·qt·http
Victoria.a5 小时前
数组和指针常见笔试题(深度剖析)
c语言·开发语言
..过云雨5 小时前
04.类和对象(下)(初始化列表、static静态成员、友元friend[类外函数使用类私有成员]、内部类、匿名对象等)
开发语言·c++