#format-string #string #fmt #format #macro

无需std reusable-fmt

为format!和类似宏提供可重用格式字符串

4个版本

0.2.0 2021年5月14日
0.1.2 2021年4月4日
0.1.1 2021年4月4日
0.1.0 2021年4月4日

48#fmt

Download history 243/week @ 2024-04-17 124/week @ 2024-04-24 48/week @ 2024-05-01 169/week @ 2024-05-08 260/week @ 2024-05-15 109/week @ 2024-05-22 128/week @ 2024-05-29 132/week @ 2024-06-05 117/week @ 2024-06-12 126/week @ 2024-06-19 111/week @ 2024-06-26 29/week @ 2024-07-03 26/week @ 2024-07-10 95/week @ 2024-07-17 67/week @ 2024-07-24 44/week @ 2024-07-31

每月 237 次下载

WTFPL 许可证

9KB
93

reusable-fmt

RUST crates.io docs.rs

std::fmt宏提供可重用格式字符串

首次发布

此crate为std::fmt宏(如write!print!format!等)提供编译时定义的格式字符串支持。

安装

Cargo.toml:

[dependencies]
reusable-fmt = { git = https://github.com/rupansh/reusable-fmt }

src.rs:

use reusable_fmt::*;

示例用法

use reusable_fmt::*;

// This defines your format strings
fmt_reuse! {
    TEST1 = "This is a test! {}";
    TEST2 = "You can pass multiple format args! {} {}";
    TEST3 = r#"Raw Strings work too!! {}"#;
    TEST4 = "Named args {arg}";
    TEST5 = "Positional args {1} {0}";
    TEST6 = "Mixed {} {2} {1} {arg}";
}

fn main() {
	prntln!(TEST1, "Hello World"); // This is a test! Hello World
	let test = fmt!(TEST6, "Hello", "Test", "World", arg="Named"); // Mixed Hello World Test Named
	prntln!("{}", "WOW This works too!");
}

原因

  • 使格式字符串更少冗余
  • 无运行时开销!一切都是编译时。
  • 无依赖(除非你计算构建依赖)

贡献

请随意请求和实现功能。我对宏不是很擅长,所以代码改进也是受欢迎的!

测试

应该在nightly上运行测试

cargo+nightly test

文档

文档应在nightly上编译

cargo+nightly doc

无运行时依赖

~190KB