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>()
}
}