【 以下文字转载自 Rust 讨论区 】
发信人: beep (菜M.喵星耗子), 信区: Rust
标 题: Re: 讨论一下所有权的概念,所有权=析构责 吗?
发信站: 水木社区 (Thu Oct 27 22:56:51 2022), 站内
我来稍微解释一下:
所有权这个概念,本身在 rust 的语言设计里面是不存在的,是对一些具体的语言设计所造成结果的描述性的概念。也就是说,完全可以设想一个 rust 教程,根本不引入所有权这个词,照样可以把所有的事情讲清楚。
那么,所有权概念,到底对应着语言中的哪些具体设计呢?
1. 局部变量可以通过 box 操作开辟并指向一段堆空间,也就是经常比喻的风筝线;
2. 风筝线变量必有 Drop,出栈销毁前必定收回风筝(堆资源),不会忘记 drop;
3. 风筝线变量必无 Copy,变量交接时原变量失效,即只有一根风筝线,不会重复 drop;
4. 特殊的 Rc/Arc 风筝线变量可以多根线牵同一个风筝,各线 drop 时根据计数决定由谁最后负责收回风筝,保证不会忘记 drop 也不会重复 drop。
感觉这四条是否就可以把所有权概念指代的所有内涵都覆盖到?如果这个理解成立,那么所有权其实就是代表着 duty of drop,并没有其他任何多出来的涵义。
【 在 RunningOn 的大作中提到: 】
: duty of dropping 是一方面吧。
: 主要还是强调唯一性,类似于unique_ptr的感觉。
--
FROM 123.120.189.*