개발 지식

개발 지식

Rust Debug 대신 Display를 구현하면 출력이 유연해진다

페이지 정보

profile_image
영삼이
0건 129회 25-03-28 15:17

본문

Debug 대신 Display를 구현하면 출력이 유연해진다

포맷 제어가 필요할 땐 fmt::Display가 정답이다


Rust에서 구조체를 출력하려면 보통 #[derive(Debug)]을 쓴다:

#[derive(Debug)]
struct User {
    name: String,
    age: u8,
}

let user = User {
    name: "영삼".to_string(),
    age: 30,
};

println!("{:?}", user);

❌ 문제점

  • 출력 형식이 **개발용(Debug)**에 맞춰져 있음

  • 사용자에게 보여줄 용도로는 부적절한 경우 많음

  • 포맷 커스터마이징 불가


fmt::Display 직접 구현

use std::fmt;

impl fmt::Display for User {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{} ({}세)", self.name, self.age)
    }
}
println!("{}", user); // 영삼 (30세)
  • 출력 형식을 완전히 제어 가능

  • 사용자용 출력에 적합


언제 Debug, 언제 Display?

목적 구현 Trait
개발 로그 출력 Debug
사용자용 포맷 Display
오류 메시지 Display

✔️ 구조체나 enum을 직접 출력할 일이 있다면,
Debug만 쓰지 말고 Display도 꼭 구현하라.
표현력 있는 출력이 코드 완성도를 높인다.

댓글목록

등록된 댓글이 없습니다.