#formatting #dynamic #run-time #safe #limited #dyn #string

dyn_formatting

一个库为 Rust 提供了有限的 Python 风格安全动态(运行时)格式化支持

2 个稳定版本

3.0.0 2023 年 1 月 25 日
2.0.0 2023 年 1 月 24 日
1.0.1 2023 年 1 月 23 日

#19 in #limited

MIT 许可证

14KB
273

动态格式化 README

轻量级、动态、Python 风格的字符串格式化(仅支持 String{key} 模式)。它只需要 std 就可以工作。

转义如 {{}}

安装

cargo add [email protected]

示例

use dyn_formatting::dynamic_format;
assert_eq!(
    dynamic_format(
        "I'm {name}. I'm {age} years old now.",
        &[("name", "ABC"), ("age", "20")].into()
    ).unwrap(),
    "I'm ABC. I'm 20 years old now.".to_string()
);
use dyn_formatting::dynamic_format;
use std::collections::HashMap;
let value_age = (15).to_string(); // Make lifetime long enough
let dictionary = HashMap::from([
    ("age", value_age.as_str()),
]);
assert_eq!(
    dynamic_format("{{{age} }}{age}", &dictionary).unwrap(),
    "{15 }15"
)
use dyn_formatting::dynamic_format;
assert!(
    dynamic_format(
        "I'm {name}. I'm {age} years old now.",
        &[("name", "ABC")].into()
    ).is_err() // Key error
);
use dyn_formatting::dynamic_format;
assert!(
    dynamic_format(
        "I'm {name{name}}.",
        &[("name", "ABC")].into()
    ).is_err() // Token error: '{' unmatched.
);

无运行时依赖