Traceroute implementation in Rust
I love your program’s entry point. Nearly all of my F# CLIs have an entrypoint that look nearly identical. However, Rust will automatically convert a Result into an exit code for you.

You can get rid of your run_app and wrapper by inclining it and modifying main’s signature. 

fn main() -&gt; Result&lt;(), Box&lt;dyn Error&gt;&gt; {
   // contents of `run_app` method
}


I believe this will even automatically print out the error.