23 releases
Uses new Rust 2024
| 0.4.2 | Sep 20, 2025 |
|---|---|
| 0.4.1 | Sep 19, 2025 |
| 0.4.0 | Apr 22, 2025 |
| 0.3.11 | Apr 22, 2025 |
| 0.1.4 | Jul 13, 2023 |
#88 in Value formatting
677 downloads per month
Used in schemat
32KB
808 lines
mfmt
Meta formatter library in Rust.
mfmt is a language formatter library written in Rust inspired by go fmt. It's designed to be configuration-free and generous about styling. It simply focuses on aligning indentations.
This library is used in the following projects.
Install
cargo add mfmt
Examples
use bumpalo::Bump;
use indoc::indoc;
use mfmt::{Builder, format, FormatOptions, line};
let allocator = Bump::new();
let builder = Builder::new(&allocator);
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(),
);
Technical notes
Unlike the Wadler's algorithm or some other formatters like prettier, mfmt does not search the best format given source codes. For example, we do not have any "group" combinator. Instead, we rather give a formatter information to reconstruct the "best" format that is available in the original source codes.
References
License
Dependencies
~270KB