代码之家  ›  专栏  ›  技术社区  ›  Jämes

比较refcell中包含的值<t>

  •  1
  • Jämes  · 技术社区  · 5 年前

    我有一个字段定义如下的结构:

    log_str: RefCell<String>
    

    我打了很多电话给 borrow_mut() 打电话 push_str(.) 在球场上。最后,我将使用以下方法评估其价值:

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

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

    错误[e0369]:二进制操作 == 无法应用于类型 std::cell::Ref<'_, std::string::String>

    我理解错误发生的原因,因为编译器甚至提示:

    实现 std::cmp::PartialEq 可能失踪 STD::CY::REF & L.;‘,STD::String::String & Gt;

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

    谢谢!

    1 回复  |  直到 5 年前
        1
  •  2
  •   edwardw Neil Bartlett    5 年前

    您要取消引用 borrow ED值:

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