std :: int :: to_str_bytes的第三个参数是什么?

时间:2014-01-03 02:38:29

标签: rust

在Rust编程语言中 - 我试图将整数转换为字符串表示形式,所以我写了类似的东西:

use std::int::to_str_bytes;
...
to_str_bytes(x, 10);

...但它说我必须指定第三个参数。文档在这里:http://static.rust-lang.org/doc/master/std/int/fn.to_str_bytes.html,但我不够聪明,无法理解它作为第三个参数的期望。

2 个答案:

答案 0 :(得分:4)

Njol's answer中使用x.to_str()是获取整数字符串表示的直接方法。但是,x.to_str()返回一个拥有的(因此堆分配的)字符串(~str)。只要您不需要永久存储生成的字符串,就可以通过在堆栈上分配字符串表示来避免额外堆分配的开销。这正是std::int::to_str_bytes函数的要点 - 提供数字的临时字符串表示。

类型为f: |v: &[u8]| -> U的第三个参数是一个带有字节切片的闭包(我不认为Rust有堆栈分配的字符串)。你这样使用它:

let mut f = std::io::stdout();
let result = std::int::to_str_bytes(100, 16, |v| {
    f.write(v);
    Some(())
});

to_str_bytes返回闭包所做的任何操作,在本例中为Some(())

答案 1 :(得分:1)

int似乎实现了ToStr:http://static.rust-lang.org/doc/master/std/to_str/trait.ToStr.html

因此您应该只需使用x.to_str()to_str(x)

即可