如何为结构的可变引用中的字段交换新值?

2023-12-14

我有一个带有字段的结构:

struct A {
    field: SomeType,
}

Given a &mut A,我怎样才能移动的值field并交换一个新值?

fn foo(a: &mut A) {
    let mut my_local_var = a.field;
    a.field = SomeType::new();

    // ...
    // do things with my_local_var
    // some operations may modify the NEW field's value as well.
}

最终目标相当于get_and_set()手术。在这种情况下我并不担心并发性。


Use std::mem::swap().

fn foo(a: &mut A) {
    let mut my_local_var = SomeType::new();
    mem::swap(&mut a.field, &mut my_local_var);
}

Or std::mem::replace().

fn foo(a: &mut A) {
    let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为结构的可变引用中的字段交换新值? 的相关文章

随机推荐

  • Spring 中的内容类型问题

    我收到的帖子有问题 我有以下端点 RequestMapping value payment method POST public void saveOrder RequestBody PaymentDto paymentDto throws
  • 如何以编程方式找出哪个用户拥有哪个进程?

    好的 所以我想做的是找出给定进程所属的用户名 Process processList Process GetProcesses foreach Process p in processList Console WriteLine p Id
  • 高效的模 3 运算? [复制]

    这个问题在这里已经有答案了 可能的重复 快速模 3 或除法算法 每个人都知道模运算可能会对性能产生巨大的影响 有谁知道 x 3 操作的一个好的替代方案吗 我知道存在一个用于 x 2 的缓冲区 但我确实需要一个用于模 3 的缓冲区 因为我想在
  • 查找(解析)树集合中最频繁的子树

    我有一个树的集合 其节点被标记 但不是唯一的 具体来说 这些树来自解析句子的集合 参见http en wikipedia org wiki Treebank 我希望从集合中提取最常见的子树 性能 还 不是问题 如果有算法 最好是 Java
  • 将 List 从最高到最低排序

    List
  • 为所有网格设置 xticklabels,用于使用 col_wrap [重复] 使用seaborn catplot 创建的绘图

    这个问题在这里已经有答案了 我使用以下方法创建了一个绘图 g sns catplot x loja y preco col Descr Grupo col wrap 3 capsize 2 height 4 aspect 1 2 kind
  • Apache 基准多部分/表单数据

    我在 apache benchmark post 文件中遇到了一个奇怪的问题 我需要强调一个处理文件上传的功能 因此 我用谷歌搜索 找到了一篇描述如何正确构建帖子文件的帖子 其内容如下所示 1234567 Content Dispositi
  • jQuery ajax 循环和迭代范围

    我想知道为什么在下面的代码中i多变的仍然显示 5 而不是显示 1 then 2 then 3 等等 一定是范围问题 但我并没有真正理解它 因为我在全局和 dom 范围中更改了 i 变量的范围 但仍然遇到相同的问题 当我警觉时i在ajax函数
  • 底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系

    我正在使用 C 和 xaml 开发 Metro 风格应用程序 在我的应用程序中 调用 Web 服务时出现错误 底层连接已关闭 无法建立 SSL TLS 安全通道的信任关系 出现这个错误的原因是什么 我有一个爬虫程序 不久前我遇到了同样的异常
  • 带有视图动态获取行/列的GridLayout

    我刚刚关注了这个tutorial 创建自定义View作为一个项目GridLayout 那是我的CustomView public class RowView extends View boolean touchOn boolean mDow
  • 在循环中访问编号变量

    我无法在 Matlab 文档或留言板上找到以下问题的答案 有很多关于动态变量名称的使用以及如何避免使用eval创建变量时的函数 然而 我的查询涉及访问循环内预先存在的已编号变量 假设有人向我发送了一张包含各种字段值的表 其中一些已编号 如下
  • moc-ed 文件被排除在 Visual Studio 2010 的构建之外

    我有一个 VS2010 解决方案 其中包含几个基于 Qt 的项目 每次当我修改某个项目的文件时 生成的文件 moc cpp 文件 都会更改其属性以从构建中排除 检查了所有可用的属性 但找不到与该问题相关的任何内容 但没有尝试从头开始重新创建
  • 等待 async void 方法

    我怎样才能等待async void方法来完成它的工作 例如 我有一个如下所示的函数 async void LoadBlahBlah await blah 现在我想确保在继续其他地方之前所有内容都已加载 最佳实践是标记功能async void
  • 使用 C 库导入 Swift 模块

    我按照以下说明编写了 Curses 包装器模块这一页 但是 我不知道如何使其在使用它的模块中正确工作 我有 3 个并行目录 Curses Curses Wrapper ModuleUsingCurses Wrapper CCurses 包含
  • POST 到服务器,接收 PDF,使用 jQuery 交付给用户

    我有一个链接 用户单击该链接即可获取 PDF 在 jQuery 中 我创建了一个对服务器的 POST ajax 调用来获取 PDF PDF 带有正确的内容标题等 通常会导致浏览器打开 Reader 插件 或允许用户保存 PDF 由于我通过
  • iOS 内存泄漏

    我运行了 Leaks 工具来测试我的应用程序是否有任何泄漏 它显示我有一些泄漏 我不是修复泄漏的专家 我想知道是否 我有泄漏 并且 我应该做什么来解决它 你看起来似乎有泄漏 但看起来并不严重 您可以单击内存地址旁边的小箭头 它应该会显示一个
  • Python - 为什么在类中使用“self”?

    这两个类有何不同 class A x 3 class B def init self self x 3 有什么显着差异吗 A x is a 类变量 B s self x is an 实例变量 i e A s x在实例之间共享 通过像列表这样
  • 正确设置动态下拉菜单的回调

    我正在尝试创建一个 Dash 仪表板 其中一个框中的下拉选项取决于之前的下拉选择 该数据由两个字典组成 每个字典有两个键 每个键都包含一个带有几列的数据框 确切数据 from jupyter dash import JupyterDash
  • 如何创建一个胖罐子?

    有了SpringBoot 你就拥有了 SpringBootApplication注解 但是与简洁的 Java Spark 框架等效的是什么呢 IntelliJ 创建了一个 Maven 项目 我添加了 Spark 依赖项 但运行安装目标时 我
  • 如何为结构的可变引用中的字段交换新值?

    我有一个带有字段的结构 struct A field SomeType Given a mut A 我怎样才能移动的值field并交换一个新值 fn foo a mut A let mut my local var a field a fi