一直听说 Rust 性能好,速度快,再加上最近想学习一下 wasm ,准备尝试一下。解释型语言写习惯了,再来开始学 Rust 确实有很多思路需要转变一下。《前端的 Rust 学习之路》系列长期更新,欢迎各位同行指正~

开始

什么是 Rust

Rust 是一门系统编程语言,以高性能,速度快,安全而著称,支持函数式,命令式以及泛型等编程范式的多范式语言,通过其特殊的所有权系统来保证安全性,在语法上类似 C++ 。

当然对作为前端,喜欢js, py并且对Java深恶痛绝的我来说,主要关注的是 Rust 是一门跟上述两者截然相反的、需要编译的静态类型语言,需要有明确的类型注解,跟咖啡相比,它很简洁!!!!!😅

如何安装?

安装很容易,官网根据对应系统安装即可,下面简单介绍。

windows

官网找到对应版本 rustup 下载安装即可,rustup 是 rust 的安装工具,安装完成之后 CMD 执行

1
rustc -V

输出版本号表示安装成功,rustup 同时为我们安装了 rustccargo

rustc 就是 Rust 的官方编译器,编译器也就是我们常说的语法分析、类型检查这一步,当然 rustc 干的也不止这两件事。代码写完之后需要编译,这就是 Rust, Java 这种强类型语言跟 js, py 的区别之一了😆

cargo 是 rust 的构建工具和包管理工具,构建稍大一些的 rust 项目需要用到它。

linux

执行

1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

按步骤操作,安装 rustup 工具。除此之外,还建议安装 rust-src, rust-analyzer, rust-analysis,提高开发效率。

1
rustup component add rust-src rust-analyzer rust-analysis

rust-src 包含rust标准库的源代码,主要是为 rust-analyzer 的类型定义跳转功能提供支持。

rust-analyzer 是Rust的语言服务器,主要给IDE提供自动补全、类型推导、类型定义调整、错误检测等功能。

rust-analysis 是为Rust标准库预先计算机的分析数据,当我们需要标准库的定义时,rust-analyzer 能通过 rust-analysis 更快地给出反馈。

IDE

我选择的是windows+vscode+rust-analyzer,vscode扩展商店搜索rust-analyzer安装即可。
也可以使用其他的ide和编辑器:

  • IntelliJ IDEA,安装 IntelliJ Rust plugin。
  • Sublime Text
  • Atom

都有对应的Rust扩展或插件可供选择

使用

先向世界问个好

自从著名的计算机科学家,C语言之父,UNIX之父丹尼斯·里奇(Dennis Ritchie)和《C程序设计语言》作者布莱恩・柯林汉(Brian Kernighan) 用 “Hello World” 程序介绍了C语言后,在UNIX世界里,我们学习的任何新编程语言第一步都会这样做,这已经成为一种习惯。

如今,我们也用 Rust 编写一个 Hello World 程序
新建一个目录,目录里新建文件 main.rs,然后输入:

1
2
3
4
5
fn main(){

println!("Hello World!");

}

怎么样,跟严(you)谨(chou)安(you)全(chang)的咖啡相比,语法是不是很简洁🤣
然后控制台依次执行:
1
$ rustc main.rs

1
2
3
$./main   //Linux
$./main.exe //windows
Hello World!

main函数

在Rust里,使用 fn 来声明一个函数,后面跟的 main 表示函数名,另外 main 是一个特殊的函数,作为程序入口,在程序启动时运行 main 函数中的代码。

println!

跟很多语言的 print printf 一样,rust中 println 用来打印输出,prinkln 的第一个参数必须为字符串,也接受通配符及命名参数等形式。

通配符

1
2
println!("今天是 {} 年 {} 月 {} 日", 2023, 8, 11);
//今天是 2023 年 8 月 11 日

通配符 + 位置

1
2
println!("小明今年{0}岁,小华今年{1}岁,小美今年也{0}岁", 16, 15);
//小明今年16岁,小华今年15岁,小美今年也16岁

通配符 + 命名参数

1
2
println!("今天是 {year} 年 {month} 月 {day} 日", year = 2023, month = 8, day = 11);
//今天是 2023 年 8 月 11 日

此外还支持规定对齐方式,对齐宽度、转换进制、保留位数等等。还比较特殊的是它不是函数,而是一个宏,在 rust 中存在一个宏的概念。

宏类似函数,以(!)来区分,在 rust 中一个类似函数调用但是括号之前有(!)的语句,就是一个宏。

这里先简单了解,后面再详细学习宏和函数的知识。

总结

rust是一门以高性能、速度快、安全而著称的静态类型语言,我们使用 Hello world! 迈出了学习 rust 的第一步。下篇文章我们学习 rust的变量和不变性 以及其特有的 所有权系统