use std::fmt; #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum Ship { Battleship, Carrier, Cruiser, Destroyer, Submarine } impl fmt::Display for Ship { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { use Ship::*; f.write_str( match self { &Battleship => "Battleship", &Carrier => "Carrier", &Cruiser => "Cruiser", &Destroyer => "Destroyer", &Submarine => "Submarine" } ) } } impl Ship { pub fn length(&self) -> u16 { use Ship::*; match self { &Battleship => 4, &Carrier => 5, &Cruiser => 3, &Destroyer => 2, &Submarine => 3 } } }