gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:26:19 26 4
gpt4 key购买 nike

我有一个可变引用向量:

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 仍然存在一样,你会有两个可变的以及对同一数据的不可变引用,这是编译器不允许的。

关于casting - 如何将 Vec<&mut T> 转换为 Vec<&T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56754101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com