gpt4 book ai didi

rust - 使用 Send 特征标记包含 !Send 字段的类型背后的原因是什么?

转载 作者:行者123 更新时间:2023-11-29 07:46:48 27 4
gpt4 key购买 nike

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

这如何安全,使用这种类型安全工作的保证和方法是什么?

最佳答案

查看rationale对于 NonNull!Send:

NonNull pointers are not Send because the data they reference may be aliased.

但是 LinkedList 中的 NonNull 是私有(private)实现细节。如果此类型知道内部类型 TSend 并且它所做的使用也是 Send - 安全的,(公共(public) API 中没有不安全) 然后它可以重新引入 Send 特性。

该保证基本上可以确保您无法获得内部类型的可变别名;并确保没有意外的内部可变性(从不可变引用中获取可变引用)。

NonNull 没有提供这些保证,但它们在 LinkedList 中。

关于rust - 使用 Send 特征标记包含 !Send 字段的类型背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com