struct Car { color: String, transmission: Transmission, convertible: bool, age: (Age, u32), } #[derive(PartialEq, Debug)] enum Age { New, Used, } #[derive(PartialEq, Debug)] enum Transmission { Manual, SemiAuto, Automatic, } fn car_factory(color: String, transmission: Transmission, convertible: bool, miles: u32) -> Car { Car { color, transmission, convertible, age: car_quality(miles), } } fn car_quality(miles: u32) -> (Age, u32) { if miles > 100 { return (Age::Used, miles); } (Age::New, miles) } fn main() { println!("Hello, world"); let colors = ["Blue", "Green", "Red", "Silver"]; let mut car = car_factory(String::from(colors[0]), Transmission::Automatic, false, 0); println!( "Car order 1: {:?}, Hard top = {}, {:?}, {}, {} miles", car.age.0, car.color, car.convertible, car.color, car.age.1 ); car = car_factory(String::from(colors[1]), Transmission::SemiAuto, false, 1); println!( "Car order 1: {:?}, Hard top = {}, {:?},{:?}, {}, {} miles", car.age.0, car.color, car.convertible, car.transmission, car.color, car.age.1 ); car = car_factory(String::from(colors[2]), Transmission::Manual, false, 101); println!( "Car order 1: {:?}, Hard top = {}, {:?}, {}, {} miles", car.age.0, car.color, car.convertible, car.color, car.age.1 ); }