사용자 정의 데이터에 대한 println!의 출력

Rust에서 내가 정의한 데이터를 println!를 이용해 화면에 출력하기 위해서는 반드시 std::fmt::Display 트레이트를 구현해야 합니다. 먼저 다음과 같은 MyStruct라는 데이터를 정의합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
struct MyStruct {
name: String,
age: u16,
}
fn main() {
let o = MyStruct {
name: String::from("Ferris"),
age: 17,
};
println!("{}", o);
}
struct MyStruct { name: String, age: u16, } fn main() { let o = MyStruct { name: String::from("Ferris"), age: 17, }; println!("{}", o); }
struct MyStruct {
    name: String,
    age: u16,
}

fn main() {
    let o = MyStruct {
        name: String::from("Ferris"),
        age: 17,
    };

    println!("{}", o);
}

위의 코드 12번은 에러를 발생하는데, 이는 MyStruct 타입의 o 객체를 콘솔에 출력하기 위해서는 MyStruct에 대해 std::fmt::Display 트레이트를 구현하지 않았기 때문입니다. 정상적으로 작동하기 위해서 위의 코드에 대해 다음처럼 보완하면 됩니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
use std::fmt;
struct MyStruct { ... }
impl fmt::Display for MyStruct {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "name: {}, age: {}", self.name, self.age)
}
}
fn main() {
let ferris = ...
println!("{}", ferris);
}
use std::fmt; struct MyStruct { ... } impl fmt::Display for MyStruct { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "name: {}, age: {}", self.name, self.age) } } fn main() { let ferris = ... println!("{}", ferris); }
use std::fmt;

struct MyStruct { ... }

impl fmt::Display for MyStruct {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "name: {}, age: {}", self.name, self.age)
    }
}

fn main() {
    let ferris = ...

    println!("{}", ferris);
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다