# Rustfmt configuration
# https://github.com/rust-lang/rustfmt/blob/HEAD/Configurations.md
unstable_features = true

# Rustfmt cannot format long lines inside macros, but this option detects this.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3391)
error_on_line_overflow = true

# Override the default formatting style.
# See https://internals.rust-lang.org/t/running-rustfmt-on-rust-lang-rust-and-other-rust-lang-repositories/8732/81.
use_small_heuristics = "Max"
# This is the default of 2024 edition https://github.com/rust-lang/rust/pull/114764.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3370)
overflow_delimited_expr = true
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/4991).
imports_granularity = "Crate"
imports_indent = "Block"
merge_imports = true
reorder_imports = true
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/5083).
group_imports = "StdExternalCrate" # not available on 2.0+

# Apply rustfmt to more places.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3348).
format_code_in_doc_comments = true

# Automatically fix deprecated style.
use_field_init_shorthand = true
use_try_shorthand = true

# Set the default settings again to always apply the proper formatting without
# being affected by the editor settings.
edition = "2021"
hard_tabs = false
newline_style = "Unix"
tab_spaces = 4
indent_style = "Block"
