Update for latest Rust and add some documentation