2个版本
0.1.1 | 2021年12月6日 |
---|---|
0.1.0 | 2021年12月6日 |
#737 在 嵌入式开发
每月404次下载
8KB
无内存分配器的字符串格式化
在裸机系统中,通常需要将数字转换为文本并对其进行格式化。由于标准Rust函数(如format!、write!等)需要内存分配器,因此它们无法在no_std环境中使用。arrform!宏使用标准库函数,但将数据写入固定长度的数组,该数组在栈上分配。
此crate适用于no_std环境。这是一个基于栈上分配的固定大小数组的format!宏的替代品。
arrform!
use arrform::{arrform, ArrForm};
let af = arrform!(64, "write some stuff {}: {:.2}", "foo", 42.3456);
assert_eq!("write some stuff foo: 42.35", af.as_str());
ArrForm结构作为替代方案
ArrForm结构提供了更详细的错误处理,并支持相同缓冲区的多次使用。然而,它使用起来非常繁琐,并且会产生更多的语法噪音。
开销
方便的格式化选项可能会消耗大量的存储空间。在Cortex M4上,如果使用宏将简单的u32数字嵌入而不是简单的字符串,则需要额外的992字节程序代码。如果输出格式化的f32数字(额外30,928字节),则成本更高。用于确定这些数字的程序代码可以在示例目录中找到。
许可证
Apache 2.0或MIT