이 장에서는 추리 게임을 만들면서 Rust의 기본 개념들을 실습해보겠습니다:
사용자 입력 처리하기
예제:
use std::io;
fn main() {
println!("추측할 숫자를 입력하세요.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("입력을 읽지 못했습니다.");
println!("입력한 값: {}", guess);
}
rand 크레이트 활용하기
예제:
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("비밀 번호: {}", secret_number);
}
반복문과 패턴 매칭
예제:
loop {
// ... 사용자 입력 받기 ...
match guess.cmp(&secret_number) {
Ordering::Less => println!("너무 작습니다!"),
Ordering::Greater => println!("너무 큽니다!"),
Ordering::Equal => {
println!("정답!");
break;
}
}
}
에러 처리와 타입 변환
예제:
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("유효한 숫자를 입력해주세요!");
continue;
}
};
전체 코드
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main() {
println!("숫자 맞추기 게임!");
let secret_number = rand::thread_rng().gen_range(1..101);
loop {
println!("정답을 추측하여 입력하세요.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("입력을 읽지 못했습니다.");
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("유효한 숫자를 입력해주세요!");
continue;
}
};
println!("입력한 값: {}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("너무 작습니다!"),
Ordering::Greater => println!("너무 큽니다!"),
Ordering::Equal => {
println!("정답!");
break;
}
}
}
}
참조: https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html