https://doc.rust-lang.org/rust-by-example/fn/closures/output_parameters.html The link of `FnBox` in this page is broken. After 1.35([changelog](https://blog.rust-lang.org/2019/05/23/Rust-1.35.0.html#fn-closure-traits-implemented-for-box%3Cdyn-fn*%3E)), we can directly use `Box<dyn Fn*>` as return type and FnBox has been removed.