auto merge of #16101 : kballard/rust/rc_unique_ownership, r=aturon
auto merge of #16101 : kballard/rust/rc_unique_ownership, r=aturon

Add a few new free functions to alloc::rc for manipulating
uniquely-owned Rc values. is_unique() can be used to test if the Rc is
uniquely-owned, try_unwrap() can remove the value from a uniquely-owned
Rc, and get_mut() can return a &mut for a uniquely-owned Rc.

These are all free functions, because smart pointers should avoid having
methods when possible. They can't be static methods because UFCS will
remove that distinction. I think we should probably change downgrade()
and make_unique() into free functions as well, but that's out of scope.

pshc/rust,defuz/rust,nham/rust,ebfull/rust,0x73/rust,richo/rust,krzysz00/rust,jashank/rust,emk/rust,KokaKiwi/rust,sae-bom/rust,vhbit/rust,omasanori/rust,barosl/rust,untitaker/rust,jashank/rust,ebfull/rust,pshc/rust,andars/rust,quornian/rust,emk/rust,kwantam/rust,bombless/rust,ejjeong/rust,miniupnp/rust,aidancully/rust,l0kod/rust,rohitjoshi/rust,l0kod/rust,gifnksm/rust,0x73/rust,zaeleus/rust,omasanori/rust,barosl/rust,krzysz00/rust,reem/rust,zubron/rust,carols10cents/rust,dwillmer/rust,ktossell/rust,AerialX/rust,hauleth/rust,untitaker/rust,l0kod/rust,reem/rust,mahkoh/rust,quornian/rust,graydon/rust,kimroen/rust,miniupnp/rust,jashank/rust,zubron/rust,erickt/rust,GBGamer/rust,jbclements/rust,jbclements/rust,P1start/rust,bombless/rust,XMPPwocky/rust,pelmers/rust,dinfuehr/rust,ruud-v-a/rust,cllns/rust,mihneadb/rust,emk/rust,pelmers/rust,ktossell/rust,aneeshusa/rust,TheNeikos/rust,erickt/rust,kimroen/rust,dinfuehr/rust,pelmers/rust,nham/rust,barosl/rust,ktossell/rust,AerialX/rust-rt-minimal,mahkoh/rust,sae-bom/rust,untitaker/rust,robertg/rust,omasanori/rust,TheNeikos/rust,ruud-v-a/rust,sae-bom/rust,defuz/rust,hauleth/rust,avdi/rust,krzysz00/rust,jroesch/rust,pelmers/rust,erickt/rust,omasanori/rust,defuz/rust,emk/rust,cllns/rust,mihneadb/rust,dwillmer/rust,victorvde/rust,sae-bom/rust,andars/rust,ktossell/rust,0x73/rust,AerialX/rust-rt-minimal,dwillmer/rust,nwin/rust,ktossell/rust,robertg/rust,pelmers/rust,carols10cents/rust,XMPPwocky/rust,zubron/rust,richo/rust,ejjeong/rust,nwin/rust,zubron/rust,TheNeikos/rust,richo/rust,mihneadb/rust,dwillmer/rust,avdi/rust,jroesch/rust,robertg/rust,mvdnes/rust,zachwick/rust,mdinger/rust,0x73/rust,aneeshusa/rust,l0kod/rust,mvdnes/rust,reem/rust,hauleth/rust,dwillmer/rust,jbclements/rust,AerialX/rust-rt-minimal,ebfull/rust,rohitjoshi/rust,aneeshusa/rust,nwin/rust,emk/rust,ebfull/rust,kimroen/rust,zachwick/rust,zaeleus/rust,TheNeikos/rust,aepsil0n/rust,mahkoh/rust,quornian/rust,KokaKiwi/rust,gifnksm/rust,aneeshusa/rust,GBGamer/rust,mihneadb/rust,dinfuehr/rust,pshc/rust,jroesch/rust,ejjeong/rust,barosl/rust,vhbit/rust,aidancully/rust,defuz/rust,AerialX/rust,kwantam/rust,ruud-v-a/rust,sae-bom/rust,erickt/rust,jroesch/rust,rohitjoshi/rust,defuz/rust,aidancully/rust,l0kod/rust,richo/rust,ebfull/rust,rprichard/rust,sae-bom/rust,victorvde/rust,cllns/rust,kimroen/rust,victorvde/rust,l0kod/rust,KokaKiwi/rust,P1start/rust,ebfull/rust,reem/rust,andars/rust,pelmers/rust,GBGamer/rust,miniupnp/rust,krzysz00/rust,reem/rust,bombless/rust,seanrivera/rust,mahkoh/rust,jroesch/rust,dinfuehr/rust,mihneadb/rust,hauleth/rust,aepsil0n/rust,zaeleus/rust,graydon/rust,erickt/rust,jashank/rust,rprichard/rust,jbclements/rust,gifnksm/rust,rprichard/rust,nwin/rust,jroesch/rust,P1start/rust,rprichard/rust,pshc/rust,richo/rust,pshc/rust,kwantam/rust,rohitjoshi/rust,P1start/rust,XMPPwocky/rust,GBGamer/rust,avdi/rust,graydon/rust,zachwick/rust,AerialX/rust-rt-minimal,kwantam/rust,vhbit/rust,aepsil0n/rust,mahkoh/rust,richo/rust,TheNeikos/rust,omasanori/rust,quornian/rust,seanrivera/rust,miniupnp/rust,kimroen/rust,zaeleus/rust,zubron/rust,GBGamer/rust,philyoon/rust,vhbit/rust,carols10cents/rust,jashank/rust,zaeleus/rust,nham/rust,pshc/rust,AerialX/rust-rt-minimal,ruud-v-a/rust,aidancully/rust,seanrivera/rust,avdi/rust,aneeshusa/rust,XMPPwocky/rust,philyoon/rust,cllns/rust,seanrivera/rust,pshc/rust,mdinger/rust,bombless/rust,nwin/rust,graydon/rust,jbclements/rust,AerialX/rust,dwillmer/rust,l0kod/rust,ejjeong/rust,krzysz00/rust,jashank/rust,vhbit/rust,miniupnp/rust,mahkoh/rust,kimroen/rust,philyoon/rust,nham/rust,bombless/rust-docs-chinese,vhbit/rust,jbclements/rust,rprichard/rust,ktossell/rust,jashank/rust,erickt/rust,ejjeong/rust,TheNeikos/rust,robertg/rust,KokaKiwi/rust,aepsil0n/rust,victorvde/rust,robertg/rust,nham/rust,gifnksm/rust,ruud-v-a/rust,miniupnp/rust,mdinger/rust,pshc/rust,0x73/rust,quornian/rust,dinfuehr/rust,mdinger/rust,P1start/rust,barosl/rust,hauleth/rust,quornian/rust,mvdnes/rust,jashank/rust,bombless/rust,philyoon/rust,AerialX/rust,graydon/rust,0x73/rust,aepsil0n/rust,ruud-v-a/rust,l0kod/rust,erickt/rust,barosl/rust,dwillmer/rust,mdinger/rust,ktossell/rust,ejjeong/rust,mihneadb/rust,emk/rust,emk/rust,AerialX/rust,nham/rust,dinfuehr/rust,GBGamer/rust,avdi/rust,seanrivera/rust,zubron/rust,P1start/rust,mvdnes/rust,rohitjoshi/rust,aidancully/rust,vhbit/rust,kwantam/rust,rprichard/rust,zubron/rust,nwin/rust,GBGamer/rust,krzysz00/rust,aneeshusa/rust,gifnksm/rust,hauleth/rust,zubron/rust,jbclements/rust,nham/rust,carols10cents/rust,nwin/rust,aepsil0n/rust,mvdnes/rust,andars/rust,cllns/rust,mvdnes/rust,seanrivera/rust,graydon/rust,carols10cents/rust,bombless/rust,jroesch/rust,untitaker/rust,untitaker/rust,omasanori/rust,rohitjoshi/rust,mdinger/rust,AerialX/rust-rt-minimal,philyoon/rust,barosl/rust,carols10cents/rust,quornian/rust,philyoon/rust,victorvde/rust,kimroen/rust,victorvde/rust,cllns/rust,defuz/rust,P1start/rust,zaeleus/rust,miniupnp/rust,kwantam/rust,jbclements/rust,robertg/rust,KokaKiwi/rust,AerialX/rust,andars/rust,nwin/rust,zachwick/rust,zachwick/rust,andars/rust,untitaker/rust,reem/rust,XMPPwocky/rust,gifnksm/rust,KokaKiwi/rust,GBGamer/rust,jbclements/rust,0x73/rust,jroesch/rust,miniupnp/rust,aidancully/rust,vhbit/rust,avdi/rust,zachwick/rust,XMPPwocky/rust,dwillmer/rust