18个版本

0.3.9 2024年1月18日
0.3.8 2024年1月18日
0.2.3 2023年7月14日
0.1.4 2023年7月13日

750编程语言 中排名

Download history 34/week @ 2024-03-13 96/week @ 2024-03-20 89/week @ 2024-03-27 62/week @ 2024-04-03 62/week @ 2024-04-10 84/week @ 2024-04-17 63/week @ 2024-04-24 64/week @ 2024-05-01 83/week @ 2024-05-08 108/week @ 2024-05-15 83/week @ 2024-05-22 100/week @ 2024-05-29 128/week @ 2024-06-05 60/week @ 2024-06-12 98/week @ 2024-06-19 22/week @ 2024-06-26

每月329 次下载
schemat 中使用

无许可

31KB
808

mfmt

GitHub Action Crate License

Rust中的元格式化库。

mfmt 是一个受 go fmt 启发的Rust语言格式化库。它旨在无需配置,并对样式慷慨。它只关注对齐缩进。

此库用于以下项目。

安装

cargo +nightly add mfmt

示例

#![feature(allocator_api)]

use indoc::indoc;
use mfmt::{Builder, format, FormatOptions, line};
use std::alloc::Global;

let builder = Builder::new(Global);
let mut string = String::new();

format(
    &builder.sequence([
        "{".into(),
        builder.indent(builder.sequence([line(), "foo".into(), line(), "bar".into()])),
        line(),
        "}".into(),
    ]),
    &mut string,
    FormatOptions::new(4),
)
.unwrap();

assert_eq!(
    string,
    indoc!(
        "
        {
            foo
            bar
        }
        "
    )
    .trim(),
);

技术笔记

与 Wadler 的算法或一些其他格式化器(如 prettier)不同,mfmt 不会在给定源代码的情况下搜索最佳格式。例如,我们没有任何“分组”组合器。相反,我们更愿意给格式化器提供信息,以重建原始源代码中可用的“最佳”格式。

参考文献

许可证

无许可证

无运行时依赖项