#numbers #formatting #tulip #task #write #stack #arrform

tulip-arrform

tulip 是 arrform 的分支

2 个版本

0.1.2 2022 年 4 月 11 日
0.1.1 2022 年 3 月 2 日

#1545算法

每月 39 次下载
6 个 (4 个直接) 包中使用

MIT/Apache

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

无运行时依赖