Let's build cars!
構造体(struct)と列挙型(enum)の練習問題。
Rust初心者の私には良い練習問題だと思ったのと、問題を解くために必要な要求がすべてコードにかかれており、余計な問題文がないことが新鮮だったため、転載します。
struct Car {
color: String,
transmission: Transmission,
convertible: bool,
mileage: u32,
}
# [derive(PartialEq, Debug)]
enum Transmission {
Manual,
SemiAuto,
Automatic,
}
fn car_factory(color: String, transmission: Transmission, convertible: bool) -> Car {
// To Do - Fix this part of the function to create a new Car object as requested by the client
let car: Car = todo!("Replace this with an actual Car instance")
// Factory's Quality Control Department says that new cars must always have zero mileage!
assert_eq!(car.mileage, 0);
// Display the details of the new car order
if car.convertible {
println!("New car = {}, {:?}, Convertible", car.color, car.transmission);
} else {
println!("New car = {}, {:?}, Hardtop", car.color, car.transmission);
}
return car;
}
fn main() {
let client_request_1 = car_factory(String::from("Red"), Transmission::Manual, false);
assert_eq!(client_request_1.color, "Red");
assert_eq!(client_request_1.transmission, Transmission::Manual);
assert_eq!(client_request_1.convertible, false);
let client_request_2 = car_factory(String::from("Silver"), Transmission::Automatic, true);
assert_eq!(client_request_2.color, "Silver");
assert_eq!(client_request_2.transmission, Transmission::Automatic);
assert_eq!(client_request_2.convertible, true);
let client_request_2 = car_factory(String::from("Yellow"), Transmission::SemiAuto, false);
assert_eq!(client_request_2.color, "Yellow");
assert_eq!(client_request_2.transmission, Transmission::SemiAuto);
assert_eq!(client_request_2.convertible, false);
}
正しいコードの出力結果
New car = Red, Manual, Hardtop
New car = Silver, Automatic, Convertible
New car = Yellow, SemiAuto, Hardtop
引用元