Rust:您的下一个最爱语言 - 入门指南(从零到 Hello World 及更远)
使用 rustup 极其快速地安装 Rust、编译并运行您的第一个程序
为什么你应该学习 Rust?
学习 Rust 有很多原因。
- 它是最容易安装的编译器/工具链(如下文所示),它可以让你构建原生可执行文件。
原生可执行文件什么是原生可执行文件?它是一个直接在目标处理器上运行的程序,无需任何虚拟机或解释器。这非常棒,因为如果你想将可执行文件与运行相同操作系统的其他人共享,你只需将 exe 文件交给他们即可——无需他们安装庞大的库、解释器或运行时(例如 Java 运行时、Python 解释器或 .NET CLR)。
-
你将学习“更接近底层”的编程
与我之前关于原生可执行文件的说法类似——你的代码被编译为直接在处理器上运行(没有运行时环境或解释器)。这意味着你将更多地了解你正在运行的真实环境/操作系统。
-
编程的整体理解将得到提升
你将学习编程的核心概念。通过 Rust,你将学习编程“入门”阶段的概念。你不会专注于诸如构建用户界面等非常高级的事情,而是将在学习 Rust 的概念的同时了解计算机的实际工作原理。
-
Rust 很有趣
在很多方面,用 Rust 学习编程是一种简化的编程,因为你不会立即陷入学习如何创建图形用户界面的麻烦。这消除了被学习所有这些额外东西压垮的负担,让编程变得更加有趣。用 Rust 学习编程类似于传统计算机编程的学习方式——例如,如果你读过 Brian Kernighan 和 Ritchie 的《C 编程语言》(K&R C)一书,你将以小的代码片段学习 Rust,并学习每个概念然后逐步深入。这是一种很棒且有趣的编程学习方式。但是,学习 Rust 比学习 C 更有趣,因为准备好编写 Rust 程序比安装 C 工具链要容易得多。
现在,让我们安装 Rust。
安装 Rust
Windows 安装
安装 Rustup,它将安装你所需的一切,并方便你以后更新。
Linux 或 macOS
运行 curl
来获取 rustup
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
其他安装帮助
有关更多详细信息,请查看官方 Rust 安装网站。
Rust 已安装
如果你已按照系统上的步骤操作,那么 Rust 已经安装好了。
现在你可以打开一个终端(也称为控制台)并运行以下命令
rustc --version
这是我在我的 Windows 10 机器上看到的样子
编写我们的第一个程序
- 打开一个控制台或终端窗口(如果你仍然打开了运行 rustc 程序的那个,就可以使用它)。
- 创建一个目录来存放你的 Rust 项目。我喜欢在我的 /home// 下创建一个名为 dev 的目录,然后为每种语言创建一个单独的文件夹,例如:/home/<user>/dev/rust 或 /home/<user>/dev/c#。当然,在 Windows 上,它看起来会是 %userprofile%\dev\rust,它会展开为 c:\users\<user>\dev\rust。
- 创建好用于存放项目的 rust 主目录后,然后创建一个新目录用于我们的第一个项目:在 Linux 上
$ mkdir ~/dev/rust/hello
或在 Windows 上mkdir %userprofile%\dev\rust\hello
将创建我们想要创建小程序的目录。 - 现在,进入该目录:Linux
cd ~/dev/rust/hello
或 Windowscd %userprofile%\dev\rust\hello
- 创建一个新的 Rust 源文件:在 Linux 上(使用 nano 文本编辑器),输入
nano hello.rs
,或者在 Windows 上,使用记事本notepad hello.rs
- 输入以下程序并保存它(在 nano 中,只需键入 Ctrl-X(退出),然后键入 'y' 以确认您想保存文件)。
fn main() {
println!("Hello, Rust-world!");
}
编译程序
现在是精彩的部分。只需运行 Rust 编译器(rustc)
$ rustc hello.rs
在 Windows 上也是如此。
这将把程序编译成一个名为 hello(在 Windows 上为 hello.exe)的可执行文件。
运行程序
$ ./hello <ENTER>
或者在 Windows 上 \>hello <ENTER>
你将看到输出
你做到了!你已经迈出了成为 Rustacean 的第一步。
但是,你做了什么?
程序详情:你做了什么?
main() 函数
你创建了一个包含主入口点的源文件(一个名为 main
的函数)。
Rust 函数
Rust 函数的格式为
fn [name]( [0 or more parameters] )
{
// function body
}
fn
在 Rust 中表示一个函数。如果你不使用这个关键字,Rust 将不知道这是一个函数。
Rust 需要 main() 函数
如果你将这个小程序中的函数重命名为 main1()
之类的名称并尝试再次编译应用程序,你将收到一个错误。
Rust 具有出色的错误信息
如果你搜索该错误,你将找到官方网页,其中提供以下信息
现在你知道 Rust 需要一个 main()
函数作为入口点。
那个奇怪的 println!()
唯一的代码行调用 println!()
将文本输出到标准输出。你可能已经注意到名称末尾的感叹号。这表明这实际上是一个正在调用的 Rust 宏。这是一个辅助方法,可以让你轻松地将内容写入标准输出。
Rust std(标准)库
你可能还注意到我们没有任何 using
或 #include
语句,但我们已经能够输出到标准输出了。这是因为 Rust 自动为我们包含了 std
库。
包含所有基本类型
std
库定义了所有 Rust 的基本类型,包括
never
, array
, bool
, char
, f32
, f64
, fn
, i8
, i16
, i32
, i64
, i128
, isize
, pointer
, reference
, slice
, str
, tuple
, u8
, u16
, u32
, u64
, u128
, unit
, usize
更多关于这些内容将在未来的文章中介绍。
还有其他库免费包含在内。
例如,你可以创建一个字符串向量并轻松使用它们。
尝试运行此代码
fn main() {
println!("Hello, Rust-world!");
let mut vec = Vec::new();
vec.push("test 1");
vec.push("test 2");
println!("{}",vec[0]);
}
这里,我们创建了一个新的向量类型。
Rust 中可变变量不是默认的
但是,为了能够修改新变量,我们需要使用关键字 mut
(使变量可变)。
一旦我们这样做,我们就使用向量的 push
方法添加两个值(两个 string
)。
最后,我们使用字符串插值 "{}"
打印出向量中第一个元素的值 vec[0]
(零基索引)。
你学到了什么
如果你一路学习下来,你已经学到了
- 学习 Rust 的各种好理由
- 如何安装 Rust(使用官方 rustup),这使得以后更新也很容易(只需输入
$ rustup upgrade
(在 Linux、macOS 和 Windows 上都有效))。 - 每个 Rust 程序都需要一个
main()
函数。 - 函数使用关键字
fn
定义。 - 如何使用简单的
println!()
宏和string
插值。 - Rust 中使用的基本数据类型列表。
要继续你的 Rust 之旅,请查看官方文档并继续学习。
历史
- 2023 年 4 月 26 日:首次发布