只今Rustを勉強していますが、mapがあまり理解できていなくて困っております。

Rustの説明を見ると、iterがコールされたときに渡されたクロージャーが実行される、という内容と解釈しております。少なくとも、mapはIteratior構造体に実装された関数かと思います。よって、vectorのようなものに対し、mapが実装されているのは理解できます。

しかし、理解できないのが、futures::sync::mpscにあるUnboudedReceiverに対してmap関数が実行されているコードを見たことがあります。
下記のようなコードです。

let (tx, rx) = futures::sync::mpsc::unbounded();
let a = rx.map(|A| 処理 ).map(|B| 処理);

以下が質問です。
1. rx(UnboundedReceiver)ってIteratorを実装していないはずなのですが、なぜmapがコールできるのでしょうか?
2. mapに渡されたクロージャーは一体いつ実行されるのでしょうか? 
3. AやBに入る値は一体何になるのでしょうか?

あまりに、謎すぎて理解できないです。どなたかわかる方いましたら、ご回答よろしくお願いします