【发布时间】:2020-01-13 10:16:34
【问题描述】:
据我了解,可变性并未反映在变量类型签名中。例如,这两个引用具有相同的类型签名&i32:
let ref_foo : &i32 = &foo;
let mut ref_bar : &i32 = &bar;
为什么会这样?这似乎是一个相当大的疏忽。我的意思是,即使是 C/C++ 也更明确地使用两个 const 来表示我们有一个指向 const 数据的 const 指针:
const int * const ptr_foo = &foo;
const int * ptr_bar = &bar;
有没有更好的思考方式?
【问题讨论】:
-
不是
mut表示可变性吗? -
c++ 也没有
const int& const是不是你错过了什么? -
详细说明最后一条评论:您将橙子与苹果进行比较。 rust 的例子是关于引用的(C++ 中没有两个
consts 用于引用),而 C++ 的例子是关于指针 -
在 C++ 中,引用是固定的,不能重新分配它们以引用其他内容。因此与&运算符关联的
const只是指它绑定的数据是否为const。