Rust简介
Rust是一种现代的、安全的系统编程语言,它具有高效、并发和级别控制的特点。Rust的设计目标是提供一种可靠的编程语言,可以帮助开发人员写高性能、可维护和安全的软件。Rust的语法类似于C++,但它具有更强的类型安全性和内存安全性。
Rust的历史和发展
Rust最初由Mozilla的Graydon Hoare在2010年开发,最初是作为一种替代C++的语言。Rust的开发目标是提供一种可靠的编程语言,可以帮助开发人员写高性能、可维护和安全的软件。Rust的开发过程非常开放和透明,Rust的开发者们积极参与社区,与其他开发者分享他们的经验和知识。
Rust的特点和优势
Rust的特点和优势主要包括以下几个方面:
- 安全性:Rust的所有权模型可以防止常见的内存错误,例如空指针引用和数据竞争。Rust的编译器可以执行更严格的类型检查,可以在编译时捕获更多的错误。这使得Rust的代码更加健壮和可靠。
- 高效性:Rust的编译器可以生成高效的本地代码,可以与C++相媲美。Rust的所有权模型和借用机制可以避免不必要的内存分配和拷贝,从而提高代码的性能。
- 并发性:Rust的所有权模型和借用机制可以避免数据竞争和死锁等并发问题。Rust的标准库提供了丰富的并发编程工具,可以轻松地编写多线程代码。
- 可维护性:Rust的模块化和抽象机制可以帮助开发人员编写可维护的代码。Rust的编译器可以执行更严格的类型检查,可以在编译时捕获更多的错误,从而减少代码的维护成本。
Hello, world!
老规矩,学习一门语言先从Hello, world!开始
安装rust:
linux/macOS使用以下命令行
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
该命令下载一个脚本并开始安装 rustup 工具,该工具会安装最新稳定版本的 Rust。系统可能会提示您输入密码。如果安装成功,会出现如下一行:
Rust is installed now. Great!
你可能还需要一个链接器,这是 Rust 用来将其编译输出连接到一个文件中的程序。你可能已经拥有一个。如果遇到链接器错误,你应该安装一个 C 编译器,它通常包含一个链接器。 C 编译器也很有用,因为一些常见的 Rust 包依赖于 C 代码并且需要 C 编译器。
在 macOS 上,可以通过运行以下命令获得 C 编译器:
$ xcode-select --install
根据发行版的文档,Linux 通常应该安装 GCC 或 Clang。例如,如果使用 Ubuntu,则可以安装 build-essential 软件包。
检查是否安装成功
命令行输入
$ rustc --version
看到已发布的最新稳定版本的版本号、提交哈希和提交日期,格式如下:
rustc x.y.z (abcabcabc yyyy-mm-dd)
就表示已经安装成功,如果没有就检查环境变量
Windows CMD
> echo %PATH%
PowerShell
> echo $env:Path
linux/macOS
$ echo $PATH
升级和卸载
一旦通过 rustup 安装了 Rust,更新到新发布的版本就很容易了。从 shell 运行以下更新脚本:
$ rustup update
要卸载 Rust 和 rustup,从 shell 运行以下卸载脚本:
$ rustup self uninstall
创建项目
安装了 Rust,是时候编写第一个 Rust 程序了。传统做法是编写一个打印文本 Hello, world! 的小程序
打开终端并输入以下命令以创建项目目录和“Hello, world!”目录项目目录中的项目。
Linux、macOS、 PowerShell on Windows
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
Windows CMD
> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world
编写和运行 Rust 程序
接下来,创建一个新的源文件并将其命名为 main.rs。 Rust 文件总是以 .rs 扩展名结尾。如果在文件名中使用了多个单词,惯例是使用下划线将它们分开。例如,使用 hello_world.rs 而不是 helloworld.rs
现在打开刚刚创建的 main.rs 文件并输入以下代码:
fn main() {
println!("Hello, world!");
}
保存文件并返回到 ~/projects/hello_world 目录中的终端窗口。在 Linux 或 macOS 上,输入以下命令来编译和运行该文件:
$ rustc main.rs
$ ./main
在 Windows 上,输入命令 .\main.exe 而不是 ./main:
> rustc main.rs
> .\main.exe
输出
Hello, world!
Rust 程序剖析
剖析一下hello_world程序。这是第一部分:
fn main() {
}
这些行定义了一个名为 main 的函数。 main 函数很特别:它始终是每个可执行 Rust 程序中运行的第一个代码。此处,第一行声明了一个名为 main 的函数,该函数没有参数且不返回任何内容。如果有参数,它们将放在括号 () 内。
函数体包裹在 {} 中。 Rust 要求所有函数体都用大括号括起来。将左大括号与函数声明放在同一行是一种很好的风格,中间加一个空格。
main 函数的主体包含以下代码:
println!("Hello, world!");
这一行完成了这个小程序中的所有工作:它将文本打印到屏幕上。这里有四个重要的细节需要注意。
- Rust 风格是用四个空格缩进,而不是制表符
println!调用 Rust 宏(后面章节讲)。如果它调用了一个函数,它将作为 println 输入(不带 !)- 我们将"Hello, world!"字符串作为参数传递给 println!,然后将字符串打印到屏幕上
- 以分号 (;) 结束该行,表示此表达式已结束,下一个已准备好开始。大多数 Rust 代码行以分号结尾
编译和运行是分开的步骤
我们刚刚运行了一个新创建的程序,所以让我们检查一下该过程中的每个步骤。
在运行 Rust 程序之前,必须使用 Rust 编译器对其进行编译,方法是输入 rustc 命令并将源文件的名称传递给它,如下所示:
rustc main.rs
这类似于 gcc 或 clang。编译成功后,Rust 输出二进制可执行文件。
在 Linux、macOS 和 Windows 上的 PowerShell 上,您可以通过在 shell 中输入 ls 命令来查看可执行文件:
$ ls
main main.rs
这显示了扩展名为 .rs 的源代码文件、可执行文件(在 Windows 上为 main.exe,但在所有其他平台上为 main),以及使用 Windows 时包含调试信息且扩展名为 .pdb 的文件。从这里,您可以运行 main 或 main.exe 文件,如下所示:
$ ./main
windows
> .\main.exe
结语
Rust 是一种提前编译语言,这意味着可以编译一个程序并将可执行文件提供给其他人,他们甚至可以在没有安装 Rust 的情况下运行它
仅使用 rustc 编译对于简单的程序来说很好,但随着项目的增长,我们需要管理所有选项并使其易于共享代码。下一篇,我们将介绍 Cargo 工具,它将帮助您编写真实世界的 Rust 程序。