This repository has been archived on 2025-04-22. You can view files and clone it, but cannot push or open issues or pull requests.
rust-test/main.rs
2024-11-15 00:42:01 +08:00

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
);
}