Rust 结构字段中Rng的Vec,不能借用可变字段作为可变字段

Rust 结构字段中Rng的Vec,不能借用可变字段作为可变字段,rust,Rust,我想创建一个包含Vec字段的struct 所以这很好,我有一个生成器列表存储在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::

我想创建一个包含
Vec
字段的
struct

所以这很好,我有一个生成器列表存储在
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()]}
    }
}
但是我不能,我得到一个
不能借用不可变字段'self.generators'作为可变的

据我所知,我不能使用
ThreadRng
gen
方法,因为它需要对RNG()的可变引用,并且由于我的字段
Foo.generators
的定义“
Vec
”没有指定
ThreadRng
应该是可变的,因此我不能对它做任何需要可变的事情

第一个问题:我对发生的事情的理解是正确的,还是完全错了?如果是这样的话,有人能告诉我到底发生了什么吗

第二个问题:承认我的理解是正确的,我应该如何允许我的
ThreadRng
s上需要可变性的操作


提前谢谢

您需要灵活地借用
self

impl Foo {
    fn bar(&mut self) -> i32 {
        self.generators[0].gen::<i32>()
    }
}
impl-Foo{
fn条(&mut self)->i32{
self.generators[0]。gen::()
}
}

我没想到会这么简单。。。非常感谢。
impl Foo {
    fn bar(&mut self) -> i32 {
        self.generators[0].gen::<i32>()
    }
}