Rust之Cargo的使用

这篇具有很好参考价值的文章主要介绍了Rust之Cargo的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、cargo简介

Cargo 是 Rust 的构建系统和包管理器。⼤多数 Rustacean 们使⽤ Cargo 来管理他们的 Rust 项⽬,因为它可以为你处理很多任务,⽐如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做 依赖(dependencies))。

查看cargo版本

cargo --version

我这里可以看到具体的版本好和日期

cargo 1.63.0 (fd9c4297c 2022-07-01)

2、使用cargo创建项目

cargo new hello_cargo
cd hello_cargo

第一行命令,创建了一个名为hello_cargo的目录和项目。

进入目录可以看到以下目录:

|-src
| |-main.rs
|-.gitignore
|-Cargo.toml

2.1、关于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], 是一个片段(section)标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他片段(section)
  • 接踵而至的3行设置了Cargo编译程序所需要的配置:name(项目名称)、version(项目的版本)、edition(使用的Rust版本)
  • 最后一行,[dependcies], 是罗列项目依赖的片段的开始,在Rust中,代码包被称为crates。当然在这个项目我们并不需要其他的crate,不过后面我们会用到这个片段。

2.2 、关于src/main.rs

fn main() {
    println!("Hello, world!")
}

​ Cargo为我们自动生成一个“Hello,world!” 程序,正如我们之前编写的示例helloWorld一样,不同的是它将main.rs文件放到了src目录下面。

​ Cargo 期望源文件存放在src目录中。项目根目录只存放 README、license信息、配置文件和其他跟代码无关的文件。使用Cargo帮助你保持项目干净整洁,一切井井有条。

​ 当然如果没有使用Cargo创建的项目,我们也可以转化为一个Cargo项目,比如我之前的HelloWorld项目。我们可以新建目录src、新建源文件main.rs在src目录下、以及创建一个合适的Cargo.toml 文件。

3、构建Cargo项目

我们现在已经使用Cargo创建好了hello_cargo项目,现在我们进入项目目录

cd hello_cargo

然后我们可以使用Cargo中的build命令开始构建项目

cargo build

执行命令后,会打印出如下结果:

Compiling hello_cargo v0.1.0 (D:\RustLang\RustWorkSpace\hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 1.09s

到这里我们首次运行cargo build成功,你会发现此时项目目录中多出了一个target目录和Cargo.lock文件。

这和前端打包类似,如执行npm run build 命令后npm会默认生成一个dist目录,里面就是源码代码经过编译和压缩后可以放在服务器运行的网页页面。其中生成的Cargo.lock文件也和package-lock.json类似,不用说Cargo.toml和package.json 对应。

最后我们可以运行构建成功后生成的可执行文件

.\target\debug\hello_cargo.exe

如果一切顺利,终端上应该打印出Hello,world!

由于默认的构建⽅法是调试构建(debug build),Cargo 会将可执⾏⽂件放在名为 debug 的⽬录中。

4、构建并运行Cargo项目

​ 在认识了cargo build命令,我们知道它是用来构建Cargo项目的,但是运行项目需要我们自己去target目录里面去找到可执行文件,并执行它。

​ 接下来我们来认识一个新的命令cargo run 。它可以构建并运行构建后的可执行文件。

cargo run 

打印结果:

 Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target\debug\hello_cargo.exe`
Hello, world!

​ 相信到了这里,我们心中一定明白这个命令,今后会是我们的长期合作伙伴,魂牵梦萦那种。

​ 当然有必要说明一下,因为之前我们已经使用cargo build 命令构建了hello_cargo项目 , 所以此时执行的 cargo run 命令并没有重新编译,而是直接运行了可执行文件,打印出了Hello,world!

​ 接下来我们看看,改变了源文件在执行该命令会是什么结果:

 Compiling hello_cargo v0.1.0 (D:\RustLang\RustWorkSpace\hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.63s
     Running `target\debug\hello_cargo.exe`
Hello, Rust world!

​ 这里我们看到结果里面有CompilingFinishedRunning 字样,所以我们知道这次它重新编译了该项目,并执行了可执行文件,打印出了新的结果:Hello, Rust world!

5、检查代码是否可编译

​ 接下来我们认识应该新的命令cargo check , 该命令可以快速检查代码确保可以编译,但并不产生可执行文件:

Checking hello_cargo v0.1.0 D:\RustLang\RustWorkSpace\hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.07s

如果一切顺利控制台会出现以上结果。

​ 到了这里可能有人会问,为什么不直接执行 cargo buildcargo run 命令呢?这样还可以直接生成可执行文件,多方便。

对于一个合格的新时代农民,我们应该持续定期去检查我们的“庄稼”,让它们可以健康成长,这样我们才可以迎来大丰收。不然我们可能会饿肚子!

​ 所以我们要习惯使用cargo check 定期检查我们的代码是否可编译,避免不必要的后顾之忧。

6、发布(release)构建

​ 当项⽬最终准备好发布时,可以使⽤ cargo build --release 来优化编译项⽬。这会在target/release ⽽不是 target/debug 下⽣成可执⾏⽂件。这些优化可以让 Rust 代码运⾏的更快,不过启⽤这些优化也需要消耗更⻓的编译时间。这也就是为什么会有两种不同的配置:⼀种是为了开发,你需要经常快速重新构建;另⼀种是为⽤户构建最终程序,它们不会经常重新构建,并且希望程序运⾏得越快越好。如果你在测试代码的运⾏时间,请确保运⾏ cargo build --release 并使⽤ target/release 下的可执⾏⽂件进⾏测试。

​ 对于运行发行版本我们可以使用 cargo run --release 命令

 Finished release [optimized] target(s) in 0.01s
     Running `target\release\hello_cargo.exe`
Hello, Rust world!

7、把Cargo当作习惯

​ 对于简单项目,Cargo并不比rustc提供了更多的优势,不过随着开发深入,最终会证明它的价值,⼀旦程序壮⼤到由多个⽂件组成,亦或者是需要其他的依赖,让 Cargo 协调构建过程就会简单得多。

​ 即便 hello_cargo 项⽬⼗分简单,它现在也使⽤了很多在你之后的 Rust ⽣涯将会⽤到的实⽤⼯具。其实,要在任何已存在的项⽬上⼯作时,可以使⽤如下命令通过 Git 检出代码,移动到该项⽬⽬录并构建:

git clone example.com/test_project
cd test_project
cargo build

了解更多关于Cargo可以查阅Cargo相关文档

8、总结

本章我们学习了Cargo的相关内容:

  • 使用 cargo new 创建项目
  • 使用 cargo build 构建项目
  • 使用 cargo run 一步构建并运行项目
  • 使用 cargo check 在不生成二进制文件的情况下检查项目是否可编译
  • 使用 cargo build --release 构建项目发行版本
  • 使用 cargo run --release 运行发行版本,可测试发布版本的运行时间

使⽤ Cargo 的⼀个额外的优点是,不管你使⽤什么操作系统,其命令都是⼀样的。所以从现在开始本书将不再为 Linux 和 macOS 以及 Windows 提供相应的命令。

​ 到了这里我们可以开始Rust的旅程了,go! go! go!文章来源地址https://www.toymoban.com/news/detail-435555.html

到了这里,关于Rust之Cargo的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Cargo国内镜像提升Rust开发效率

    Rust是一门现代化的系统编程语言,而Cargo则是Rust的官方包管理工具。在进行Rust项目开发时,由于网络原因,从Crates.io下载依赖可能会很慢。为了提高开发效率,我们可以配置Cargo使用国内的镜像源,以加速包的下载和构建过程。 步骤一:进入Cargo配置目录 打开终端或命令提

    2024年02月21日
    浏览(53)
  • 【Rust】cargo update或者cargo build国内被墙失败解决办法

    cargo build 时下载失败(Mac 10.13.4),提示: error: failed to download from https://crates-io.proxy.ustclug.org/api/v1/crates/actix-codec/0.3.0/download Caused by: [56] Failure when receiving data from the peer (Received HTTP code 500 from proxy after CONNECT) 或者提示: error: failed to download from https://crates-io.proxy.ustclug.org/api/v1

    2023年04月08日
    浏览(73)
  • ubuntu上安装rust和cargo

    第一种方法: 下面一句话就搞定。但特殊情况下(对rust版本有要求的时候)需要使用第2种方法 第2种方法: 不想用apt 运行后,会让你选择方式,选择1,安装。  How to Install Rust and Cargo on Ubuntu Other Linux

    2024年02月08日
    浏览(61)
  • Rust更换Cargo国内源,镜像了寂寞

    当我写作此文时,可能理解并不深刻。今日重读 Crates.io 文档,发现它理论上还是可以做到“既换皮又换身的”: A minimal registry can be implemented by having a git repository that contains an index, and a server that contains the compressed .crate files created by cargo package . A full-featured registry that supports

    2024年02月05日
    浏览(38)
  • rust学习-cargo和crates.io

    Cargo 有两个主要的配置: (1)运行 cargo build 时采用的 dev 配置 (2)运行 cargo build --release 的 release 配置 Cargo.toml 文件没任何 [profile. ] 时,Cargo 对每一个配置采用默认设置。 通过在[profile. ]对应的部分中增加任何定制的配置 构建目录如下 Cargo.toml add-one/src/lib.rs add-two/src/lib

    2024年02月17日
    浏览(48)
  • Rust编程语言入门之cargo、crates.io

    通过 release profile 来自定义构建 在https://crates.io/上发布库 通过 workspaces 组织大工程 从 https://crates.io/来安装库 使用自定义命令扩展 cargo release profile: 是预定义的 可自定义:可使用不同的配置,对代码编译拥有更多的控制 每个 profile 的配置都独立于其它的 profile cargo 主要的

    2023年04月09日
    浏览(56)
  • 【跟小嘉学 Rust 编程】十四、关于 Cargo 和 Crates.io

    【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学 Rust 编程】六、枚举

    2024年02月11日
    浏览(51)
  • 【Rust】Rust学习 第十四章进一步认识 Cargo 和 Crates.io

    本章会讨论 Cargo 其他一些更为高级的功能,我们将展示如何: 使用发布配置来自定义构建 将库发布到 crates.io 使用工作空间来组织更大的项目 从 crates.io 安装二进制文件 使用自定义的命令来扩展 Cargo Cargo 的功能不止本章所介绍的,关于其全部功能的详尽解释,请查看 文

    2024年02月12日
    浏览(42)
  • rust crate.io 配置国内源(cargo 国内源) warning: spurious network error (2 tries remainin...

    rust 笔记 Crate 国内源配置 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130758057 Rust 官方默认的 Cargo 源服务器为 crates.io,其同时也是 Rust 官方的 crate 管理仓库,但是由于官方服

    2024年02月05日
    浏览(44)
  • Cargo, the Rust package manager, is not installed or is not on PATH. 解决方案

    今天在配置一个关键时需要执行pip install logru,在执行过程中出现了以下错误:   error: subprocess-exited-with-error   × Preparing metadata (pyproject.toml) did not run successfully.   │ exit code: 1   ╰─ [6 lines of output]       Cargo, the Rust package manager, is not installed or is not on PATH.       This packag

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包