2 个版本
使用旧的 Rust 2015
| 0.1.1 | 2016年5月24日 |
|---|---|
| 0.1.0 | 2016年5月24日 |
#730 in 编程语言
5KB
63 行
overload-strings
这是一个快速而愚蠢的语法扩展,主要是为了熟悉使用自定义属性来使用编译器插件。它执行Haskell的OverloadedStrings的等效操作,即在每个字符串字面量上插入一个.into()调用。无需额外特质。
用法
作为编译器插件,需要nightly Rust。添加
#![feature(plugin)]
#![plugin(overload_strings)]
然后在你想要重载字符串字面量的项(模块、fn、impl等)上应用#[overload_strings]属性。
该注解不会自动递归到子模块中,以降低由于非局部效应而引起意外的风险。它还忽略了static和const,因为它们不能包含方法调用。
当歧义导致类型推断错误时,您可以使用type_ascription nightly功能来消除歧义。
现在您可以调用期望String、Cow<str>和其他实现From<&str>的所有类型的函数,并使用字符串字面量调用它们
struct Person {
first: String,
last: String,
birthplace: Cow<str>,
}
process_persons(&[
Person { first: "Doug", last: "Piranha", birthplace: "London" },
Person { first: "Dinsdale", last: "Piranha", birthplace: "London" },
]);