【问题标题】:What is the third argument to std::int::to_str_bytes?std::int::to_str_bytes 的第三个参数是什么?
【发布时间】:2014-01-03 02:38:29
【问题描述】:

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

【问题讨论】:

    标签: rust


    【解决方案1】:

    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(())

    【讨论】:

      【解决方案2】:

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

      所以您应该能够简单地使用x.to_str()to_str(x)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        • 2020-12-26
        • 2019-01-18
        相关资源
        最近更新 更多