STUDY/Rust

Rust - 3. 추리게임 만들기 (with python)

sinawi95 2024. 2. 14. 21:11
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()

파이썬으로 최대한 비슷하게 짜봤는데 비교했을때 꽤나 다른걸 볼 수 있다. (그만큼 파이썬이 쉽게 배울수 있는 것같고 러스트가 지켜야할게 많다는 뜻이겠지)

  1. random 함수는 파이썬은 내장되어있지만 rust는 외부 라이브러리(크레이트?)를 사용해야한다.
  2. 러스트에선 let 으로 변수 선언을 한다. mut으로 특정 함수 내에서 값이 변하는지 알린다. 추론이 어느정도 가능하다. 파이썬은 그런거 없이 변수 선언을 그냥 한다.
  3. 러스트에선 에러 처리가 들어가야한다. 필수는 아닌듯하지만. 에러가 있는 경우 .expect 를 사용해서 처리를 한다. 파이썬 코드에선 구현하진 않았지만 일일이 찾든지 try: except: 로 에러를 처리해야한다.
  4. match (condition) {value => func} 이런게 쓰인다. c의 switch 느낌정도 될까싶다.

 

간단한 게임이지만 러스트의 맛(에러처리에 진심인)을 어느정도 느낄수 있었다. 


https://doc.rust-kr.org/ch02-00-guessing-game-tutorial.html

'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