在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,但我不够聪明,无法理解它作为第三个参数的期望。
答案 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)