【一起学Rust】Rust的Hello Rust详细解析

本文最后更新于:1 年前

跟随本篇文章,你将学会编写Rust的Hello World,并且对Rust编程有个初步的了解。


前言

在上一小结中,我们搭建了 Rust 的开发环境,并且使用 Rust 的包管理工具 Cargo 运行了官方提供的示例程序。

本节我们将使用 Rust 来实现一个 Hello World。当你学习任意一门编程语言时,学习的第一门课就是 Hello World,通过 Hello World 你可以了解这门编程语言基本上是什么样子的,怎么编程,对其一些语法特性能有个基本的了解。


一、创建项目目录

Rust 原本是提供了包管理工具 Cargo 的,它提供了项目创建的功能,可以创建一个完整的 Rust 项目,但是 Rust 实际上运行可以不依赖其他的项目文件。

Rust 就和 C 语言差不多,有可以将源码单独编译成一个文件的能力。就像你写了个 main.c ,里面写了 Hello World,然后执行 cl main.c 一样。这是预编译类型语言一个相当强大的能力,强如 Java 使用 javac 编译出来的也只是字节码文件,需要借助 JVM 才可以运行,而 Rust 编译的文件则可以不借助于运行时运行。

因此,现在我们使用 Rust 来做这件事。首先就是新建一个文件夹,这个文件夹在什么地方你可以自己定,只要你能找到它就行,你甚至可以创建在桌面。我就创捷到了一个地方,并且将这些项目名字规整的放在一起,方便查看。


二、编写Hello World

现在,找到你创建的文件夹,进入这个文件夹,然后创建个文件 main.rs ,就像下面图中一样,

然后在空白处 右击 ,并选择 使用vscode打开

其实 Rust 是不限制你使用何种代码编辑器的,哪怕是记事本也可以编写 Rust 代码,我们这里为了方便,就选择了 vscode。


然后在 写代码区域 中写入以下代码,

1
2
3
fn main() {
println!("hello rust!");
}

这样 Hello World 就编写完成了。


三、运行程序

运行这个 Rust 程序分为两个步骤,

  1. 编译
  2. 运行

编译: 就是将代码编译成二进制可执行程序。

在 vscode 的下方,有个终端选项卡,如下图

编译

现在我们开始编译刚才写的代码,在终端中输入以下命令运行编译程序,

1
rustc main.rs

如果没有出现错误,你将出现和我一样的界面

在文件目录会多出两个文件,main.exemain.pdb

  • main.exe是编译好的可执行文件,你在文件管理器界面直接双击就可以运行
  • main.pdb是一个包含调试信息的文件

运行

现在我们来运行这个可执行文件,在终端中输入以下命令运行程序

1
.\main.exe

在终端中就会输出 Hello World了。

现在我们在文件管理器中文件,首先进入你创建项目的文件夹,

双击 main.exe ,你就会发现什么也没有出现,就是电脑屏幕闪了一下。这是没有问题的,因为我们创建的是命令行程序,是没有窗口的,在程序输出完 Hello World 以后就运行结束了,所以什么都看不到。

在空白处 右击 ,选择 打开终端 ,然后输入以下命令运行,可以得到和之前一样的结果。

1
.\main.exe


四、分析Hello World

接下来我们对这个编写并运行 Hello World 的流程进行分析。

源码分析

在这段简短的源码中,我们创建了一个 main 函数,并且输出了 Hello World, 以下内容是你要注意的,

  1. 入口函数是 main ,遵循大多数编程语言的传统

  1. 大括号标明作用域

  1. 创建 main 函数,() 中没有内容表示不接受参数

  1. 语句分号结尾


除此以外,还有一些东西,是我们后面才会学到的东西,你有兴趣可以了解一下,

  • println! 并不是一个函数调用,这是个宏调用,如果你见到 ! 表示这是个宏
  • Rust 缩进风格使用 4 个空格,而不是 1 个制表符 tab

编译过程

在 Rust 中,编译和运行是独立的步骤,你需要将源码编译成可执行文件,然后再执行这个可执行文件

我们使用以下命令进行编译,

1
rustc main.rs
  • rustc 是 Rust提供的将源码编译成为可执行文件的程序,接收一个文件名
  • main.rs 是源文件的文件名,这里被当作参数传递给 rustc
  • 两部分要使用空格 隔开,区分传递给程序的参数

总结

现在,你已经学会使用 Rust 来编写一个 Hello World,并且对 Rust 编译和执行有所了解。


作业

考虑以下问题,重复自己在脑海中学过的东西,使对其印象更加深刻,从而让你对本章知识有更深的理解。

  1. 使用 Rust 输出你的名字
  2. 回顾 Rust 的编译和运行