每年,开发者问答网站 Stack Overflow 都会对程序员社区展开年度调查,包括他们最喜爱的技术到工作偏好的所有内容。 在2017 年和2018 年Stack Overflow 年度开发者调查中,Rust语言已经连续两年成为最受欢迎语言Top 1。
Rust语言有哪些特别之处呢?下面,我给大家简单介绍一下这门语言。
Rust 语言简介
首先上一段 Hello World 的代码:
类似于 C 语言,这个简单程序定义了一个 main 函数,该函数是该程序的指定入口点(而且每个程序都有一个)。该函数使用 fn 关键字后跟括号 (()) 中的一组可选参数来定义。花括号 ({}) 标示该函数的边界,这个函数包含对 println! 宏的一次调用,根据该字符串参数的定义,这会向控制台发出格式化的文本 (stdout)。
相对于前辈产品,Rust 是一种较新的语言,但它的血统造就了它的多模式方法。Rust 被视为一种类似 C 的语言,但它包含的其他特性带来了相较其前辈产品的优势。
Rust 是一个由 Mozilla 主导开发的新兴语言,其官方网站介绍如下:
Rust is a modern systems programming language focusing on safety, speed, and concurrency. It accomplishes these goals by being memory safe without using garbage collection.
Rust 语言特性
Rust 有着非常优秀的特性,例如:
- 可重用模块
- 内存安全和保证(安全的操作与不安全的操作)
- 不可恢复和可恢复的错误处理特性
- 并发性支持
- 复杂的数据类型(称为集合)
如果与我们比较熟悉的 C++ 相比的话,Rust 可以比较的地方太多了,这里我仅仅举一个比较简单的部分(模块引入)来看,在 C++ 中我们可能会需要以下头文件:
而如果要在 Rust 中完成的话,我们只需要:
Rust 提供大量默认的标准库。上面的代码中,就第一行,就 use 了一堆模块,这一点和 Python 的 import xxx 比较相似,此外:
C++ 还是那个老问题:惯用法。析构函数、拷贝构造函数。写对了没有。单线程下是对的,也许多线程就错了。要知道你可能从前写好了基础库,没有完整测试它在高并发下的表现,继续用可能就出错了(数据错误、内存访问错误)。Rust 呢?Rust 有一套基础设施(borrow checker), 从语义上检查了跨线程共享。对 Rust 来说,编译器保证指出你的错误,对 C++ 来说,编译器没有这种保证,它也无法保证。
Rust 语言应用
在我们决定加入一个语言的“宗教”前,我们先来看看 Rust 已经做到了哪些,可以给我们带来哪些优秀的实用工具:
mdBook
一个可以将 Mardown 文档生成类似文档库的工具,mdBook 和 Rust 的所有文档就是通过 mdBook 完成的。
i3status-rust
对于 i3 窗口管理器适用的一个状态栏显示工具,使用 Rust 编写,非常易扩展。
Rust 编译器执行内存安全保证和其他检查,让该编程语言变得很安全。所以,在 Rust 中,永远不必担心悬空指针,或者担心在释放对象后使用它。这些是核心 Rust 语言的一部分。
虽然目前还没有针对 Rust 成熟的 IDE,但是在 LeetCode Playground 中,我们已经率先开启了针对 Rust 的支持,使用 Rust 1.31.0。
要入门 Rust?可以参考 Rust 官方的一个非常易懂的 Rust by Example(https://doc.rust-lang.org/stable/rust-by-example/index.html) ,通过学习网站上的例子并且在 LeetCode Playground 上进行尝试,Rust 可以很快入门,当然,如果要精通的话就需要大量的练习啦。
作者:Nova
声明:本文版权归力扣 LeetCode 所有,未经允许禁止转载。