update to last Rust + port to cargo