#编译器插件 #字符串字面量 #插件

nightly rustplacements

一个用于修改字符串字面量的Rust编译器插件

1个不稳定版本

使用旧的Rust 2015

0.1.0 2017年8月27日

#886编程语言

MIT 协议

21KB
281

Rustplacements

这是一个Rust语言的编译器插件,可以将源代码中的所有字符串字面量替换为随机文本。好吧,其实不是随机的。你可以选择用这个页面上的任何列表中的条目来替换文本,只需在现有的Rust代码中添加几个属性即可。

简要示例

让我们从一个简单的示例开始,如下所示。它逐个打印出句子中的单词。

const SENTENCE: [&'static str; 9] = ["The", "Quick", "Brown", "Fox", "Jumped", "Over", "the",
                                     "Lazy", "Dog"];

fn main() {
    for word in &SENTENCE {
        println!("{}", word);
    }
}

输出应该看起来像

The
Quick
Brown
Fox
Jumped
Over
the
Lazy
Dog

Rustplacements允许我们在编译时将所有字符串替换为其他值。假设我们想将所有文本替换为表情符号。Rustplacements可以做到这一点。

#![feature(plugin)]
#![plugin(rustplacements)]

// Placing it in the module root will replace everything in the module
#![Rustplacements = "emojis"]

const SENTENCE: [&'static str; 9] = ["The", "Quick", "Brown", "Fox", "Jumped", "Over", "the",
                                     "Lazy", "Dog"];

fn main() {
    for word in &SENTENCE {
        println!("{}", word);
    }
}

新的输出将看起来像这样。输出是随机的,因此每次你编译你的crate时都会重新生成。

😢 😫 🤓
😞 😠 😟 😖 😧
😬 😬 😈 😡 😟
😓 😒 😬
😝 😘 🤧 😬 😧 😡
😗 😈 😉 😫
😄 😱 😰
😃 🤡 😅 😯
🤒 😈 😈

使用Rustplacements

像Rustplacements这样的编译器插件仅在nightly rust上可用,因为它们需要启用功能标志。要开始,Rustplacements可在crates.io上找到。要下载最新版本,请将以下行添加到Cargo.toml中。

[dependencies]
rustplacements = "*"

要启用编译器插件,请将以下行添加到main.rslib.rs的顶部。

#![feature(plugin)]
#![plugin(rustplacements)]

你现在可以在crate中的任何地方使用此插件,只需将#[Rustplacements = "one-direction"]应用于任何语言元素。您可以使用#![Rustplacements = "got-quotes"]将元素放在根目录,它将转换模块中的所有字符串字面量。它也可以应用于特定的字符串/impl/函数,以实现更精细的控制。

就是这样。查看分类页面以获取更多可用分类。

贡献

您是否想要添加一个类别?请随意提交一个包含新类别的PR,或者对现有类别的编辑。您需要更改exprs.rsCATEGORIES.md文件,以包含新的类别。有关更多详细信息,请参阅贡献页面。所有Pull Requests都应专业、包容他人,并且一般不具攻击性。如果对类别的适宜性有任何争议,我们将采取更为保守的态度。

依赖项

约345–570KB