2
我想創建一個struct
,字段中包含Vec<ThreadRng>
。結構字段中的Rng Vec,不能借用不可變的字段作爲可變
所以這個工作得很好,我有存儲在Foo.generators
發電機的列表:
extern crate rand;
use std::vec::Vec;
use rand::{Rng, ThreadRng};
struct Foo {
generators: Vec<ThreadRng>,
}
impl Foo {
fn new() -> Foo {
Foo { generators: vec![rand::thread_rng(), rand::thread_rng()]}
}
}
現在我想用它,說在一個bar
方法:
impl Foo {
fn bar(&self) -> i32 {
self.generators[0].gen::<i32>()
}
}
但是,我不能,我得到一個cannot borrow immutable field 'self.generators' as mutable
。
按照我的理解,因爲它需要一個可變參考RNG(gen<T: Rand>(&mut self)
)我不能使用的ThreadRng
的gen
方法,因爲我的字段的定義Foo.generators
「Vec<ThreadRng>
」不指定該ThreadRng
應該是可變的,我對於需要可變性的任何事情都無能爲力。
第一個問題:是我對正在發生的事情有所瞭解,還是我完全錯了?如果是這樣,有人可以向我解釋發生了什麼?
第二個問題:承認我的理解是正確的,我應該如何允許我的ThreadRng
需要可變性的操作?
在此先感謝!
嗯,我不認爲這會是這麼簡單...謝謝! – evuez