我有一个可变引用向量:
struct T;
let mut mut_vec: Vec<&mut T> = vec![];
如何将它的(副本)传递给采用不可变引用向量的函数?fn cool_func(mut immut_vec: Vec<&T>) {}
最佳答案
如果需要进行实际转换,请参见Joe Clay's answer。但是,您可能不需要首先进行转换!
不要更改参数,而要更改函数,使其接受可变和不可变的引用。在这里,我们使用 Borrow
对这两者进行抽象:
use std::borrow::Borrow;
fn main() {
let mut st = String::new();
let mut_vec = vec![&mut st];
cool_func(mut_vec);
let immut_vec = vec![&st];
cool_func(immut_vec);
}
fn cool_func<S>(_: Vec<S>)
where
S: Borrow<String>,
{
}
也可以看看:关于casting - 如何将Vec <&mut T>转换为Vec <&T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65115151/