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 在 编程语言 中排名
每月329 次下载
在 schemat 中使用
31KB
808 行
mfmt
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
不会在给定源代码的情况下搜索最佳格式。例如,我们没有任何“分组”组合器。相反,我们更愿意给格式化器提供信息,以重建原始源代码中可用的“最佳”格式。