Trait definiation and deriving traits in Rust