我有一个可变引用向量:
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(使用前将#替换为@)