디버그 출력을 찍어보기

Rust:
디버그 출력을 찍어보기

How to: (방법:)

fn main() {
    let my_variable = 10;
    println!("my_variable: {}", my_variable); // 변수 출력
    println!("Debug output: {:?}", my_variable); // {:?}는 디버그 출력 포맷
}

// 출력값:
// my_variable: 10
// Debug output: 10

구조체를 디버그 출력하려면 Debug 트레잇을 구현해야 한다:

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

fn main() {
    let person = MyStruct {
        name: String::from("Alice"),
        age: 30,
    };
    
    println!("Debug output: {:?}", person); // 구조체 디버그 출력
}

// 출력값:
// Debug output: MyStruct { name: "Alice", age: 30 }

Deep Dive (심층 분석):

Rust에서 프린트 디버그는 println! 매크로로 시작됐다. 이것은 C언어의 printf와 유사하지만, Rust의 소유권 및 타입 안전 기능과 결합됐다.

{:?} 포맷은 Debug 트레잇의 인스턴스를 출력하도록 요구한다. Debug는 자동으로 구현할 수 있는데, #[derive(Debug)] 어노테이션을 사용하는 것이다.

Display 트레잇은 사용자 친화적인 출력을 위한 것으로, fmt::Display를 구현해야 하며, {} 포맷 홀더로 사용할 수 있다. 반면에, Debug은 개발자에게 유용한 정보를 제공하는데 초점을 맞춘다.

std::fmt 모듈은 다양한 포매팅 옵션을 포함하고 있다. 개발자는 필요에 따라 자체 포매팅 행위를 정의할 수 있다.

See Also (참고 자료):