Rust를 시작했습니다. 배워두면 언젠간 쓸 데가 있겠죠
당분간은 TRPL(The Rust Programming Language) 공부하면서 중요하다고 생각하는 것만 정리해 올릴 생각입니다.
TRPL 맨 앞에 있는 예제입니다.
rand 버전은 0.5.6입니다. 0.6 넘어가면 gen_range가 없어요.
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main() {
println!("Guessing game!");
let secret_number = rand::thread_rng().gen_range(1, 101);
loop {
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
println!("You guessed: {}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => {
println!("You win!");
break;
},
}
}
}
- mut: mutable 키워드. 이걸 붙이지 않으면 immutable
- loop: 무한 루프
- let guess: 위에 guess가 있는데 이걸 덮을 수 있다(shadowing). guess_str 이런식으로 임시변수를 만들지 않아도 됨
- Ok, Err: Result Enum값
- println!: 매크로. 매크로 뒤에는 느낌표(!)가 붙는다.
- match: 패턴매칭 이용한 control flow
재밌네요. 빨리 Lifetime과 Ownership에 대해 배우고 싶습니다.
참고 링크
- Rust crate std (링크)
반응형
'프로그래밍 > Rust' 카테고리의 다른 글
[Rust] rustup, cargo shell completion 추가하기 (0) | 2024.04.06 |
---|---|
[Rust] 물음표(?) 연산자와 unwrap (0) | 2024.03.03 |
Rust 상수와 immutable 변수의 차이점 (0) | 2020.07.01 |