728x90
Rust로 추리게임(guessing game)을 만들면서 대략적인 문법을 공부해보고 그나마 잘하는 파이썬과 비교하면서 뭐가 다른지 비교해본다.
빠르게 프로젝트를 생성하고 전체 코드를 비교해보자
// Cargo.toml
[dependencies]
rand = "0.8.5"
// main.rs
use std::{cmp::Ordering, io};
use rand::Rng;
fn main() {
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1..=100);
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;
}
}
}
}
from random import randint
def main():
print("Guess the number!")
secret_number = randint(1,100)
print(secret_number)
while True:
print("Please input your guess.")
guess = input()
if guess.isdigit():
guess = int(guess)
else:
continue
print("You guessed: {guess}")
if guess > secret_number:
print("Too big!")
elif guess < secret_number:
print("Too small!"),
else: # guess == secret_number:
print("You win!")
break
if __name__ == "__main__":
main()
파이썬으로 최대한 비슷하게 짜봤는데 비교했을때 꽤나 다른걸 볼 수 있다. (그만큼 파이썬이 쉽게 배울수 있는 것같고 러스트가 지켜야할게 많다는 뜻이겠지)
- random 함수는 파이썬은 내장되어있지만 rust는 외부 라이브러리(크레이트?)를 사용해야한다.
- 러스트에선 let 으로 변수 선언을 한다. mut으로 특정 함수 내에서 값이 변하는지 알린다. 추론이 어느정도 가능하다. 파이썬은 그런거 없이 변수 선언을 그냥 한다.
- 러스트에선 에러 처리가 들어가야한다. 필수는 아닌듯하지만. 에러가 있는 경우 .expect 를 사용해서 처리를 한다. 파이썬 코드에선 구현하진 않았지만 일일이 찾든지 try: except: 로 에러를 처리해야한다.
- match (condition) {value => func} 이런게 쓰인다. c의 switch 느낌정도 될까싶다.
간단한 게임이지만 러스트의 맛(에러처리에 진심인)을 어느정도 느낄수 있었다.
'STUDY > Rust' 카테고리의 다른 글
Rust - 5. 문법/함수, 주석, 제어흐름문 (0) | 2024.02.15 |
---|---|
Rust - 4. 문법/변수, 데이터 타입 (0) | 2024.02.14 |
Rust - 2. 프로젝트 생성 (0) | 2024.02.13 |
Rust - 1. 설치 (0) | 2024.02.13 |
Rust - 0. 시작에 앞서 (0) | 2024.02.13 |