Rust是否过度限制了程序员的能力发挥呢?

我们都爱想念熊


Rust 是否限制了程序员的能力发挥? 答案是肯定的。

Rust限制了程序员写出不安全代码的能力。

程序员水平不一, 让他们随意发挥不知道能写出什么代码来. 你可能觉得这种写法没有问题, 但是编译器不这样认为。

Rust 语法限制很多,但大多数都是为了阻止程序员写出不安全的代码。如果用C++完成某一功能有10条路可以走,那么用Rust完成同样的功能可能只有2条路可 以走。Rust通过语法限制配合Rust runtime,把那些可能出现data race、dangling reference、double free等问题的不安全道路堵死了。

比如,大多编程语言对于引用的使用都没有限制,而Rust则通过对引用施加一些规则,避免了data race的问题:Rust中,一个变量的引用分为可变引用和不可变引用,前者可以读写变量值,后者只能读变量值。对于同一作用域内的同一变量,该变量的引 用必须满足下述规则之一:

  1. 该变量只有一个可变引用
  2. 该变量有多个可变引用,且每个引用的作用域不相交
  3. 该变量只有若干个不可变引用
  4. 该变量既有可变引用又有不可变引用,且每个引用的作用域不相交

如果代码不满足上面任何一个规则,那么代码就有潜在的data race风险,将不能通过编译。下面这段代码不满足上面的规则,编译时会出错。

// 这段代码定义了一个可变引用r1,和不可变引用r2,

// 但二者作用域相交,将无法通过编译

fnmain() {

let mut s = Stringfrom("Hello World!");

let r1 = &mut s;

let r2 = &s;

println!("value of s: {}\


分享到:


相關文章: