2013-05-25 4 views
1

fmt!("%?", obj)은 내 객체의 메소드를 호출하여 결과의 ​​형식을 지정하기를 원합니다. 나는 ToStrRepr 형질을 구현하려했지만 둘 다 잘 작동하지 않았다.rust : fmt에 대한 ToStr 정의

pub struct Element { 
    name: ~str, 
} 

impl ToStr for Element { 
    pub fn to_str(&self) -> ~str { 
     fmt!("<%s>", self.name) 
    } 
} 

fn main() { 
    let e = Element{name: ~"root"}; 
    io::println(fmt!("e: %?", e)); 
} 

그것은 인쇄 :

e: {name: ~"root"} 

내가 그것을 인쇄 기대 : 나는 녹 0.6을 사용하고

e: <root> 

여기 내 테스트 코드입니다.

답변

2

%?은 구조적 형식 지정자이며 변경되지 않을 가능성이 있습니다.

현재 유일한 방법

에서, ToStr 표현은 실제로 to_str를 호출하는 것입니다 인쇄 할 예 :

fn main() { 
    let e = Element{name: ~"root"}; 
    println(fmt!("e: %s", e.to_str())); 
} 

() 현재 막연한 계획과 %?를 제외하고 (포맷 지정자를 오버로드를 지원하기위한 몇 가지 반 구현있다, 컴파일러에는 아직 아무것도 없습니다.)