#memory-allocator #string-formatting #no-heap #no-std

no-std arrform

无内存分配器的字符串格式化

2个版本

0.1.1 2021年12月6日
0.1.0 2021年12月6日

#737嵌入式开发

Download history 22/week @ 2024-03-14 22/week @ 2024-03-21 31/week @ 2024-03-28 20/week @ 2024-04-04 26/week @ 2024-04-11 26/week @ 2024-04-18 25/week @ 2024-04-25 21/week @ 2024-05-02 35/week @ 2024-05-09 29/week @ 2024-05-16 36/week @ 2024-05-23 37/week @ 2024-05-30 325/week @ 2024-06-06 35/week @ 2024-06-13 24/week @ 2024-06-20 13/week @ 2024-06-27

每月404次下载

MIT/Apache

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

无运行时依赖