100 Exercises To Learn Rust - 5.3 variants with data 풀기

목차

풀이

// TODO: `Ticket::assigned_to`를 구현하세요.
// 티켓이 in progress라면 지정된 사람의 이름을 반환하고, 아니면 Panic을 일으키세요.
...
#[derive(Debug, PartialEq)]
enum Status {
    ToDo,
    InProgress { assigned_to: String },
    Done,
}

impl Ticket {
    ...
    pub fn assigned_to(&self) -> &str {
        match &self.status {
            Status::InProgress{assigned_to} => &assigned_to,
            _ => panic!("Only `In-Progress` tickets can be assigned to someone"),
        }
    }
}

 

match 구문을 이용해서 InProgress에 해당하는 경우 바인딩하는 패턴을 사용해 assigned_to를 반환한다.

 

그렇지 않은 경우(나머지 모든 경우)에는 panic!을 일으킨다.