chloro 0.6.5

A minimal Rust code formatter
Documentation

chloro

crates.io documentation MIT/Apache-2.0 licensed pre-commit.ci status free of syn Dependencies: 32 Binary Size: 1.6M

chloro is a minimal Rust code formatter.

Motivation

For when you want to format two source files in a consistent way, as fast as possible.

How it works

Using rowan from the rust-analyzer project, which can give both green and red trees. The latter are notoriously expensive, but a formatter should only need the former.

Proof of concept library/CLI to explore a fast and low memory code formatter [WIP], with use cases of code diffing in mind.

Rustfmt Conformance

Diff 'leaderboard' for how well formatting with chloro matches rustfmt, as tested on rust-analyzer's crates:

Top 5 Removed Lines Top 5 Added Lines
- } × 111- }, × 93- ); × 87- /// × 72- }, × 64 +} × 75+/// × 75+ }, × 72+ } × 65+ } × 52

Top 20 Most Impacted Files

Rank Size Rank Diff Rank Impact + - File
1 9 1 42.9% 1,608 3,751 rust_analyzer/src_config
2 3 8 4.9% 314 6,367 hir/src_lib
3 2 17 2.2% 241 11,083 ide/src_hover_tests
4 4 10 4.8% 287 6,011 ide_assists/src_handlers_extract_function
5 16 4 15.1% 444 2,945 rust_analyzer/src_lsp_to_proto
6 7 13 6.6% 256 3,859 ide/src_goto_definition
7 62 2 55.0% 808 1,469 hir_expand/src_builtin_derive_macro
8 31 5 17.4% 393 2,264 hir_ty/src_next_solver_interner
9 8 33 4.8% 182 3,758 ide/src_rename
10 94 3 40.4% 453 1,122 ide/src_navigation_target
11 76 6 27.6% 352 1,275 hir_def/src_lib
12 1 518 0.1% 12 19,633 ide_db/src_generated_lints
13 47 12 15.0% 260 1,739 ide_assists/src_handlers_auto_import
14 14 41 5.4% 164 3,037 ide_assists/src_handlers_generate_function
15 34 20 10.2% 221 2,174 ide_assists/src_handlers_add_missing_match_arms
16 15 46 4.9% 149 3,018 ide/src_references
17 20 35 7.0% 176 2,529 ide_assists/src_handlers_extract_variable
18 23 34 7.1% 177 2,505 rust_analyzer/src_handlers_request
19 12 76 3.7% 120 3,236 ide_completion/src_render
20 45 21 12.0% 216 1,803 ide_assists/src_handlers_generate_delegate_trait

Installation

Add chloro to your Cargo.toml:

[dependencies]
chloro = "0.5"

CLI Installation

  • pre-built binary: cargo binstall chloro (requires cargo-binstall),
  • build from source: cargo install chloro --features cli

License

This project is licensed under either of:

at your option.