rust--用if判断str和String为什么返回true?

// 为什么断言str和String是True?
fn asserteq_str_and_string_is_true_problem() {
    let a = "hello";
    let b = String::from("hello");
    assert_eq!(a, b, "assert error.")
}


// 为什么if判断str和Stringi是True?
fn if_statement_compare_str_and_string_is_true_problem() {
    let a = "hello";
    let b = String::from("hello");
    if a == b {
        println!("compare true.")
    } else {
        println!("compare false")
    }

    // output: compare true.
}


// 这两个问题本质上是一个问题, 因为所有的assert、while内部也是if来验证逻辑是否成立.
// if条件句利用了PartialEq trait 通用接口来进行判断, 恰巧String 实现了 PartialEq<str>
// 和 PartialEq<&str>, 所以用 &str 和 String 来比较是能够完成常规判断操作的.


fn main() {
    asserteq_str_and_string_is_true_problem();
    if_statement_compare_str_and_string_is_true_problem();
}

// 参考: https://github.com/rust-lang/rust/issues/41254
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 看完这个故事,我不禁想:“你如此溺爱的孩子,等他长大后,会善待年迈的你们?会呵护弟妹吗?” 一个奶奶经常带着放学的...
    成长的欢笑阅读 3,392评论 0 0
  • 还记得当初女儿刚上小学一年级,慢慢地认识了女儿同学的妈妈们,觉得比较说的上话的妈妈,一起建了微信辣妈群,聊着聊着,...
    蛮蛮儿阅读 1,189评论 0 0
  • 亲手制作,画你所爱之物,一幅幅挂起,让家成为美术展览馆。 我个人喜欢室内装饰画,二次元少女,精灵卡通人物,和一些简...
    千子莲阅读 1,605评论 0 1
  • 记住目标 啊啊啊,快疯了。 今晚艾奇学院直播,由于系统短信延时原因,导致在开场10多分钟前很多新注册伙伴迟迟收不到...
    陈sir阅读 2,350评论 0 0