Rust 센치멘탈한 문법

mohadang·2023년 2월 15일
0

Rust

목록 보기
21/30
post-thumbnail

match

fn main() {

    let food = "햄버거";
    let result = match food {
        "핫도그" => "핫도그다",
        // 리턴문 하나 뿐이라면 중괄호는 필수가 아님
        _ => "핫도그가 아니다",
    };
    println!("음식 판별: {}", result);    
    
    
    let x = 42;
    match x {
        0 => {
            println!("0 발견");
        }
        // 여러 개 값과 대조할 수 있다
        1 | 2 => {
            println!("1 또는 2 발견!");
        }
        // 범위로 대조할 수 있다
        3..=9 => {
            println!("3에서 9까지의 숫자 발견");
        }
        // 찾은 숫자를 변수에 바인딩할 수 있다
        matched_num @ 10..=100 => {
            println!("10에서 100까지의 숫자 {} 발견!", matched_num);
        }
        // 모든 케이스가 처리되지 않았을 경우 반드시 존재해야 하는 기본 match
        _ => {
            println!("뭔가 다른거 발견!");
        }
    }
   
}

loop에서 값 리턴하기

fn main() {
    let mut x = 0;
    let v = loop {
        x += 1;
        if x == 13 {
            break "13 찾았다";
        }
    };
    println!("loop에서: {}", v);
}

블록 표현

fn example() -> i32 {
	// Rust의 3항 연산 표현
    let x = 42;    
    let v = if x < 42 { -1 } else { 1 };
    println!("if로부터: {}", v);
    

    let v = {
        // 이 범위 블록은 함수 범위를 더럽히지 않고 값을 가져오게 해준다
        let a = 1;
        let b = 2;
        a + b
    };
    println!("block에서: {}", v);

    // Rust에서 함수 마지막에 값을 리턴하는 관용적 표현
    v + 4
}
    

Tuple 같은 구조체

struct Location(i32, i32);

fn main() {
    // 이것도 여전히 stack에 있는 struct임
    let loc = Location(42, 32);
    println!("{}, {}", loc.0, loc.1);
}

Unit 같은 구조체

  • struct에는 아무 field도 없어도 됩니다.
  • unit은 빈 tuple인 ()의 또 다른 이름입니다.
  • 이런 유형의 struct는 거의 쓰이지 않습니다.
struct Marker;

fn main() {
    let _m = Marker;
}
profile
mohadang

0개의 댓글