#字符串格式化 #printf #字符串

sprintf

C语言的s(n)printf在Rust中的克隆

9个版本

0.3.1 2024年7月14日
0.3.0 2024年5月31日
0.2.1 2024年2月12日
0.1.4 2023年9月10日
0.1.1 2021年8月30日

#57 in WebAssembly

Download history 5606/week @ 2024-04-29 4997/week @ 2024-05-06 5043/week @ 2024-05-13 4066/week @ 2024-05-20 3643/week @ 2024-05-27 2641/week @ 2024-06-03 2824/week @ 2024-06-10 3810/week @ 2024-06-17 4293/week @ 2024-06-24 3443/week @ 2024-07-01 3296/week @ 2024-07-08 4066/week @ 2024-07-15 3719/week @ 2024-07-22 4965/week @ 2024-07-29 3983/week @ 2024-08-05 3759/week @ 2024-08-12

16,569 个月下载量
10 个crates中使用 (4 直接)

MIT 许可证

32KB
705 代码行

sprintf-rs

Rust中C sprintf的克隆

创建此crates是为了在WASM程序(其中没有libc)中提供C printf风格的格式化。

注意: 除非您确实需要printf兼容性,否则您可能更愿意使用标准的Rust字符串格式化而不是此crates。

此crates实现了一个动态类型检查函数vsprintf和宏sprintf!

使用示例

use sprintf::sprintf;
let s = sprintf!("%d + %d = %d\n", 3, 9, 3+9).unwrap();
assert_eq!(s, "3 + 9 = 12\n");

libc是一个开发依赖项,因为它在测试中用于比较结果。std用于某些数学函数。


lib.rs:

用Rust编写的Libc s(n)printf克隆,因此您可以在没有libc的情况下使用printf风格的格式化(例如在WebAssembly中)。

注意: 除非您确实需要printf兼容性,否则您可能更愿意使用标准的Rust字符串格式化而不是此crates。

它遵循标准的C语义,但

  • 区域感知UNIX扩展(' 和GNU的 I)不受支持。
  • %a/%A(十六进制浮点数)目前未实现。
  • 长度修饰符(hl等)已检查,但忽略。使用传递的类型。

使用示例

 use sprintf::sprintf;
 let s = sprintf!("%d + %d = %d\n", 3, 9, 3+9).unwrap();
 assert_eq!(s, "3 + 9 = 12\n");

在运行时检查参数的类型。

依赖项

~275–730KB
~17K SLoC