像许多开发人员一样,我对 Rust 感兴趣已经有一段时间。不仅是因为它经常出现在各种技术媒体如 Hacker News 头条上,以及它在安全性和性能方面采用了一些新颖方法,而且还发现程序员在谈论它时带着一些特别喜爱和钦佩之感。最重要的是,它具有与我最喜欢的入门语言 Swift 相同的目标和功能。
由于我最近花时间在一些小型个人项目中试用 Rust,因此我想花一点时间记录一下我对该语言的印象,尤其是它与 Swift 相比。
大图景
Rust 和 Swift 有很多共同点:它们都是编译语言,具有强大的、现代的类型系统,并且注重安全性。代数类型、对可选值(Option)的语言级别设计等特性,有助于将许多错误类别从运行时发现转移到编译时检查。
那么这两种语言有何不同?我觉得它们之间最准确的差异描述是:
Swift 使编写安全代码变得容易。
Rust 使编写不安全的代码变得困难。
这两个语句听起来可能等效,但是有一个重要的区别。两种语言都有实现安全性的工具,但是要实现安全性,他们会做出不同的权衡:Swift 优先考虑开发便捷即使一定程度牺牲性能,而 Rust 更看重性能,即便某种程度牺牲开发便捷。
权衡:性能与开发效率
证明这种优先级差异的最直接的方法是比较这些语言的内存管理的不同。我先从 Rust 开始,因为该语言的内存管理方法是其独特的卖点之一。
在 Rust 中,内存主要是静态管理的(还有其他的内存管理模式,比如引用计数,但是可以先忽略它