7 个版本
使用旧的 Rust 2015
0.2.3 | 2018年11月5日 |
---|---|
0.2.2 | 2018年11月5日 |
0.2.1 | 2018年7月31日 |
0.1.2 | 2018年7月30日 |
0.1.1 | 2017年9月13日 |
1185 在 Rust 模式 中
每月 24 次下载
10KB
127 行
Interpolate
一种简单的 Rust 字符串插值形式,例如:s!("今天是 {date}")
。
用法
注意:interpolate
目前需要 nightly 版本中的某些实验性功能。
#![feature(proc_macro_hygiene)]
use interpolate::s;
let name = "Jane";
let fav_num = 32;
let greeting = s!("{name}'s favorite number is {fav_num}");
转义花括号的方式与 Rust 中其他格式字符串的转义方式类似。
通过在前面加上相同的字符可以将字面字符 { 和 } 包含在字符串中。例如,{ 字符的转义为 {{,而 } 字符的转义为 }}。
想法
interpolate 的目标是提供具有非常轻量级语法的简单字符串插值功能。
它不是
format!
、println!
和相关宏的全替代品- 能够对类型进行非平凡格式化
- 需要大量文档的任何东西
我在创建一个 CLI 工具时创建了它,在该工具中我大量使用了 format!
。我真的想要像 Scala 的 s"今天是 $date"
这样更轻量级的工具,所以我决定在这里进行实验,目的是可能为围绕字符串(如 允许字面量用作 String 和 自定义字符串字面量)的讨论做出贡献。我经常想,这些想法是否可以在 Rust 中扮演更中心的角色
println!("Hello {name}")
实际上意味着println!("Hello {name}", name=name)
let full_name = s"{first_name} {last_name}"
替代format!("{} {}", first_name, last_name)
let msg = s"Hello"
替代"Hello".to_string()