Rust 入门 第一个 Rust 程序 - Hello World

昨天我们安装了Rust, 今天我们来编写HelloWorld

1. Hello World

编写并运行这个简单的程序
  • 在昨天创建的 rust 目录内创建一个projects文件夹用于存放项目文件
  • projects文件夹内创建项目文件夹hello_world
  • hello_world文件夹内创建文件main.rs
  • 打开文件main.rs, 编写代码
fn main() {
    println!("Hello, world!");
}
  • 保存文件, 在项目文件夹hello_world内打开终端
  • 输入rustc main.rs编译程序
  • 输入.\main.exe运行程序
> rustc main.rs
> .\main.exe
Hello, world!
分析这个简单的程序

现在我们回过头来仔细看看 “Hello, world!” 程序中到底发生了什么

fn main() {

}

这几行定义了一个 Rust 函数。main 函数是一个特殊的函数:在可执行的 Rust 程序中,它总是最先运行的代码。第一行代码声明了一个叫做 main 的函数,它没有参数也没有返回值。

还须注意,函数体被包裹在花括号中,{}。Rust 要求所有函数体都要用花括号包裹起来。一般来说,将左花括号与函数声明置于同一行并以空格分隔,是良好的代码风格。


main()函数中是如下代码

println!("Hello, world!");

这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有四个重要的细节需要注意。

首先 Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。

第二,println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有!),当看到符号 ! 的时候,就意味着调用的是宏而不是普通函数。

第三,"Hello, world!" 是一个字符串。我们把这个字符串作为一个参数传递给 println!,字符串将被打印到屏幕上。

第四,该行以分号结尾(;),这代表一个表达式的结束和下一个表达式的开始。大部分 Rust 代码行以分号结尾。


我们刚刚运行了一个新创建的程序,那么让我们检查此过程中的每一个步骤。

# 在运行 Rust 程序之前, 必须是他 Rust 的编译器编译源码
> rustc main.rs

# 让我们看一下在 windows 下输出了那些文件
> dir
...
main.exe # 二进制可执行文件
main.pdb # 这个文件包含程序的调试信息, 这个文件只有 windows 平台下会生成
main.rs

2. Hello Cargo

编写并运行这个简单的程序
  • Rust 官方提供了一个项目管理工具Cargo
  • Cargo可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。
  • 现在我们通过Cargo编写一个入门程序
  • 在项目文件夹projects内打开终端
  • 输入以下命令
> cargo new hello_cargo # 创建新项目
> cd hello_cargo
> cargo build # 编译项目文件
> cargo run # 运行项目, 项目默认会输出 Hello, world!
Hello, world!
分析以下 Cargo 的工作
  • cargo new hello_cargo为我们创建了一个新的项目
> dir
...
.gitignore
Cargo.toml
src
  • 进入 hello_cargo 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。它也在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。

  • 用文本编辑器打开 Cargo.toml 文件。

[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"

[dependencies]

这个文件使用 TOML (Tom's Obvious, Minimal Language) 格式,这是 Cargo 配置文件的格式。

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

接下来的四行设置了 Cargo 编译程序所需的配置:项目的名称、版本、作者以及要使用的 Rust 版本。Cargo 从环境中获取你的名字和 email 信息,所以如果这些信息不正确,请修改并保存此文件。

最后一行,[dependencies],是项目依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate。


  • 用文本编辑器打开 main.rs 文件。
fn main() {
    println!("Hello, world!");
}

Cargo 自动为我们生成了一个 “Hello, world!” 程序

与之前的项目相比,Cargo 将代码放在 src 目录,同时项目根目录包含一个 Cargo.toml 配置文件。

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

如果没有使用 Cargo 开始项目,比如我们创建的 Hello,world! 项目,可以将其转化为一个 Cargo 项目。将代码放入 src 目录,并创建一个合适的 Cargo.toml 文件。


  • cargo build命令

这个命令会创建一个可执行文件 target/debug/hello_cargo.exe,它不是放在项目的根目录下。

  • cargo run命令

正如字面语义一样,他会先检查我们的代码,然后构建项目,最后执行它。

  • cargo check命令

这个命令我们没有用到,它会快速检查我们的代码确保其可以编译。

  • 项目发布

当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。

这会在 target/release 而不是 target/debug 下生成可执行文件。

这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。

如果对我分享的内容感兴趣的话  记得关注我得动态
求推荐  求收藏  求转发  求关注
posted @ 2021-02-01 00:52  Delayer  阅读(553)  评论(0)    收藏  举报