Tôi có cấu trúc chứa cả dữ liệu và nhà văn mà cuối cùng sẽ được sử dụng để ghi dữ liệu. Cấu trúc được gói trong một RefCell
. Đây là một bản tái tạo nhỏ:Lỗi khi cố gắng mượn 2 trường từ cấu trúc được bao bọc trong 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());
}
Trình biên dịch là tức giận:
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 borrow ends here
Có một API khác nhau tôi nên sử dụng?