比较 RefCell<T> 中包含的值

Zen*_*ulz 5 rust interior-mutability

我有一个结构体,其字段定义如下:

log_str: RefCell<String>
Run Code Online (Sandbox Code Playgroud)

我在现场进行了各种呼叫borrow_mut()push_str(.)最后,我使用以下方法评估其价值:

assert_eq!(os.log_str.borrow(), "<expected value>");
Run Code Online (Sandbox Code Playgroud)

尽管如此,断言行还是会引发编译时错误,并显示以下消息:

错误[E0369]:二进制运算==不能应用于类型std::cell::Ref<'_, std::string::String>

我明白为什么会发生错误,因为编译器甚至提示:

std::cmp::PartialEq可能缺少以下实现std::cell::Ref<'_, std::string::String>

我的问题是:我应该如何比较 a 中包含的值RefCell<T>(通常在这种情况下,将包含的字符串与预期值进行比较)。

谢谢 !

edw*_*rdw 4

您想要取消引用borrowed 值:

assert_eq!(*os.log_str.borrow(), "<expected value>");
Run Code Online (Sandbox Code Playgroud)