Rust 中说的不可变指的是什么?

2019-01-11 14:26:34 +08:00
 Sparetire

RT, Rust 中说变量默认是不可变的, 这里的不可变, 是指绑定不可变, 还是指值不可变呢? 或两者都有?

这块的表述可能不是很准确, 只在大学学过 C, 其实我就是想问, 这个是类似于 int const* p 还是类似于 int* const p 这样的?

3851 次点击
所在节点    Rust
2 条回复
quinoa42
2019-01-14 14:14:13 +08:00
除去极其个别的情况(你后面会学到),如果要修改函数的某个参数或是变量,需要要么 own 那个值,要么有 mutable reference
reference 实际上相当于是 const pointer,不能修改指向的地址位置的(用 Rustacean 的话来讲,你只是 borrow 了这个变量)

也就是说是:&bla == ??? const *const bla
&mut bla == ??? * const bla
mut bla = ??? bla
bla = ??? const bla

我也是前段时间才开始学 rust,如有错误请多多指正
Sparetire
2019-01-15 22:44:10 +08:00
@quinoa42 我的理解是类似于 const int * const p 这样的, 即指向不可变, 值也不可变...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/526048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX