rust:为fmt定义ToStr

时间:2013-05-25 08:29:15

标签: rust

我希望fmt!("%?", obj)在我的对象上调用一个方法来格式化结果。我尝试实施ToStrRepr特征,但似乎都没有效果。这是我的测试代码:

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。

1 个答案:

答案 0 :(得分:2)

%?是一个结构格式化程序,这不太可能改变。

打印ToStr表示的唯一当前方法是实际调用to_str,例如:

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

(目前有一些模糊的计划和一些半实现支持重载格式化说明符(%?除外),但编译器中没有任何内容。)