标记包含类型的类型的原因是什么!使用发送特征发送字段?

mon*_*kki 7 rust

标记包含特征的!Send字段(如RcNonNull)的类型的原因是什么Send?例如,标准库的LinkedList作品以这种方式:它包含Option<NonNull<_>>字段,它实现Send特质(时TSend).

这是多么安全,这种类型的安全保障和方法有哪些?

rod*_*igo 5

看看理由NonNull存在!Send:

NonNull指针不是Send因为它们引用的数据可能是别名.

但是NonNullin LinkedList是一个私有的实现细节.如果这种类型的人都知道内型TSend和它的使用也Send-safe,(公共API中没有不安全),那么它可以重新引入的Send特质.

这个保证基本上归结为确保你不能获得内部类型的可变别名; 并确保没有意外的内部可变性(从不可变的内容中获取可变引用).

这些保证不是由NonNull他们提供的LinkedList.