为什么Rust没有deref && String to && str?

Gig*_*him 6 string rust

这段代码:

fn main() {
    let s = "hello".to_string();
    let keywords = vec!["hello", "bye"];

    // if keywords.contains(&s.as_str())
    if keywords.contains(&&s)
    // ~> expected &&str, found &collections::string::String
    {
        println!("exists");
    }
}
Run Code Online (Sandbox Code Playgroud)

通常,当函数期望&str类型时,你可以给一个String

let s = "abc".to_string();
foo(&s); // ok,
Run Code Online (Sandbox Code Playgroud)

但是&&s不DEREF来&&str,我认为这是不一致的.