繁体   English   中英

如何将 u64 打印到 Rust 中的堆栈缓冲区

[英]How do I print u64 to a buffer on stack in Rust

我正在尝试将u64格式化为&str ,但没有在堆上动态分配任何 memory 。 我想在堆栈上手动声明一个空间(例如, let mut buffer = [0u8; 20]并将u64打印到buffer并从中获取&str ,但有些不安全。

我尝试了write.(&mut buffer[.,], "{}" i) ,但它返回一个Result<()>并且我无法获取格式化字符串的长度,以便不安全地将其转换为 &str。

我目前正在从 std 库直接处理Display for u64的实现,有没有更好的方法呢?

您可以使用 Cursor:

use std::io::{Write, Cursor};

fn main() {
    let mut cursor = Cursor::new([0u8; 20]);
    let i = 42u64;

    write!(cursor, "{i}").unwrap();
    let pos = cursor.position();
    let buffer = cursor.into_inner();
    let text = std::str::from_utf8(&buffer[..pos as usize]).unwrap();
    println!("{text}");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM