Rust 是什么?

Rust 是一种系统编程语言,它运行速度惊人,并且可以避免几乎所有的崩溃、内存区块错误 以及数据竞争。你也许会质疑为什么我们还需要又一种这样的语言,因为已经有很多同类的语言了。这篇文章将会告诉你为什么。

安全性 vs. 控制权

你也许见过上面的图谱。一边是 C/C++,对运行的硬件拥有更多的控制权,因此它可以让开发者通过对所生成的机器代码进行更精细的控制来优化性能。然而这不是很安全,这很容易造成内存区块错误以及像 心血漏洞 这样的安全漏洞。

另一边是像 Python、Ruby 和 JavaScript 这种没有给予开发者多少控制权但是可以创建出更安全的代码的语言。虽然这些代码可以生成相当安全并且可控的异常,但是它们不会造成内存区块错误。

在图谱中间的区域是 Java 和一些其它混合了这些特性的语言。它们提供对运行的硬件部分控制权,并且尝试尽量减少漏洞的出现。

Rust 有点不太一样,它并没有出现在这个图谱上。它同时提供给开发者安全性和控制权。

Rust 的特性

Rust 是一种像 C/C++ 一样的系统编程语言,除此之外它还给予开发者对内存分配细粒度的控制。它不需要垃圾回收器。它的 运行环境 runtime 很小,运行速度接近于在裸机上的运行。它为开发者提供了代码性能更大的保证。此外,任何了解 C/C++ 的人都能读懂以及编写 Rust 的代码。

Rust 的运行速度非常快,因为它是一种编译语言。它使用 LLVM 作为编译器的后端,并且还可以利用一大堆优化。在许多领域,它的性能都要高于 C/C++。它像 JavaScript、Ruby 和 Python 一样,与生俱来就是安全的,这意味着它们不会造成内存区块错误、 野指针 dangling pointers 或者 空指针 null pointers

另外一个很重要的特性就是消除数据竞争。如今,大多数计算机都具有多个核心,许多线程并发运行。然而,开发者很难编写好的并行代码,因此这个特性除去了他们的后顾之忧。Rust 使用两个关键概念来消除数据竞争:

  • 所有权 Ownership 。每一个变量都被移动到一个新的位置,并防止通过先前的位置来引用它。每一个数据块只有一个所有者。
  • 借用 Borrowing 。被拥有的值可以借用,以允许在一段时间内使用。

在 Fedora 24 和 25 上使用 Rust

若要开始使用,只需安装软件包:

sudo dnf install rust

示例代码 helloworld.rs

fn main() {
    println!("Hello, Rust is running on Fedora 25 Alpha!");
}

编译并执行:

rustc helloworld.rs
./helloworld

在 Fedora 上可以执行以下命令来安装最新的测试版本:

sudo dnf --enablerepo=updates-testing --refresh --best install rust

via: https://fedoramagazine.org/rust-meets-fedora/

作者:Sumantro Mukherjee 译者:OneNewLife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

已有 11 条评论

  1. "Hello, Rust is running on Fedora 25 Alpha!
    真好,又学会一种编程语言!!!" —— fanbt [Firefox 49.0|Fedora] 发表。
  2. 哼,标题党~~~ —— 来自浙江宁波的 Firefox 49.0|Windows 7 用户 发表。
  3. 66 —— OneNewLife [Chrome 53.0|Fedora] 发表。
  4. ... —— OneNewLife [Chrome 53.0|Fedora] 发表。
  5. 好吧,其实,我就是觉得看了这篇,感觉 Rust 好棒啊! —— linux [Chrome 53.0|Mac 10.11] 发表。
  6. 666666666666 —— 来自广东深圳的 Chrome 54.0|Windows 7 用户 发表。
  7. 那赶快来学习吧233 —— OneNewLife [Chrome 53.0|Fedora] 发表。
  8. 学习学习! —— 绿色圣光 [Firefox 45.0|GNU/Linux] 发表。
  9. 实际用过之后发现Rust并没有多好用,连var i; var j = (i = 1)都会得到意想不到结果 —— 来自湖南长沙的 Chrome 54.0|GNU/Linux 用户 发表。
  10. 可以给项目组提 issue,还需改进 :) —— OneNewLife [Chrome 53.0|Fedora] 发表。
  11. 问题是,你这样的语法是想表达什么? —— linux [Chrome 54.0|Mac 10.11] 发表。

添加新评论