【问题标题】:Comparing value enclosed in RefCell<T>比较 RefCell<T> 中包含的值
【发布时间】:2019-12-28 00:31:45
【问题描述】:

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

log_str: RefCell<String>

我多次致电borrow_mut() 以在球场上致电push_str(.)。最后,我使用以下方法评估其价值:

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

尽管如此,断言行引发了一个编译时错误消息:

错误[E0369]:二元运算==不能应用于类型std::cell::Ref&lt;'_, std::string::String&gt;

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

std::cell::Ref&lt;'_, std::string::String&gt; 可能缺少 std::cmp::PartialEq 的实现

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

谢谢!

【问题讨论】:

    标签: rust interior-mutability


    【解决方案1】:

    您想取消引用 borrowed 值:

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

    【讨论】:

    • 好的! Ref&lt;.&gt; 可以有效地被取消引用(我想这要归功于Deref trait 的实现)。谢谢!
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2019-12-13
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多