侧边栏壁纸
博主头像
丛庆

没事儿写代码,有事写代码。email:1024@cong.zone

  • 累计撰写 116 篇文章
  • 累计创建 97 个标签
  • 累计收到 4 条评论

【Rust】一、HelloWorld

丛庆
2022-05-22 / 0 评论 / 0 点赞 / 748 阅读 / 2,358 字 / 正在检测是否收录...
温馨提示:
部分资料和图片来源于网络,如有危害到您的利益请与我联系删除,1024@cong.zone。

Hello World

检查Rust环境

cmd或powershell(windows环境)中输入以下命令

rustup --version

image-1653226757597

使用Cargo创建项目

检查cargo环境

cmd或powershell(windows环境)中输入以下命令

cargo --version

创建项目

切换到项目目录(希望代码存放的目录,我的目录是C:\workspace\rust)后输入以下命令

cargo new hello_cargo

image-1653230819230

进入hello_cargo目录

cd hello_cargo
dir

image-1653230965939
进入 hello_cargo 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。
这也会在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。如果在一个已经存在的 git 仓库中运行 cargo new,则这些 git 相关文件则不会生成;可以通过运行 cargo new --vcs=git 来覆盖这些行为。

注意:Git 是一个常用的版本控制系统(version control system, VCS)。可以通过 --vcs 参数使 cargo new 切换到其它版本控制系统(VCS),或者不使用 VCS。
可以运行 cargo new --help 查看可用的其他选项。
image-1653230880616

使用文本编辑器打开 Cargo.toml 文件:
image-1653231269579
image-1653230589792
这是一个TOML (Tom’s Obvious, Minimal Language) 格式文件,也是 Cargo的 配置文件的格式。

第一行,[package],是一个片段(section)标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他片段(section)。

接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition 的值。

最后一行,[dependencies],是罗列项目依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用得上这个片段。

打开 src/main.rs
image-1653231505188
Cargo 自动生成了一个 “Hello, world!” 程序

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

构建并运行 Cargo 项目

cargo build

在 hello_cargo 目录下,输入下面的命令来构建项目:

cargo build

image-1653231622502

build命令会创建一个可执行文件 并存放在 target\debug\hello_cargo.exe

进入 target\debug 运行hello_cargo.exe
image-1653231739012

首次运行 cargo build 时, Cargo 会在项目根目录创建一个新文件:Cargo.lock。这个文件记录项目依赖的实际版本。这个项目并没有依赖,所以其内容比较少。永远也不需要碰这个文件,让 Cargo 处理它就行了。

cargo run

我们刚刚使用 cargo build 构建了项目,并使用 ./target/debug/hello_cargo 运行了程序,也可以使用 cargo run 在一个命令中同时编译并运行生成的可执行文件
回到hello_cargo目录
执行 cargo run
image-1653231920661

可以看到同时进行了编译和运行

注意:这一次并没有出现表明 Cargo 正在编译 hello_cargo 的输出。Cargo 发现文件并没有被改变,就直接运行了二进制文件。如果修改了源文件的话,Cargo 会在运行之前重新构建项目,并会出现像这样的输出:
image-1653232418826```

cargo check

Cargo 还提供了一个叫 cargo check 的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件:
image-1653232031327

什么情况先不需要可执行文件?通常 cargo check 要比 cargo build 快得多,因为它省略了生成可执行文件的步骤。如果你在编写代码时持续的进行检查,cargo check 会加速开发!为此很多 Rustaceans 编写代码时定期运行 cargo check 确保它们可以编译。当准备好使用可执行文件时才运行 cargo build。

我们回顾下已学习的 Cargo 内容:

发布(release)构建

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

把 Cargo 当作习惯

对于简单项目, Cargo 并不比 rustc 提供了更多的优势,不过随着开发的深入,终将证明其价值。对于拥有多个 crate 的复杂项目,交给 Cargo 来协调构建将简单的多。
即便 hello_cargo 项目十分简单,它现在也使用了很多在你之后的 Rust 生涯将会用到的实用工具。其实,要在任何已存在的项目上工作时,可以使用如下命令通过 Git 检出代码,移动到该项目目录并构建:

git clone example.org/someproject
cd someproject
cargo build

使用IDEA开发

安装IDEA插件

image-1653227047593
安装后要重启IDEA

IDEA新建Rust项目

image-1653227137373

image-1653227200399

image-1653227283386

image-1653227304182

可以看到生成的项目和cargo 生成的项目结构是一样的
image-1653227349140

运行程序

image-1653227630173

结果中输出了 Hello, world!
image-1653227683703

0

评论区