在 C++ 中,我可以使用 swap
方法交换两个 HashMap(std::unordered_map
) 的内容。如何在 Rust 中实现同样的效果?
https://en.cppreference.com/w/cpp/container/unordered_map/swap
最佳答案
与 C++ 不同,Rust 不需要为每种类型提供专门的 swap()
,因为它具有破坏性的移动,交换始终是内存中的简单副本。
您可以编写自己的:
fn swap(a: &mut HashMap<String, String>, b: &mut HashMap<String, String>) {
let temp = std::mem::take(a);
*a = std::mem::take(b);
*b = temp;
}
但是标准库已经包含一个更优化、更通用的实现 - std::mem::swap()
:
fn swap(a: &mut HashMap<String, String>, b: &mut HashMap<String, String>) {
std::mem::swap(a, b);
}
关于rust - 如何高效地交换两个不同HashMap的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76595373/