2个版本
0.1.1 | 2022年4月17日 |
---|---|
0.1.0 | 2022年4月17日 |
#48 in #replacement
8KB
everybody_loops
为rustc的-=everybody_loops
转换提供替代方案。
用法
选取一个包含大量函数的文件,您想要去除这些函数。
fn main() {
let x = 1;
let y = 2;
let z = x + y;
}
struct Foo;
impl std::fmt::Debug for Foo {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "Foo")
}
}
impl Foo {
fn boo(&self) {
println!("boo");
}
}
const f: () = {
fn noop() {
let x = 8;
}
}
只需运行
everybody_loops file.rs
现在您有了更简单的代码。
fn main() {
loop {}
}
struct Foo;
impl std::fmt::Debug for Foo {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
loop {}
}
}
impl Foo {
fn boo(&self) {
loop {}
}
}
const f: () = {
fn noop() {
loop {}
}
};
安装
cargo install --locked everybody_loops
限制
此方法不适用于返回类型中有impl Trait
的函数,因为编译器需要指定一个具体类型。
现有技术
- 这曾经是编译器的功能之一,但在#93913中被移除。
- 这篇博客由Felix S Klock II首次介绍了这项技术。
- 代码是dtolnay的
syn
和prettyplease
的薄包装,这两者都值得比我更多的赞誉。
许可
根据您的选择,受Apache License, Version 2.0或MIT license许可。除非您明确说明,否则您提交的任何有意包括在此软件包中的贡献,根据Apache-2.0许可证的定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~2MB
~44K SLoC