引言
Rust 作为最近兴起的一门新的语言,具有许多优点。它是一门令人兴奋的语言,于2010年推出,旨在通过各种出色的模块化,提高程序的安全性,以及改进原有的并发量和性能。
- 相对其他编程语言,Rust的整体速度要快许多。
- 崩溃、测试和调试的时间和频率相对于其它语言也少了许多。
- 具有零成本抽象(Zero-cost Abstraction)和运行时(Runtime)的可预测行为。
- 可以阻止那些不受保护的内存访问,在编译时便可以组织类似于悬垂指针 (Dangling Pointer)的出现。
- Rust拥有广泛的支持社区。
- Rust可与C、FFI (Foreign Function Interface)和许多其他语言进行互操作。
总体来讲 Rust 丰富的类型系统和所有权模型保证了内存和线程的安全,能够在编译时消除许多错误。并且Rust提供了非常友好的编译器,错误提示相较于C/C++难以名状的提示信息而言,则易懂许多。
曾经有人比喻:Pascal 像穿着紧身衣,C像在玩刀,C++像在玩弄燃烧的电锯,而Rust就像穿着保护装备,并且悬挂在绳子上做跑酷运动,看起来滑稽但可以安全的实现高难度动作并且不伤害自己。
基础知识
任何语言的学习都需要从基础知识学起,Rust作为一门新兴的语言,现阶段(2021/6)国内的社区生态环境还并不是十分完善,学习还是需要借助于书籍以及官方文档的帮助。
Rust权威指南
本书由 Rust 核心开发团队编写而成,由浅入深地探讨了 Rust 语言的方方面面。从学习函数、选择数据结构及绑定变量入手,逐步介绍所有权、trait、生命周期、安全保证等高级概念,模式匹配、错误处理、包管理、函数式特性、并发机制等实用工具,以及两个完整的项目开发实战案例。
本书的书写方式并非字典类型,虽然本书将每个语法逻辑进行了分类,并且按照章节进行排序,但是作者在书写后文时会参考前文的例子以及语法逻辑。建议读者按照书籍书写顺序进行阅读,至少每一章节按照顺序阅读,这样不会出现在阅读某个例子时,由于之前的例子没有看而不理解的情况。
Rust By Example
Rust 的线上文档,通过例子学习Rust(Rust By Example, RBE)内容由一系列可运行的实例组成,通过这些例子阐明了各种 Rust 的概念和基本库
https://doc.rust-lang.org/stable/rust-by-example/(英文版)
https://rust-by-example.budshome.com/ (中文版)
同样是讲解rust的基础语法结构,相当于书籍而言,线上文档可以更好地进行搜索工作,在工作或者学习时,遇到某些基础语法点,直接访问此网址查询相应语法点的关键词,比如 dyn,unsafe等,可以很快获得相应语法讲解,虽然是浅显的理解,但可以缓解燃眉之急。并且带有可运,可编译行例子,能更快的得知语法的意义。
常用软件
代码编译软件
Visual Studio Code (VSCode)
下载地址 https://code.visualstudio.com/
特点:VSCode 的Rust 代码跳转需要借助rls 工具,这个扩展工具安装完毕后,系统会提示工具此工具具有扩展功能,是否按转,这是需要点击是,否则不能进行正常的代码跳转功能(或者转到定义)
优点:vscode 的 test 功能相对与其他的编译器而言方便许多。
上图中点击 第6行和第7行之间的 Run test 按钮便可以运行test 功能,比在命令行输入要方便许多,非常适合新手学习代码。
缺点:但此工具具有局限性,编译器仅能分析当前Cargo 目录下的文件 ,当定义来自于,外界范围的代码(即便是来自于 std 标准库的代码)便无法进行接下来的跳转。详情见rust社区如下的讨论:
https://github.com/rust-lang/rls/issues/227
据讨论这个问题在之后会被修复,但一定时间内还是仅能在当前目录进行跳转。
Jetbrains
也是由于上述原因,使用VSCode 查看大型项目,由多个扩展库文件组成的项目,VSCode非常不方便,而Jetbrains就方便许多,Jet同样需要安装扩展库来实现对于rust语言文件跳转功能,而且Jet的全局搜索功能十分强大。