auto merge of #10688 : bjz/rust/recv_iter, r=brson
auto merge of #10688 : bjz/rust/recv_iter, r=brson

I've noticed I use this pattern quite a bit:

~~~rust
do spawn {
    loop {
        match port.try_recv() {
            Some(x) => ...,
            None => ...,
        }
    }
}
~~~

The `RecvIterator`, returned from a default `recv_iter` method on the `GenericPort` trait, allows you to reduce this down to:

~~~rust
do spawn {
    for x in port.recv_iter() {
        ...
    }
}
~~~

As demonstrated in the tests, you can also access the port from within the `for` block for further `recv`ing and `peek`ing with no borrow errors, which is quite nice.

P1start/rust,rohitjoshi/rust,emk/rust,andars/rust,SiegeLord/rust,defuz/rust,mvdnes/rust,TheNeikos/rust,michaelballantyne/rust-gpu,ruud-v-a/rust,AerialX/rust,rprichard/rust,rohitjoshi/rust,vhbit/rust,huonw/rand,quornian/rust,miniupnp/rust,servo/rust,reem/rust,jroesch/rust,fabricedesre/rust,fabricedesre/rust,hauleth/rust,miniupnp/rust,untitaker/rust,stepancheg/rust-ide-rust,dinfuehr/rust,zubron/rust,jbclements/rust,pshc/rust,pczarn/rust,emk/rust,jroesch/rust,pshc/rust,zachwick/rust,seanrivera/rust,XMPPwocky/rust,rprichard/rust,nham/rust,vhbit/rust,untitaker/rust,zachwick/rust,cllns/rust,kwantam/rust,0x73/rust,reem/rust,rohitjoshi/rust,ktossell/rust,nham/rust,dinfuehr/rust,jashank/rust,defuz/rust,cllns/rust,AerialX/rust-rt-minimal,carols10cents/rust,mihneadb/rust,krzysz00/rust,mitsuhiko/rust,victorvde/rust,richo/rust,ejjeong/rust,quornian/rust,0x73/rust,philyoon/rust,0x73/rust,emk/rust,aturon/rust,philyoon/rust,michaelballantyne/rust-gpu,omasanori/rust,0x73/rust,Ryman/rust,sae-bom/rust,miniupnp/rust,reem/rust,dwillmer/rust,TheNeikos/rust,andars/rust,l0kod/rust,mdinger/rust,nham/rust,emk/rust,sae-bom/rust,michaelballantyne/rust-gpu,jbclements/rust,untitaker/rust,gifnksm/rust,GBGamer/rust,barosl/rust,omasanori/rust,pelmers/rust,untitaker/rust,zaeleus/rust,omasanori/rust,mihneadb/rust,mitsuhiko/rust,Ryman/rust,ktossell/rust,ebfull/rust,waynenilsen/rand,quornian/rust,avdi/rust,aidancully/rust,aturon/rust,zaeleus/rust,defuz/rust,defuz/rust,victorvde/rust,pczarn/rust,sae-bom/rust,AerialX/rust-rt-minimal,aneeshusa/rust,aidancully/rust,pelmers/rust,dinfuehr/rust,jashank/rust,jashank/rust,seanrivera/rust,robertg/rust,avdi/rust,zubron/rust,bombless/rust-docs-chinese,carols10cents/rust,jroesch/rust,omasanori/rust,l0kod/rust,nwin/rust,krzysz00/rust,andars/rust,pelmers/rust,aneeshusa/rust,achanda/rand,pythonesque/rust,graydon/rust,mihneadb/rust,GBGamer/rust,0x73/rust,AerialX/rust-rt-minimal,mdinger/rust,erickt/rust,nham/rust,stepancheg/rust-ide-rust,ejjeong/rust,servo/rust,nwin/rust,pshc/rust,stepancheg/rust-ide-rust,fabricedesre/rust,nwin/rust,mitsuhiko/rust,P1start/rust,SiegeLord/rust,mvdnes/rust,fabricedesre/rust,KokaKiwi/rust,gifnksm/rust,omasanori/rust,jashank/rust,zachwick/rust,pczarn/rust,servo/rust,graydon/rust,bombless/rust,aneeshusa/rust,nwin/rust,michaelballantyne/rust-gpu,pshc/rust,GBGamer/rust,dinfuehr/rust,dwillmer/rust,seanrivera/rust,GBGamer/rust,rohitjoshi/rust,ejjeong/rust,ebfull/rust,aneeshusa/rust,dwillmer/rust,quornian/rust,robertg/rust,mvdnes/rust,P1start/rust,reem/rust,nham/rust,AerialX/rust-rt-minimal,Ryman/rust,victorvde/rust,kimroen/rust,kwantam/rust,ktossell/rust,dwillmer/rust,l0kod/rust,KokaKiwi/rust,l0kod/rust,ejjeong/rust,erickt/rust,quornian/rust,SiegeLord/rust,l0kod/rust,aepsil0n/rust,P1start/rust,ruud-v-a/rust,gifnksm/rust,Ryman/rust,mitsuhiko/rust,zubron/rust,pythonesque/rust,miniupnp/rust,philyoon/rust,zachwick/rust,aepsil0n/rust,dwillmer/rust,pczarn/rust,pczarn/rust,bombless/rust,rprichard/rust,stepancheg/rust-ide-rust,philyoon/rust,reem/rust,pelmers/rust,jroesch/rust,carols10cents/rust,seanrivera/rust,cllns/rust,hauleth/rust,aidancully/rust,dwillmer/rust,AerialX/rust,philyoon/rust,nham/rust,graydon/rust,mdinger/rust,michaelballantyne/rust-gpu,ruud-v-a/rust,zaeleus/rust,l0kod/rust,servo/rust,jashank/rust,P1start/rust,aneeshusa/rust,pczarn/rust,erickt/rust,jroesch/rust,stepancheg/rust-ide-rust,victorvde/rust,dwillmer/rust,untitaker/rust,rohitjoshi/rust,barosl/rust,Ryman/rust,mitsuhiko/rust,michaelballantyne/rust-gpu,pczarn/rust,mitsuhiko/rust,mahkoh/rust,jroesch/rust,KokaKiwi/rust,mahkoh/rust,vhbit/rust,TheNeikos/rust,Ryman/rust,XMPPwocky/rust,kwantam/rust,mahkoh/rust,SiegeLord/rust,defuz/rust,vhbit/rust,TheNeikos/rust,erickt/rust,jbclements/rust,robertg/rust,seanrivera/rust,vhbit/rust,XMPPwocky/rust,XMPPwocky/rust,zachwick/rust,aturon/rust,aturon/rust,aidancully/rust,zaeleus/rust,pythonesque/rust,nwin/rust,jashank/rust,barosl/rust,aturon/rust,barosl/rust,KokaKiwi/rust,zaeleus/rust,zaeleus/rust,bluss/rand,andars/rust,Ryman/rust,ejjeong/rust,aepsil0n/rust,avdi/rust,stepancheg/rust-ide-rust,sae-bom/rust,miniupnp/rust,robertg/rust,jbclements/rust,kimroen/rust,pelmers/rust,XMPPwocky/rust,pshc/rust,rprichard/rust,krzysz00/rust,reem/rust,jroesch/rust,mdinger/rust,kimroen/rust,dwillmer/rust,vhbit/rust,arthurprs/rand,rohitjoshi/rust,graydon/rust,mihneadb/rust,XMPPwocky/rust,miniupnp/rust,jbclements/rust,hauleth/rust,kwantam/rust,richo/rust,servo/rust,cllns/rust,gifnksm/rust,untitaker/rust,bombless/rust,robertg/rust,aidancully/rust,miniupnp/rust,zachwick/rust,mahkoh/rust,mihneadb/rust,mvdnes/rust,quornian/rust,mdinger/rust,mahkoh/rust,kimroen/rust,quornian/rust,GrahamDennis/rand,carols10cents/rust,rprichard/rust,ebfull/rand,GBGamer/rust,ebfull/rust,pythonesque/rust,ktossell/rust,aneeshusa/rust,sae-bom/rust,carols10cents/rust,barosl/rust,cllns/rust,dinfuehr/rust,AerialX/rust,l0kod/rust,victorvde/rust,KokaKiwi/rust,jbclements/rust,krzysz00/rust,ktossell/rust,GBGamer/rust,P1start/rust,jashank/rust,ruud-v-a/rust,kwantam/rust,pshc/rust,nham/rust,defuz/rust,dinfuehr/rust,graydon/rust,mahkoh/rust,cllns/rust,servo/rust,vhbit/rust,nwin/rust,graydon/rust,pythonesque/rust,zubron/rust,rprichard/rust,AerialX/rust,bombless/rust,emk/rust,richo/rust,avdi/rust,philyoon/rust,kimroen/rust,jbclements/rust,aturon/rust,AerialX/rust-rt-minimal,pythonesque/rust,carols10cents/rust,robertg/rust,aepsil0n/rust,stepancheg/rust-ide-rust,fabricedesre/rust,ruud-v-a/rust,emk/rust,richo/rust,emk/rust,hauleth/rust,aepsil0n/rust,victorvde/rust,SiegeLord/rust,bombless/rust,ebfull/rust,hauleth/rust,mitsuhiko/rust,jashank/rust,fabricedesre/rust,mdinger/rust,ktossell/rust,aepsil0n/rust,erickt/rust,vhbit/rust,jbclements/rust,avdi/rust,ruud-v-a/rust,shepmaster/rand,richo/rust,KokaKiwi/rust,nwin/rust,ebfull/rust,zubron/rust,zubron/rust,0x73/rust,barosl/rust,omasanori/rust,l0kod/rust,richo/rust,fabricedesre/rust,GBGamer/rust,seanrivera/rust,mvdnes/rust,pythonesque/rust,avdi/rust,barosl/rust,erickt/rust,ktossell/rust,P1start/rust,andars/rust,andars/rust,sae-bom/rust,zubron/rust,nwin/rust,krzysz00/rust,hauleth/rust,SiegeLord/rust,pshc/rust,michaelballantyne/rust-gpu,gifnksm/rust,mvdnes/rust,TheNeikos/rust,krzysz00/rust,miniupnp/rust,jbclements/rust,gifnksm/rust,AerialX/rust,aidancully/rust,pelmers/rust,aturon/rust,TheNeikos/rust,jroesch/rust,AerialX/rust-rt-minimal,bombless/rust,bhickey/rand,mihneadb/rust,0x73/rust,kimroen/rust,servo/rust,GBGamer/rust,SiegeLord/rust,erickt/rust,zubron/rust,ejjeong/rust,AerialX/rust,kwantam/rust,pshc/rust,retep998/rand,kimroen/rust,ebfull/rust