< 返回版块

freewong 发表于 2023-11-12 16:01

Tags:mut

let mut foo =point{x:1,y:2};
let mut ref_foo_2 =&mut foo;
//let ref_foo_2 =&mut foo;
ref_foo_2.y=100;
println!("{:?}",ref_foo_2);

注释掉的那一行去掉了 mut 但是结果完全不影响 真是觉得rust语法混乱

评论区

写评论
作者 freewong 2023-11-12 22:02

完全懂了,感谢大佬的悉心指点。多谢了

--
👇
Wuyan: ```rust // 第一个mut 表示ref_foo_2本身可变(如后面可以给 ref_f00_2 赋值:ref_f00_2 = &mut foo2), // 第二个 &mut 表示 ref_foo_2 指向数据的内部可变(如:ref_f00_2.x=2;是合法的) let mut ref_foo_2 =&mut foo;

```rust
// ref_foo_2 本身不可变(如后面:ref_f00_2 = &mut foo2; 是不合法)
// ref_foo_2 指向数据的内部可变(如:ref_f00_2.x=2;是合法的)
let ref_foo_2 =&mut foo;
facefaceless 2023-11-12 21:43

可以对比c++的const来学习,比如const int * const p

Wuyan 2023-11-12 17:26
// 第一个mut 表示ref_foo_2本身可变(如后面可以给 ref_f00_2 赋值:ref_f00_2 = &mut foo2),
// 第二个 &mut 表示 ref_foo_2 指向数据的内部可变(如:ref_f00_2.x=2;是合法的)
let mut ref_foo_2 =&mut foo;
// ref_foo_2 本身不可变(如后面:ref_f00_2 = &mut foo2; 是不合法)
// ref_foo_2 指向数据的内部可变(如:ref_f00_2.x=2;是合法的)
let ref_foo_2 =&mut foo;
1 共 3 条评论, 1 页