[英]How do I find the next power of 2 for a u64 integer in Rust efficiently?
[英]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.