rust - 如何高效地交换两个不同HashMap的内容

标签 rust

在 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/

相关文章:

rust - Rust build.rs 脚本的条件编译?

rust - 如何在 Rust 中以编程方式读取属性

vector - 连接字符串向量的向量

rust - 将 `anyhow` 箱子与 `nom` 箱子结合使用时出现终身问题

java - 为什么 Rust 中的对数比 Java 慢?

rust - 如何使用 Serde 序列化具有顶级键的结构?

string - 有没有办法在将迭代器映射到更大的切片内取消引用切片?

rust - 具有结构引用的 Iron 持久状态

mysql - 如何在 Rust 中从 MySQL 获取二进制列?

rust - 实现特征或取消引用特征的类型的泛型类型