Rust — Trait Objects, Sized, and Why My DAG Needed `Box<dyn Fn>`

Why heterogeneous closures require type erasure, how trait objects become unsized, and why 'static is necessary when storing tasks.