[Rust] 디폴트값: Default 트레잇

러스트는 default라는 특수한 트레잇을 통해 디폴트값의 지정을 제어할 수 있다.

이거다.
https://doc.rust-lang.org/std/default/index.html

일단 대충 써보자.
문자열 등의 기본 타입은 디폴트가 구현되어있어서, 그냥 Default 트레잇의 메서드 default를 사용하면 미리 지정된 디폴트값을 삽입할 수 있다. image

image

image 문자열의 경우에는 빈 문자열이 지정되어있다.

사용자 타입을 구현할 경우에도 derive를 이용하면 간편하게 디폴트값을 적용할 수 있다. image

image

image

커스텀을 하고싶다면 직접 구현해도 되고 image

image

image


디폴트값 채우기
디폴트값 관련해서 괜찮은 축약 구문이 하나 존재한다.
일단 예시를 한번 보겠다.

이런 타입이 있고, 필드의 일부만 초기화하고 나머지는 디폴트로 초기화하고 싶다면 어떨까. image

image 뭐 엄청나게 복잡한건 아니고 조금 귀찮은 작업이긴 하지만, 이에 대해서도 문법적 설탕이 제공된다.

이렇게 써두면 image

image

image 입력한 것 외의 나머지를 전부 디폴트로 채우라는 뜻이 된다.

근데 이게 그리 대단한건 아니고, 객체를 일단 디폴트로 생성해서 나머지 직접입력값을 넣어주는 방식이라서, 해당 바깥 객체에도 Default 구현이 필요하다.

뭐 그렇게 자주 쓰거나 유용한 기능은 아니다만... 알아두면 가끔은 코드를 좀더 심플하게 만들어줄 수는 있겠다.


참조
https://stackoverflow.com/questions/48389072/what-is-the-syntax-inside-a-struct-literal-in-rust