赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
进入Rust官网(https://www.rust-lang.org)可以看到mac的下安装指令 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
等待安装结束。
安装完成之后在~/.cargo
路径。由于安装后路径不在/usr/local/bin
,所以在终端直接输入 rustc等指令会提示“command not found”。所以在正式使用之前需要~/.cargo/bin
里的文件使用ln -s
指令全部软链接到/usr/local/bin
路径。
首先创建一个文件夹,创建一个简单rust代码文件如下:
fn main() {
println!("Hello World!");
}
编译运行成功
还是使用刚才打印Hello World的文件,先删掉编译生成的main可执行文件。
提示 could not find Cargo.toml
,找不到Cargo.toml这个文件。那么应该是我的使用方法错了,查询资料。
Cargo 是 Rust 的构建系统和包管理器。⼤多数 Rustacean 们使⽤ Cargo 来管理他们的 Rust 项⽬,因为它可以为你处理很多任务,⽐如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做 依赖(dependencies))。
指令cargo --version
这里可以看到具体的版本好和日期
cargo 1.73.0 (9c4383fb5 2023-08-26)
指令cargo new projectname
会提示 Created binary (application) projectname
package。
创建出一个名字为ProjectName的文件夹,目录结构如下
|-src
| |-main.rs
|-.gitignore
|-Cargo.toml
第一行,[package], 是一个片段(section)标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他片段(section)接踵而至的3行设置了Cargo编译程序所需要的配置:name(项目名称)、version(项目的版本)、edition(使用的Rust版本)
最后一行,[dependcies], 是罗列项目依赖的片段的开始,在Rust中,代码包被称为crates。在这个项目我们并不需要其他的crate。
name = "projectname"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
Cargo为我们自动生成一个“Hello,world!” 程序,正如我们之前编写的示例helloWorld一样,不同的是它将main.rs文件放到了src目录下面。
Cargo 期望源文件存放在src目录中。项目根目录只存放 README、license信息、配置文件和其他跟代码无关的文件。使用Cargo帮助你保持项目干净整洁,一切井井有条。
当然如果没有使用Cargo创建的项目,我们也可以转化为一个Cargo项目,比如我之前的HelloWorld项目。我们可以新建目录src、新建源文件main.rs在src目录下、以及创建一个合适的Cargo.toml 文件。
现在项目已经创建好了,开启终端 cd 进入项目所在路径。
然后使用Cargo中的build命令开始构建项目
cargo build
执行结果如下:
Compiling projectname v0.1.0 (/User/se-01/Desktop/Rust/projectname)
Finished dev [unoptimized + debuginfo] target(s) in 0.52s
到这里首次运行cargo build成功,会发现此时项目目录中多出了一个target目录和Cargo.lock文件
运行构建成功后生成的可执行文件。
./target/debug/projectname
终端上应该打印出Hello,world!
。
由于默认的构建⽅法是调试构建(debug build),Cargo 会将可执⾏⽂件放在名为 debug 的⽬录中。
在认识了cargo build
命令,我们知道它是用来构建Cargo项目的,但是运行项目需要我们自己去target目录里面去找到可执行文件,并执行它。
接下来我们来认识一个新的命令cargo run
。它可以构建并运行构建后的可执行文件。
终端输入cargo run
指令。
打印结果如下:
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/projectname`
Hello, world!
因为之前已经使用cargo build
命令构建了projectname
项目 , 所以此时执行的 cargo run
命令并没有重新编译,而是直接运行了可执行文件,打印出了Hello,world!
。
接下来我们看看,改变了源文件在执行该命令会是什么结果:
Compiling projectname v0.1.0 (/Users/se-01/Desktop/Rust/projectname)
Finished dev [unoptimized + debuginfo] target(s) in 0.17s
Running `target/debug/projectname`
Rust Hello, world!
这里我们看到结果里面有Compiling、Finished
、Running
字样,所以这次它重新编译了该项目,并执行了可执行文件,打印出了新的结果:Hello, Rust world!
。
接下来认识应该新的命令cargo check
, 该命令可以快速检查代码确保可以编译,但并不产生可执行文件。
执行结果如下:
Checking projectname v0.1.0 (/Users/se-01/Desktop/Rust/projectname)
Finished dev [unoptimized + debuginfo] target(s) in 0.07s
如果一切顺利终端会出现以上结果。
为什么不直接执行 cargo build、cargo run 命令呢?这样还可以直接生成可执行文件,多方便。
为了保证代码安全性,要习惯使用cargo check 定期检查我们的代码是否可编译,避免不必要的后顾之忧。
当项⽬最终准备好发布时,可以使⽤ cargo build --release
来优化编译项⽬。这会在target/release
⽽不是 target/debug
下⽣成可执⾏⽂件。这些优化可以让 Rust 代码运⾏的更快,不过启⽤这些优化也需要消耗更⻓的编译时间。这也就是为什么会有两种不同的配置:⼀种是为了开发,你需要经常快速重新构建;另⼀种是为⽤户构建最终程序,它们不会经常重新构建,并且希望程序运⾏得越快越好。如果你在测试代码的运⾏时间,请确保运⾏ cargo build --release
并使⽤ target/release
下的可执⾏⽂件进⾏测试。
对于运行发行版本我们可以使用 cargo run --release
命令
Compiling projectname v0.1.0 (/Users/se-01/Desktop/Rust/projectname)
Finished release [optimized] target(s) in 0.15s
对于简单项目,Cargo并不比rustc提供了更多的优势,不过随着开发深入,最终会证明它的价值,⼀旦程序壮⼤到由多个⽂件组成,亦或者是需要其他的依赖,让 Cargo 协调构建过程就会简单得多。
即便项⽬⼗分简单,它现在也使⽤了很多在你之后的 Rust ⽣涯将会⽤到的实⽤⼯具。其实,要在任何已存在的项⽬上⼯作时,可以使⽤如下命令通过 Git 检出代码,移动到该项⽬⽬录并构建:
git clone example.com/test_project
cd test_project
cargo build
对rust开发环境进行搭建,并学习使用Cargo的相关内容:
使用 cargo new
创建项目
使用 cargo build
构建项目
使用 cargo run
一步构建并运行项目
使用 cargo check
在不生成二进制文件的情况下检查项目是否可编译
使用 cargo build --release
构建项目发行版本
使用 cargo run --release
运行发行版本,可测试发布版本的运行时间
使⽤ Cargo 的⼀个额外的优点是,不管你使⽤什么操作系统,Linux 和 macOS 以及 Windows 其命令都是⼀样的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。