https://doc.rust-lang.org/stable/src/alloc/collections/btree/map.rs.html#172-183 ,查看BtreeMap中看到了这个字段,我也学习过drop check相关的知识,但是我查看这个结构再https://doc.rust-lang.org/stable/src/alloc/collections/btree/node.rs.html#182-193 这里已经有了marker,并且这行代码的注释为the Box avoids making the Unpin
impl more strict than before。翻译下就是这个代码避免了dropck的时候Unpin的实现比之前严格,请问有人知道这个是什么意思吗,为什么其他结构里比如Vec,HashMap都没加上这行代码。
1
共 6 条评论, 1 页
评论区
写评论感谢老哥!
--
👇
苦瓜小仔: 我发现第二个链接给错了,正确的在这 https://github.com/rust-lang/rust/pull/99413,也就是解决那个 issue 的链接。
我的理解是,使用
PhantomData<Box<(K, V)>>
是为了考虑 drop K 和 V,这个方面看,写
PhantomData<(K, V)>
没问题防止破坏当前的 Unpin impl:
如果你写
PhantomData<(K, V)>
,会增加K: Unpin
和V: Unpin
新的约束。例子目前 K 和 V 的 Unpin 约束在 BTreeMap 的内部实现中:
我发现第二个链接给错了,正确的在这 https://github.com/rust-lang/rust/pull/99413,也就是解决那个 issue 的链接。
我的理解是,使用
PhantomData<Box<(K, V)>>
是为了考虑 drop K 和 V,这个方面看,写
PhantomData<(K, V)>
没问题防止破坏当前的 Unpin impl:
如果你写
PhantomData<(K, V)>
,会增加K: Unpin
和V: Unpin
新的约束。例子目前 K 和 V 的 Unpin 约束在 BTreeMap 的内部实现中:
感谢老哥
--
👇
苦瓜小仔: 去跟踪 https://github.com/rust-lang/rust/issues/99408 和 https://github.com/rust-lang/rust/pull/103413。
去跟踪 https://github.com/rust-lang/rust/issues/99408 和 https://github.com/rust-lang/rust/pull/103413。
看了下,没帮助
--
👇
tch1121: https://youtu.be/_ccDqRTx-JU 可以看下这个不知道有没有帮助
https://youtu.be/_ccDqRTx-JU 可以看下这个不知道有没有帮助