【 以下文字转载自 Rust 讨论区 】
发信人: beep (菜M.喵星耗子), 信区: Rust
标 题: 讨论一下所有权的概念,所有权=析构责 吗?
发信站: 水木社区 (Thu Oct 27 00:05:32 2022), 站内
ownership 其实是一个比喻性的概念,对不熟悉这个名词源流的初学者来说,往往一头雾水。所以想讨论一下,这个东西的核心本质是不是其实就是说 duty of dropping?
我自己目前的结论是,“所有权”主要就是等价于“析构责”,一个变量 own 一个堆资源,其实就是说这个变量需要在他自己出栈销毁的时候负责顺便把那个堆空间也销毁掉(通过 Drop::drop);
其次,所有权还影响可变性。如果一个容器性质的变量 C own 很多成员堆资源,那么如果这个容器 C 是一个 mutable place expr, 那么其内部成员,比如 C[index], C.field, *C (C impl DerefMut<T> 但 C 不是 &mut T)也应该是 mutable place expr。当然这一条并不那么重要。
--
修改:beep FROM 123.120.189.*
FROM 123.120.189.*