Typestates in Rust