如何将 Vec<&mut T> 转换为 Vec<&T>?

2024-03-08

我有一个可变引用向量:

struct T;
let mut mut_vec: Vec<&mut T> = vec![];

如何将它(的副本)传递到采用不可变引用向量的函数中?

fn cool_func(mut immut_vec: Vec<&T>) {}

您可以取消引用并重新借用可变引用,然后将它们添加到新的引用中Vec:

fn main() {
    let mut st = String::new();

    let mut_vec = vec![&mut st];
    let immut_vec = mut_vec.into_iter().map(|x| &*x).collect();

    cool_func(immut_vec);
}

fn cool_func(_: Vec<&String>) {}

但请注意,这会消耗原始Vec- 你无法真正解决这个问题,就像原来的一样Vec如果仍然存在,您将同时拥有对同一数据块的可变和不可变引用,这是编译器不允许的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Vec<&mut T> 转换为 Vec<&T>? 的相关文章

随机推荐

  • 在多个模块中需要socket.io(相同的实例)

    我对如何在 Node js 中请求和使用模块有点困惑 我的场景如下 我在一个文件中编写了一个完整的服务器 它使用 Socket io 进行实时通信 现在index js变得相当大 我想将代码分成几个模块以使其更易于管理 例如 我有一些功能可
  • 如何使用 Perforce 设置文件权限位

    我注意到有一些文件的其他位被关闭 例如 签入 Perforce 时权限设置为 550 我希望每个人都可以阅读和 或执行它们 用 ls l 的说法来说 文件的权限如下所示 签入 r xr x 签出 rwxr x 我尝试设置修改555在做之前p
  • 编译时递归如何工作?

    我在这里找到了一个代码不带循环或条件打印 1 到 1000 https stackoverflow com questions 4568645 printing 1 to 1000 without loop or conditionals
  • GHC 泛化加法时重叠实例

    试图概括 不仅仅是Nums 我写了一个Addable class LANGUAGE FlexibleContexts FlexibleInstances UndecidableInstances class Addable a where
  • .NET Core Selenium WebDriver 未找到

    我已将 NUnit 测试项目从 NET Framework 转换为 NET Core 当我尝试使用 Visual Studio 执行 Selenium 测试时 我看到以下错误 OpenQA Selenium DriverServiceNot
  • 适用于 Java 的 Google Http 客户端:忽略 java.security.cert.CertPathValidatorException:未找到证书路径的信任锚 [重复]

    这个问题在这里已经有答案了 我在用着Google 的 Java HTTP 客户端 https developers google com api client library java 在我的 Android 应用程序中 在我们进行 QA
  • 当身体从圆形变为矩形时,无法识别联系人

    在来自的帮助下here https stackoverflow com questions 32352886 how to set physics properties for a circle so it follows given pa
  • @XmlRegistry - 它是如何工作的?

    我找到了一些 JAXB2 的例子 XmlRegistry通过互联网 但没有很好的深入教程来谈论使用的概念 XmlRegistry with XmlElementDecl 想知道这是否是一个总体上没有被太多探索的概念 无论如何 这是我的问题
  • Python“ascii”编解码器无法使用 request.get 对字符进行编码

    我有一个 Python 程序 它从网站抓取数据并返回 json 爬网站点的元标记字符集 ISO 8859 1 这是源代码 url https www example com source code requests get url plai
  • Laravel 属于通过类似关系

    现在我有这些方法 程序 php public function institute return this gt belongsTo Institute class institute id gt withTrashed User php
  • 访问selenium中的css类属性

    我有一个 HTML div 元素并希望使用 Selenium 检查它是否左对齐 但是 那float leftCSS 属性在 CSS 类中定义 有什么方法可以通过 Selenium 访问 CSS 类属性吗 或者还有其他方法可以获取这个值吗 d
  • jQuery mobile - Pagecontainer 从 DOM 中消失

    在 jQuery mobile 中 我想从外部文件加载页面容器 我可以将标记添加到我的 DOM 中 但之后我面临的问题是 一旦导航到 page2 整个 page1 div 就会从 DOM 中消失 因此我无法返回 请参见下面的屏幕截图 单击
  • 如何从iPhone sdk中的城市名称获取位置(坐标)?

    friends 因为我们在android中有google api的geocoder getfromlocation locationname maximumResults 函数 我在 iphone sdk 中没有看到这样的函数来从城市名称获
  • 在 Linux 中调试 C++ 程序

    我写了一个简单的 C 程序 如下所示 include
  • 截断文本并在鼠标悬停时显示它

    我需要截断文本 末尾带有 并且将鼠标悬停在整个文本上时应该展开 我尝试用下面的代码截断 此代码的问题是 它会在单击时展开内容 但我需要当用户将鼠标悬停在 p 标签上的任何位置时打开它 var len 100 var p document g
  • 阻止滚动以及展开/折叠可折叠工具栏

    我正在使用Collapsible Toolbar在我的应用程序中 活动启动时可折叠工具栏处于展开状态 启用滚动并且正常工作 但现在我需要显示全屏错误布局 以防我的 API 失败 在这种情况下 我必须折叠工具栏并阻止滚动效果 错误布局显示重试
  • Spark hivecontext 的查询会锁定 hive 表吗?

    我知道如果我从 Hive 提交查询 将获取共享锁 然后 Hive 表将被查询锁定 https cwiki apache org confluence display Hive Locking https cwiki apache org c
  • 实现下拉菜单项颤动的复选框

    如何在flutter应用程序中实现下拉菜单项的复选框 每个里面DropdownMenuItem 你可以有Row作为一个孩子 你可以通过CheckBox其次是Text 帮助您入门的示例工作代码 body Center child Dropdo
  • 获取 ntp 调整通知

    我的情况很奇怪 我需要一些有关 NTP 时间调整的指导 我有一台运行 NTP 守护进程的 PC Red Hat 这台 PC 通过 LAN 上的 Stratum 2 时间服务器调整其时间 我的 PC 还通过串行端口 RS 232 连接到 DV
  • 如何将 Vec<&mut T> 转换为 Vec<&T>?

    我有一个可变引用向量 struct T let mut mut vec Vec lt mut T gt vec 如何将它 的副本 传递到采用不可变引用向量的函数中 fn cool func mut immut vec Vec lt T gt