struct, enum default 값

joonpark·2022년 1월 16일
0

42_cli

목록 보기
5/5

문제

pub struct TokenInfo {
    resource_owner_id: i64,
    scopes: Vec<String>,
    expires_in_seconds: i64,
    application: Application,
    created_at: i64,
}

이런 struct가 있을 때 new() 함수를 만들면 default값들로 채워진 struct를 반환하고 싶은데 일일이 default값을 써주는건 너무 비효율적이고 방법이 있을거 같았다.

해결

Default trait 링크

Default trait 쓰기

Default trait을 쓰면 해당 type에 default값을 준다.

#[derive(Default)]
pub struct TokenInfo {
    resource_owner_id: i64,
    scopes: Vec<String>,
    expires_in_seconds: i64,
    application: Application,
    created_at: i64,
}

Application도 기본 type이 아니라서 Application에도 Default를 줘야 함.

enum에 default주기

enum에는 #[derive(Default)]를 할 수 없어도 직접 적용시켜줘야 함.

impl Default for Status {
    fn default() -> Self {
        Status::WaitingForCorrection
    }
}

이런식으로 구현해주면 된다.

0개의 댓글