相关疑难解决方法(0)

尝试从RefCell中包含的结构中借用2个字段时出错

我有一个结构,其中包含数据和最终将用于写入数据的编写器.结构包裹在一个RefCell.这是一个小的复制品:

use std::cell::RefCell;
use std::io::Write;

struct Data {
    string: String,
}

struct S {
    data: Data,
    writer: Vec<u8>,
}

fn write(s: RefCell<S>) {
    let mut mut_s = s.borrow_mut();
    let str = &mut_s.data.string;
    mut_s.writer.write(str.as_bytes());
}
Run Code Online (Sandbox Code Playgroud)

编译器很生气:

error[E0502]: cannot borrow `mut_s` as mutable because it is also borrowed as immutable
  --> src\main.rs:16:5
   |
15 |     let str = &mut_s.data.string;
   |                ----- immutable borrow occurs here
16 |     mut_s.writer.write(str.as_bytes());
   |     ^^^^^ mutable borrow occurs here
17 | }
   | - immutable …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
217
查看次数

标签 统计

rust ×1