2 个版本
0.1.2 | 2022 年 4 月 11 日 |
---|---|
0.1.1 | 2022 年 3 月 2 日 |
#1545 在 算法 中
每月 39 次下载
在 6 个 (4 个直接) 包中使用
9KB
52 行
无内存分配器的字符串格式化
在裸机系统中,经常需要将数字转换为文本并进行格式化。标准 Rust 函数如 format!、write! 等。在 no_std 环境中无法使用,因为它们需要内存分配器。arrform! 宏使用标准库函数,但将数据写入固定长度的数组,该数组是在栈上分配的。
此包适用于 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