Rust 如何修改“RefCell”的内容<;选项<;T>>;`?
我有一个Rust 如何修改“RefCell”的内容<;选项<;T>>;`?,rust,Rust,我有一个选项,它由多个结构共享,并且必须是可变的。我使用的是RefCell,因为据我所知,它是该工作的工具。如何访问(和更改)该选项的内容 我尝试了以下方法: use std::cell::RefCell; #[derive(Debug)] struct S { val: i32 } fn main() { let rc: RefCell<Option<S>> = RefCell::new(Some(S{val: 0})); if let So
选项
,它由多个结构共享,并且必须是可变的。我使用的是RefCell
,因为据我所知,它是该工作的工具。如何访问(和更改)该选项的内容
我尝试了以下方法:
use std::cell::RefCell;
#[derive(Debug)]
struct S {
val: i32
}
fn main() {
let rc: RefCell<Option<S>> = RefCell::new(Some(S{val: 0}));
if let Some(ref mut s2) = rc.borrow_mut() {
s2.val += 1;
}
println!("{:?}", rc);
}
使用std::cell::RefCell;
#[导出(调试)]
结构{
val:i32
}
fn main(){
设rc:RefCell=RefCell::new(Some(S{val:0}));
如果让一些(ref mut s2)=rc.借用{
s2.val+=1;
}
println!(“{:?}”,rc);
}
但编译器不让我这么做:
错误[E0308]:类型不匹配
--> :10:12
|
10 |如果让一些(参考mut s2)=rc.借用_mut(){
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^预期结构'std::cell::refmu`
|
=注意:预期类型为'std::cell::RefMut当您输入RefCell
时,您会得到一个,正如编译器所说。要获取其中的值,只需使用运算符:
使用std::cell::RefCell;
#[导出(调试)]
结构{
val:i32
}
fn main(){
设rc:RefCell=RefCell::new(Some(S{val:0}));
如果let Some(ref mut s2)=*rc.borrow_mut(){//deref_mut
s2.val+=1;
}
println!(“{:?}”,rc);
}
当您使用RefCell
时,您会得到一个,正如编译器所说。要获取其中的值,只需使用运算符:
使用std::cell::RefCell;
#[导出(调试)]
结构{
val:i32
}
fn main(){
设rc:RefCell=RefCell::new(Some(S{val:0}));
如果let Some(ref mut s2)=*rc.borrow_mut(){//deref_mut
s2.val+=1;
}
println!(“{:?}”,rc);
}
我更喜欢使用如果让一些人(s2)=rc.break_mut().as_mut(){
,但每个人都有自己的。@Shepmaster请随意编辑我的答案并添加自己的语法。我更喜欢使用如果让一些人(s2)=rc.break_mut().as_mut(){
,但每个人都有自己的语法。@Shepmaster请随意编辑我的答案并添加自己的语法。
use std::cell::RefCell;
#[derive(Debug)]
struct S {
val: i32
}
fn main() {
let rc: RefCell<Option<S>> = RefCell::new(Some(S{val: 0}));
if let Some(ref mut s2) = *rc.borrow_mut() { // deref_mut
s2.val += 1;
}
println!("{:?}", rc);
}