chloro 0.6.4

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+ }, × 65+ } × 65+ } × 52

Top 20 Most Impacted Files

Rank Size Rank Diff Rank Impact + - File
1 9 1 42.8% 1,606 3,751 rust_analyzer/src_config
2 2 17 2.2% 241 11,083 ide/src_hover_tests
3 4 9 4.7% 281 6,011 ide_assists/src_handlers_extract_function
4 3 14 3.9% 247 6,390 hir/src_lib
5 16 4 15.1% 445 2,950 rust_analyzer/src_lsp_to_proto
6 7 12 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.1% 388 2,263 hir_ty/src_next_solver_interner
9 8 32 4.8% 180 3,758 ide/src_rename
10 94 3 41.4% 465 1,124 ide/src_navigation_target
11 1 516 0.1% 12 19,633 ide_db/src_generated_lints
12 47 11 15.0% 260 1,739 ide_assists/src_handlers_auto_import
13 76 7 27.3% 348 1,277 hir_def/src_lib
14 14 42 5.3% 160 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 49 4.9% 149 3,018 ide/src_references
17 20 40 6.6% 167 2,534 ide_assists/src_handlers_extract_variable
18 23 37 6.9% 172 2,506 rust_analyzer/src_handlers_request
19 151 6 42.5% 349 821 rust_analyzer/tests_slow-tests_ratoml
20 12 81 3.6% 115 3,237 ide_completion/src_render

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.