#rustfmt #wrapper #generator #macro #format #generate #command

rustfmt-wrapper

代码生成器使用的rustfmt库包装器

3个不稳定版本

0.2.1 2023年10月23日
0.2.0 2022年6月21日
0.1.0 2021年10月9日

过程宏 中排名 32

Download history 12725/week @ 2024-04-22 12944/week @ 2024-04-29 11489/week @ 2024-05-06 16065/week @ 2024-05-13 21049/week @ 2024-05-20 13198/week @ 2024-05-27 11087/week @ 2024-06-03 17678/week @ 2024-06-10 12521/week @ 2024-06-17 16589/week @ 2024-06-24 11822/week @ 2024-07-01 15761/week @ 2024-07-08 10850/week @ 2024-07-15 13246/week @ 2024-07-22 13321/week @ 2024-07-29 15445/week @ 2024-08-05

每月下载量 53,412
49 个crate中使用(直接使用25个)

Apache-2.0

21KB
332 行代码

rustfmt-wrapper

Rust使生成更多Rust代码变得容易——对于宏、构建器等。格式化代码使其更容易阅读是件好事。虽然 rustfmt 做得相当不错,但它作为一个命令行工具,不能作为库使用。这是一个可能过于简单的包装库。

使用简单,并且与 quote! 有很好的兼容性。

let codegen = quote::quote!{ struct Foo { bar: String } };
let formatted: String = rustfmt_wrapper::rustfmt(codegen).unwrap();

如果你需要更多控制 rustfmt 配置选项的 大量,你可以使用第二种形式

let codegen = quote::quote!{
    async fn go() {
        let _ = Client::new().operation_id().send().await?;
    }
};
let config = Config {
    max_width: Some(45),
    ..Default::default()
};

let narrow_formatted = rustfmt_config(config, codegen).unwrap();

请注意,为了使用不稳定配置选项,您需要安装 rustfmt 的夜间版本。


感谢David Tolnay提供了许多工具,包括 cargo-expand,本库从中借鉴了。

依赖关系

~4–15MB
~188K SLoC