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日

1185Rust 模式

每月 24 次下载

MIT 许可证

10KB
127

Interpolate

一种简单的 Rust 字符串插值形式,例如:s!("今天是 {date}")

文档

Crates.io

用法

注意: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()

无运行时依赖