Problem with "duplicating" a (Tcp)Stream and lifetimes

In Lua, yielding "through" ordinary function calls works, but only where the scripting language is used. If there are any C-calls in between, then it is usually not possible (unless the C function provides a method to interrupt its execution, which is somewhat ugly).

I'll read into Tokio and async programming in Rust in general to see if I should switch from my current approach to Tokio.