Auto merge of #23972 - gkoz:partial_eq_str_string, r=alexcrichton
Auto merge of #23972 - gkoz:partial_eq_str_string, r=alexcrichton

Right now comparing a `&String` (or a `&Cow`) to a `&str` requires redundant borrowing of the latter. Implementing `PartialEq<str>` tries to avoid this limitation.

```rust
struct Foo (String);

fn main () {
    let s = Foo("foo".to_string());
    match s {
        Foo(ref x) if x == &"foo" => println!("foo!"),
        // avoid this -----^
        _ => {}
    }
}
```

I was hoping that #23521 would solve this but it didn't work out.

zachwick/rust,philyoon/rust,andars/rust,pelmers/rust,aepsil0n/rust,nwin/rust,pshc/rust,avdi/rust,rohitjoshi/rust,kwantam/rust,jashank/rust,miniupnp/rust,seanrivera/rust,aneeshusa/rust,carols10cents/rust,krzysz00/rust,mihneadb/rust,nwin/rust,KokaKiwi/rust,miniupnp/rust,aepsil0n/rust,kwantam/rust,vhbit/rust,victorvde/rust,robertg/rust,reem/rust,carols10cents/rust,gifnksm/rust,zaeleus/rust,GBGamer/rust,nwin/rust,robertg/rust,andars/rust,TheNeikos/rust,miniupnp/rust,sae-bom/rust,GBGamer/rust,ruud-v-a/rust,TheNeikos/rust,seanrivera/rust,jashank/rust,gifnksm/rust,KokaKiwi/rust,miniupnp/rust,mvdnes/rust,rohitjoshi/rust,aepsil0n/rust,GBGamer/rust,dwillmer/rust,aneeshusa/rust,aepsil0n/rust,dwillmer/rust,kwantam/rust,miniupnp/rust,philyoon/rust,philyoon/rust,dwillmer/rust,zachwick/rust,reem/rust,pshc/rust,jroesch/rust,sae-bom/rust,aidancully/rust,krzysz00/rust,reem/rust,pshc/rust,graydon/rust,carols10cents/rust,gifnksm/rust,TheNeikos/rust,zubron/rust,sae-bom/rust,cllns/rust,carols10cents/rust,ruud-v-a/rust,avdi/rust,aneeshusa/rust,jroesch/rust,GBGamer/rust,zachwick/rust,avdi/rust,aneeshusa/rust,kwantam/rust,andars/rust,ebfull/rust,aneeshusa/rust,zaeleus/rust,jashank/rust,kwantam/rust,sae-bom/rust,omasanori/rust,krzysz00/rust,mdinger/rust,carols10cents/rust,sae-bom/rust,jashank/rust,jroesch/rust,philyoon/rust,victorvde/rust,jashank/rust,victorvde/rust,nwin/rust,zaeleus/rust,ejjeong/rust,mdinger/rust,jroesch/rust,jroesch/rust,graydon/rust,aepsil0n/rust,pshc/rust,KokaKiwi/rust,ebfull/rust,ebfull/rust,kwantam/rust,zubron/rust,gifnksm/rust,vhbit/rust,nwin/rust,andars/rust,KokaKiwi/rust,miniupnp/rust,GBGamer/rust,pelmers/rust,XMPPwocky/rust,robertg/rust,mdinger/rust,mdinger/rust,zubron/rust,aidancully/rust,victorvde/rust,vhbit/rust,GBGamer/rust,zachwick/rust,dwillmer/rust,zubron/rust,vhbit/rust,victorvde/rust,l0kod/rust,avdi/rust,TheNeikos/rust,aidancully/rust,jashank/rust,ejjeong/rust,jashank/rust,jroesch/rust,omasanori/rust,zaeleus/rust,philyoon/rust,dwillmer/rust,KokaKiwi/rust,aidancully/rust,vhbit/rust,omasanori/rust,zubron/rust,zubron/rust,gifnksm/rust,seanrivera/rust,l0kod/rust,ruud-v-a/rust,pshc/rust,cllns/rust,zubron/rust,ruud-v-a/rust,robertg/rust,rohitjoshi/rust,l0kod/rust,zachwick/rust,cllns/rust,aidancully/rust,omasanori/rust,dwillmer/rust,mihneadb/rust,jroesch/rust,ejjeong/rust,ejjeong/rust,carols10cents/rust,avdi/rust,cllns/rust,pelmers/rust,seanrivera/rust,cllns/rust,pshc/rust,XMPPwocky/rust,reem/rust,andars/rust,zaeleus/rust,robertg/rust,ruud-v-a/rust,reem/rust,l0kod/rust,l0kod/rust,rohitjoshi/rust,andars/rust,mvdnes/rust,rohitjoshi/rust,vhbit/rust,dwillmer/rust,TheNeikos/rust,rohitjoshi/rust,zaeleus/rust,avdi/rust,nwin/rust,omasanori/rust,vhbit/rust,ejjeong/rust,aidancully/rust,mvdnes/rust,nwin/rust,l0kod/rust,philyoon/rust,pelmers/rust,l0kod/rust,mvdnes/rust,mihneadb/rust,graydon/rust,krzysz00/rust,XMPPwocky/rust,KokaKiwi/rust,nwin/rust,mihneadb/rust,gifnksm/rust,TheNeikos/rust,ebfull/rust,mdinger/rust,XMPPwocky/rust,dwillmer/rust,ejjeong/rust,krzysz00/rust,miniupnp/rust,miniupnp/rust,pelmers/rust,mdinger/rust,robertg/rust,l0kod/rust,GBGamer/rust,seanrivera/rust,omasanori/rust,pshc/rust,graydon/rust,ebfull/rust,jroesch/rust,vhbit/rust,seanrivera/rust,mvdnes/rust,pelmers/rust,GBGamer/rust,aneeshusa/rust,graydon/rust,zubron/rust,krzysz00/rust,zachwick/rust,sae-bom/rust,pshc/rust,XMPPwocky/rust,ebfull/rust,mihneadb/rust,mvdnes/rust,XMPPwocky/rust,mihneadb/rust,victorvde/rust,graydon/rust,jashank/rust,aepsil0n/rust,cllns/rust,reem/rust,ruud-v-a/rust