본문 바로가기

공부/rust

[rust] 러스트의 기본 문법(변수)

반응형

충격.. rust는 코드블럭이 없군요..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use std::io;
use std::cmp::Ordering;
use rand::Rng;
 
fn main() {
    let secret_number = rand::thread_rng().gen_range(1,101);
    println!("let's this about the correct number!");
    println!("input number that you think correct!");
 
    loop {
        let mut guess = String::new();
 
        io::stdin().read_line(&mut guess)
            .expect("can't read input");
 
        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };
 
        println!("input: {}", guess);
 
        match guess.cmp(&secret_number) {
            Ordering::Less => println!("less"),
            Ordering::Greater => println!("greater"),
            Ordering::Equal => {
                println!("correct!");
                break;
            }
        }
    }
}
cs

 

let : 변수 생성

mut: muttable - 수정가능

    *rust는 기본적으로 imuttable이라 수정할 수 없다.

 

String: 표준 라이브러리가 제공하는 문자열 타입.

    *String::new : String의 new 함수 호출 (정적 메서드)

 

read_line(String) : ios::Result 타입의 값 리턴

Result - enums(Ok, Err)

.expect: io::Result 타입의 인스턴스가 Err 값이라면 expect 메서드는 프로그램의 실행을 종료하고 expect 메서드에 인수로 전달한 메시지를 표시한다. Ok라면 expect 메서드는 Ok 값이 보관하고 있는 값만을 읽어와 리턴한다.

 

println!("input: {}", guess);

{}: 자리지정자. 문자열 후에 값을 입력하면 해당 값을 출력한다. (위의 경우엔 guess의 값)

 

trim: 공백과 줄바꿈 제거

parse: guess의 형식에 맞게 문자열 변경

 

match 값 {

     패턴 => 실행 코드,

}

: C언어의  switch와 비슷함. 단, kotlin처럼 맨 마지막에 넣은 값을 반환한다고 생각하면 된다.

 

loop: 반복문. 무한히 반복된다. (단, break를 이용하면 탈출 가능)

match 함수 {

    Ok(값) => 값

    Err(_) => continue

}

match 표현식을 이용하여 .expect(메시지) 대신에 Result가 Ok면 값을 반환하고, Err일 경우에는 loop를 다시 진행하는 코드를 작성할 수 있다.

반응형

'공부 > rust' 카테고리의 다른 글

[rust] 크레이트를 이용해 필요한 기능 추가하기  (0) 2021.05.20
[rust] 디버깅 세팅  (0) 2021.05.20