我希望fmt!("%?", obj)
在我的对象上调用一个方法来格式化结果。我尝试实施ToStr
和Repr
特征,但似乎都没有效果。这是我的测试代码:
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"}
我希望它能打印出来:
e: <root>
我正在使用Rust 0.6。
答案 0 :(得分:2)
%?
是一个结构格式化程序,这不太可能改变。
打印ToStr
表示的唯一当前方法是实际调用to_str
,例如:
fn main() {
let e = Element{name: ~"root"};
println(fmt!("e: %s", e.to_str()));
}
(目前有一些模糊的计划和一些半实现支持重载格式化说明符(%?
除外),但编译器中没有任何内容。)