pub type SharedInput = Arc<Mutex<dyn Read + Send>>;
Shared reader half: mutex-guarded Read behind an Arc, so every binding aliases one channel.
Read
Arc
pub struct SharedInput { /* private fields */ }