2
我试图在Vec中使用Vec<f64>
制作的矩阵循环,然后逐个修改它的元素。如何修复这两个循环以允许修改矢量内容?
我似乎无法使它工作;我太困惑的语法...
extern crate rand;
use std::ptr;
use std::mem;
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let mut v: Vec<Vec<f64>> = Vec::new();
v.push(vec![0f64; 35]);
v.push(vec![0f64; 35]);
v.push(vec![0f64; 35]);
v.push(vec![0f64; 35]);
let len = v.len();
for &el in &v {
for q in &mut el {
q = rng.gen::<f64>();
println!("{}", q);
}
println!("{:?}", el);
}
println!("float: {}", rng.gen::<f64>());
//println!("vec: {:?}, len: {}",v,len);
}
编译器这样说:
error[E0308]: mismatched types
--> src/main.rs:19:17
|
19 | q = rng.gen::<f64>();
| ^^^^^^^^^^^^^^^^ expected &mut f64, found f64
|
= note: expected type `&mut f64`
found type `f64`
= help: try with `&mut rng.gen::<f64>()`
我尝试以下的编译器提示,中mut &
和.iter()
或.iter_mut()
各种组合,但没有他们工作。经过一番沮丧之后,我注意到我对解决方案的搜索已经成为蒙特卡罗算法。
太谢谢你了无论是重构代码还是解释问题!我会尽快接受。 并感谢您创建vec的函数式编程方式!如果我能的话,我会给两个+1! –