相关疑难解决方法(0)

我如何从方法中改变结构的字段?

我想做这个:

struct Point {
    x: i32,
    y: i32,
}

impl Point {
    fn up(&self) {
        self.y += 1;
    }
}

fn main() {
    let p = Point { x: 0, y: 0 };
    p.up();
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码抛出了编译器错误:

error[E0594]: cannot assign to field `self.y` of immutable binding
 --> src/main.rs:8:9
  |
7 |     fn up(&self) {
  |           ----- use `&mut self` here to make mutable
8 |         self.y += 1;
  |         ^^^^^^^^^^^ cannot mutably borrow field of immutable binding
Run Code Online (Sandbox Code Playgroud)

mutable rust

52
推荐指数
2
解决办法
3万
查看次数

无法从实现中修改struct字段:"不能将不可变借用内容借用为可变"

我正在尝试实现一个将产生素数的迭代器.我将已发现的素数存储在a中Vec<u64>.

这是我的实现:

struct Primes {
    primes: Vec<u64>,
}

impl Primes {
    fn new() -> Primes {
        Primes { primes: vec!(2, 3) }
    }

    fn iter(&self) -> PrimesIterator {
        PrimesIterator { primes: &self.primes, index : 0 }
    }
}

struct PrimesIterator<'a> {
    primes: & 'a Vec<u64>,
    index: usize,
}

impl<'a> Iterator for PrimesIterator<'a> {
    type Item = u64;

    fn next(&mut self) -> Option<u64> {
        if self.index < self.primes.len() {
            let result = self.primes[self.index];
            self.index += 1;
            Some(result)
        } else …
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
1
解决办法
4721
查看次数

标签 统计

rust ×2

mutable ×1