Skip to content

1.3 Hello World

编程语言入门第一课,必须得是 hello world 程序。我们先来看看 Rust 的 hello world 是什么样子:


rust
// hello_world.rs
fn main() {
    let s = "hello world!";
    println!("{}", s);
}

对于这样一个简单的示例程序,我们并没有使用 cargo 创建工程,因为没有复杂的依赖关系。编译就直接使用rustc即可,其他所有选项使用默认值:


rust
rustc hello_world.rs

可看到本地文件夹中生成了一个名为hello_world的可执行程序。执行./hello_world程序,可以看见控制台上输出了hello world!字符串。恭喜读者,第一个 Rust 程序已经运行成功了!

我们来分析一下这个最简单的程序。

1)一般 Rust 源代码的后缀名使用.rs表示。源码一定要注意使用 utf-8 编码。

2)第一行是注释语句,Rust 的注释是 C 语言系列风格的,行注释采用//开头,块注释使用/*和*/包围。它还支持更高级的文档注释,将在后文中详细展开说明。

3)fn 是一个关键字(key word),函数定义必须以这个关键字开头。函数体使用大括号来包含。fn 是单词 function 的缩写,在 Rust 中,设计者比较偏向使用单词缩写,即使是关键字也不例外。在代码风格上,某些读者可能开始会有点不习惯。但总体而言,这只是个审美偏好而已,不必过于纠结,习惯就好。

4)默认情况下,main函数是可执行程序的入口点,它是一个无参数,无返回值的函数。如果我们要定义的函数有参数和返回值,可以使用以下语法(参数列表使用逗号分开,冒号后面是类型,返回值类型使用->符号分隔):


rust
fn foo( input1 : i32, input2 : u32) -> i32 {
    ...
}

5)局部变量声明使用 let 关键字开头,用双引号包含起来的部分是字符串常量。Rust 是静态强类型语言,所有的变量都有严格的编译期语法检查。关于 Rust 的变量和类型系统将在后文详细说明。

6)每条语句使用分号结尾。语句块使用大括号。空格、换行和缩进不是语法规则的一部分。这都是明显的 C 语言系列的风格。

最简单的标准输出是使用println!宏来完成。请大家一定注意println后面的感叹号,它代表这是一个宏,而不是一个函数。Rust 中的宏与 C/C++ 中的宏是完全不一样的东西。简单点说,可以把它理解为一种安全版的编译期语法扩展。这里之所以使用宏,而不是函数,是因为标准输出宏可以完成编译期格式检查,更加安全。

从这个小程序的惊鸿一瞥中,大家可以看到,Rust 的语法主要还是 C 系列的语法风格。对于熟悉 C/C++/Java/C#/PHP/JavaScript 等语言的读者来说,会看到许多熟悉的身影。

Released under the MIT License