If `Iterator` is for "pulling out" data, then what is for "pushing in"?

I highly suggest watching Erik Meijer's Playful Introduction to Rx, which is exactly about "inverting" iterators. I am not aware of the state of reactive programming in Rust, but this post suggests some projects that seem to fulfil your needs.