HelloRust - 3、使用Cargo
🧑🚀跟着《Rust权威指南》学习Rust💪,跟Rust打个招呼吧Hello Rust!
🖐️😜
🧑✈️同步更新Github/skyline93
✔️一、安装Rust
✔️二、第一个Rust程序
👉三、使用Cargo
🔞四、基本概念
三、使用Cargo
cargo
用来构建管理和编译rust项目的工具,在更大的rust项目中,cargo
可以是添加和管理依赖变的非常简单。
在第一节使用rustup
安装完工具链后,cargo就已经包含进来了,检查安装cargo版本
$ cargo --version
cargo 1.62.0 (a748cf5a3 2022-06-08)
3.1、使用cargo创建一个项目
例如创建一个名为hello_cargo
的项目,如下命令:
$ cargo new hello_cargo
Created binary (application) `hello_cargo` package
如下cargo将生成hello_cargo目录,并包含toml
文件和源码文件
$ tree hello_cargo
hello_cargo
├── Cargo.toml
└── src
└── main.rs
3.1.1、Cargo.toml文件
Cargo.toml
文件初始化内容如下:
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
其中,[package]
标签下的内容用来配置当前的程序包信息,[dependencies]
标签用来声明项目的依赖。
💌Tip: 在rust中,代码的集合称作包crate
,crate
是rust中最小的编译单元,package
是单个或多个crate
的集合。crate和package都可以叫做包,package倾向于多个crate的组合
3.1.2、src目录
所有的源代码文件都保存在了src
目录下,而其他如README文档、配置文件等源代码无关的文件将放置在项目根目录下。使用cargo管理项目使得整个项目文件层次更加一致,方便管理维护。
3.2、构建和运行项目
3.2.1、编译项目代码
在项目根路径下,执行cargo build
编译项目代码
$ cargo build
Compiling hello_cargo v0.1.0 (/workspace/hellorust/code/3/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.00s
编译后将生成target
目录,并得到可执行的二进制文件在target/debug/hello_cargo
;首次编译还将在项目根路径下生成Cargo.lock
文件,记录了当前项目所有依赖库的具体版本号。
$ tree .
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target
├── CACHEDIR.TAG
└── debug
├── build
├── deps
│ ├── hello_cargo-be7a131524fc0cd4
│ └── hello_cargo-be7a131524fc0cd4.d
├── examples
├── hello_cargo
├── hello_cargo.d
└── incremental
└── hello_cargo-dz8kvwt8p3o6
├── s-gbi9sdzpyq-ll29eo-3v86w4vexbs3p
│ ├── 14yscrht839uup6e.o
│ ├── 3q6tjepta4m4v634.o
│ ├── 4k0d0dgafn1ijep5.o
│ ├── 4qoh67y9a9mehcok.o
│ ├── dep-graph.bin
│ ├── k2i8rahgk8h0l97.o
│ ├── paus5f5lz2o9vv1.o
│ ├── query-cache.bin
│ ├── sezzbz89mszmu14.o
│ ├── v7eulzwbrlgtsti.o
│ └── work-products.bin
└── s-gbi9sdzpyq-ll29eo.lock
3.2.2、运行程序
也可以使用cargo run
命令运行程序;当cargo检查到当前代码有改动,cargo run
将重新编译代码再运行
$ cargo run
Compiling hello_cargo v0.1.0 (/workspace/hellorust/code/3/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.05s
Running `target/debug/hello_cargo`
Hello, world!
3.2.3、编译检查
使用cargo check
命令可以检查当前代码是否可以通过编译;
💌Tip: 这非常有用,它可以跳过生成二进制文件的过程,运行速度更快,当在真正编译二进制文件前,执行这个命令预先检查当前代码是否正确编译可以减少不必要的反复编译文件的时间
3.2.4、Release模式进行编译
使用如下命令参数编译生成最终发布的程序。这样编译出来的二进制文件有更好的运行时性能,但也需要更长的编译时间
$ cargo build --release
Compiling hello_cargo v0.1.0 (/workspace/hellorust/code/3/hello_cargo)
Finished release [optimized] target(s) in 0.39s
将在target
目录下新生成一个release
目录,并得到最终发布的二进制文件target/release/hello_cargo
$ tree .
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target
├── CACHEDIR.TAG
├── debug
│ ├── ...
└── release
├── build
├── deps
│ ├── hello_cargo-05c603c3c4dd03c5
│ └── hello_cargo-05c603c3c4dd03c5.d
├── examples
├── hello_cargo
├── hello_cargo.d
└── incremental
本文来自博客园,作者:GreeneGe,转载请注明原文链接:https://www.cnblogs.com/greene/p/16463005.html