8 个版本
0.2.2 | 2023年12月3日 |
---|---|
0.2.1 | 2023年2月3日 |
0.2.0 | 2022年12月6日 |
0.1.4 | 2022年8月15日 |
#187 in Rust 模式
18,710 每月下载量
在 9 个 (2 直接) crate 中使用
39KB
829 行
formatx
一个用于在 Rust 中运行时格式化非字面字符串的宏。
formatx
是一个无依赖项的字符串模板库,其语法源自 std::fmt。formatx 导出 formatx! 宏,该宏类似于 format! 宏。formatx 的工作原理是首先解析模板字符串,然后它使用 format!
宏内部来复制其行为。formatx 旨在格式化字符串和数字,尽管也可以格式化通用的类型,如 struct。
入门
将其添加到您的 Cargo.toml 文件中。
[dependencies]
formatx = "0.2.2"
或从命令行添加。
$ cargo add formatx
示例
来源: 使用非字面字符串格式化
use formatx::formatx;
fn message(language: &str, name: &str, number: i32) -> String {
let s = match language {
"french" => "Bonjour {}, le nombre est {}",
"spanish" => "Hola {}, el numero es {}",
_ => "Hi {}, the number is {}",
};
formatx!(s, name, number).unwrap()
}
fn main() {
println!("{}", message("french", "Léa", 1));
println!("{}", message("spanish", "Sofia", 2));
println!("{}", message("english", "Ashley", 3));
}
输出
Bonjour Léa, le nombre est 1
Hola Sofia, el numero es 2
Hi Ashley, the number is 3
限制
警告 下面给出的示例将始终崩溃。
let people = "Rustaceans";
formatx!("Hello {people}!").unwrap();
- 不支持混合两种类型的 位置 参数。
formatx!("{1} {} {0} {}", 1, 2).unwrap();
- 不支持通过
$
符号参数进行参数设置。
formatx!("{:width$}!", "x", width = 5).unwrap();
- 不能使用星号
.*
设置 精度。
formatx!("{:.*}", 5, 0.01).unwrap();
替代方案
许可证
双重许可