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" },
]);