59 lines
1.4 KiB
Rust
59 lines
1.4 KiB
Rust
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
|
|
);
|
|
}
|