我正在实施BTreeMap<K, V>
的替代方案.在此之上,我正在构建一个BTreeSet,它是一个围绕type MyBTreeSetContents<T> = MyBTreeMap<T, ()>
的包装器.
在内部,该BTree的叶 node 包含Vec<(K, V)>
个值.
在BTreeSet的情况下,这就变成了Vec<(K, ())>
.
我想在BTreeSet中的值引用上提供一个快速迭代器.产生&T
的迭代器.但到目前为止,在不使用Transmut的情况下,我所能得到的最好结果是一个产生&(T, ())
的迭代器.
因此,问题是:
-
K
、(K, )
和(K, ())
的内存表示法是否相同? - 因此,在
(K, ())
到K
之间转化是可以的吗? - 推而广之,把
Vec<(K, ())>
改成Vec<K>
行吗?
如果有其他方法可以避免std::mem::transmute
人的使用,当然也会非常感激!