为什么在Rust中强制使用不变性,除非您指定mut
?这是安全性的设计选择,您是否认为它在其他语言中应该如何自然?
我应该澄清一下,我还是Rust的新手。那么这是一种与该语言中的另一个特征相关的设计选择吗?
答案 0 :(得分:15)
Rust-Book实际上解决了这个问题。
默认情况下绑定是不可变的没有单一原因,但我们可以通过Rust的一个主要关注点来考虑它:安全性。如果您忘记说
mut
,编译器会捕获它,并让您知道您已经改变了一些您可能无意改变的内容。如果默认情况下绑定是可变的,编译器将无法告诉您这一点。如果 意图突变,那么解决方案非常简单:添加mut
。在可能的情况下,还有其他充分的理由可以避免可变状态,但它们超出了本指南的范围。通常,您通常可以避免显式变异,因此在Rust中更可取。也就是说,有时候,突变就是你所需要的,所以它不是禁止的。
基本上是C ++ - Mantra,你不想修改的所有内容都应该是const,只需通过颠倒规则来正确完成。 Also see this Stackoverflow article about C++.