比较 RefCell<T> 中封装的值

5

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

log_str: RefCell<String>

我进行了多次调用borrow_mut()来调用字段上的push_str(.)。最后,我使用以下代码来评估它的值:

assert_eq!(os.log_str.borrow(), "<expected value>");

尽管如此,这个语句会在编译时产生一个错误并显示以下信息:
error[E0369]: 不能将二元运算符“==”应用于类型“std::cell::Ref<'_, std::string::String>'”
我理解为什么会出现这个错误,因为编译器甚至还有提示:
可能缺少实现“std::cmp::PartialEq”的“std::cell::Ref<'_, std::string::String>'”
我的问题是:我该如何比较包含在RefCell<T>中的值(通常在这种情况下,比较包含的字符串与期望值)。
谢谢!
1个回答

4
你需要取消引用borrow的值:
assert_eq!(*os.log_str.borrow(), "<expected value>");

好的!Ref<.>可以有效地进行解引用(我猜这要归功于Deref特质的实现)。谢谢! - Jämes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接