#io-write #size-optimization #macro #replace #standard #optimized #writeln

无需 std bitty_write_macro

一种替换 write! 的嵌入式写操作,优化代码大小

3 个版本

0.1.2 2024 年 3 月 14 日
0.1.1 2024 年 3 月 13 日
0.1.0 2024 年 3 月 13 日

#907 in Rust 模式

Download history 2136/week @ 2024-04-07 1201/week @ 2024-04-14 328/week @ 2024-04-21 1/week @ 2024-04-28

57 次每月下载

Apache-2.0

19KB
398

标准库中 write!writeln! 宏的大小优化版本。

为什么要使用这些宏?

在代码大小受限且进行字符串格式化的系统中,使用 write!writeln! 宏可能会比直接写入内容生成更大的代码,即使在链接和内联之后。

此 crate 提供的 write!writeln! 宏会检测写操作是否可以优化为使用 write_str(对于 fmt::Write)或 write(对于 io::Write)的直接写入,并调用这些函数而不是 format_args!write_fmt


lib.rs:

标准库中 write!writeln! 宏的大小优化版本

为什么要使用这些宏?

在代码大小受限且进行字符串格式化的系统中,使用 write!writeln! 宏可能会比直接写入内容生成更大的代码,即使在链接和内联之后。

此 crate 提供的 write!writeln! 宏会检测写操作是否可以优化为使用 write_str(对于 fmt::Write)或 write(对于 io::Write)的直接写入,并调用这些函数而不是 format_args!write_fmt

std 功能

默认情况下,此crate是#![no_std],并且仅支持fmt::Write。要写入io::Write目标,请启用std功能。

已知缺点

这些宏

  • 针对特质的write_str方法,使用内部适配器在io::Write上公开write_str
  • 当前不接收格式字符串中的concat!
  • 不优化嵌套的format_args!,如write!(w, "{}", format_args!("x"))

依赖