Rust programming 2


基础永远值得花费90%的精力去学习加强。认识实践的重要性。

Ax Rust Hello World

第一个程序main.rs

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

执行

$ rustc main.rs    # 编译                                                                        
$ ./main            # 执行
Hello, world!

Bx Cargo

Cargo 是 Rust 的构建系统和包管理器。

创建项目

$ cargo new hello_cargo

进入hello_cargo目录并列出文件。您会看到 Cargo 为我们生成了两个文件和一个目录:一个Cargo.toml文件和一个 src目录,其中包含一个main.rs文件。

它还初始化了一个新的 Git 存储库以及一个*.gitignore*文件。cargo new如果您在现有的 Git 存储库中运行,则不会生成 Git 文件;您可以使用cargo new --vcs=git.

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]

该文件采用TOMLTom’s Obvious, Minimal Language)格式,这是 Cargo 的配置格式。

[package] :第一行是节标题。指示以下语句正在配置包。

接下来的三行设置 Cargo 编译程序所需的配置信息:名称、版本和要使用的 Rust 版本。

最后一行,[dependencies],是您列出项目的任何依赖项的部分的开始。在 Rust 中,代码包被称为 crates。这个项目我们不需要任何其他 crate,但我们将在第 2 章的第一个项目中使用,因此我们将使用这个依赖项部分。

main.rs

文件名:src/main.rs

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

Cargo 生成了一个“Hello, world!” 为您准备的程序。

我们之前的项目与 Cargo 生成的项目的不同之处在于 Cargo 将代码放在了src 目录中,而我们在顶层目录中有一个Cargo.toml配置文件。

思想:Cargo 希望您的源文件位于src目录中。顶级项目目录仅用于 README 文件、许可证信息、配置文件以及与您的代码无关的任何其他内容。使用 Cargo 可以帮助您组织项目。一切都有一个地方,一切都在它的位置。

如果您启动了一个不使用 Cargo 的项目,就像我们使用“Hello, world!”所做的那样 项目,您可以将其转换为使用 Cargo 的项目。将项目代码移动到src目录并创建一个适当的Cargo.toml 文件。

构建和运行

构建

hello_cargo目录中,通过输入以下命令构建项目:

$ cargo build
   Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs

运行

此命令在target/debug/hello_cargo(或 Windows 上的target\debug\hello_cargo.exe)而不是在您的当前目录中创建一个可执行文件。您可以使用以下命令运行可执行文件:

$ ./target/debug/hello_cargo # or .\target\debug\hello_cargo.exe on Windows
Hello, world!

第一次运行cargo build也会导致 Cargo 在顶层创建一个新文件:Cargo.lock。该文件跟踪项目中依赖项的确切版本。这个项目没有依赖,所以文件有点稀疏。您永远不需要手动更改此文件;Cargo 为您管理其内容。

我们刚刚构建了一个项目cargo build并使用 运行它 ./target/debug/hello_cargo,但我们也可以使用它cargo run来编译代码,然后在一个命令中运行生成的可执行文件

$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/hello_cargo`
Hello, world!

检查

Cargo 还提供了一个名为cargo check. 此命令快速检查您的代码以确保它可以编译但不会生成可执行文件:

$ cargo check
   Checking hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs

为什么你不想要一个可执行文件?通常,cargo checkcargo build快得多,因为它跳过了生成可执行文件的步骤。如果您在编写代码时不断检查您的工作,使用cargo check将加快该过程!因此,许多 Rustaceans 在cargo check编写程序时会定期运行以确保它可以编译。然后它们cargo build在准备好使用可执行文件时运行。

总结

cargo总结:

  • 我们可以使用cargo new.
  • 我们可以使用cargo build.
  • 我们可以使用cargo run.
  • 我们可以在不生成二进制文件的情况下构建一个项目来使用 cargo check.
  • Cargo 没有将构建结果保存在与我们的代码相同的目录中,而是将其存储在target/debug目录中。

发布

当您的项目最终准备好发布时,您可以使用cargo build --release优化来编译它。此命令将在target/release而不是target/debug中创建可执行文件。

优化使您的 Rust 代码运行得更快,但打开它们会延长程序编译所需的时间。这就是为什么有两种不同的配置文件的原因:一个用于开发,当您想要快速且经常重建时,另一个用于构建您将提供给用户的最终程序,该程序不会重复重建并且运行速度与可能的

如果您要对代码的运行时间进行基准测试,请务必使用target/releasecargo build --release中的可执行文件运行和基准测试。

下载

使用git快速下载公开项目到本地,并构建。

$ git clone example.org/someproject
$ cd someproject
$ cargo build

Cx Conclusion

您的 Rust 之旅已经有了一个良好的开端!在本章中,您学习了如何:

  • 使用安装最新稳定版本的 Rustrustup
  • 更新到较新的 Rust 版本
  • 打开本地安装的文档
  • 编写并运行“你好,世界!” 程序rustc直接使用
  • 使用 Cargo 的约定创建并运行一个新项目

文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录