auto merge of #15814 : kvark/rust/ast, r=huonw
auto merge of #15814 : kvark/rust/ast, r=huonw

Makes working with syntax deriving a bit more pleasuring. For instance, once can use local (non-static) strings anywhere inside `TraitDef` now.

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