139 lines
3.6 KiB
Org Mode
139 lines
3.6 KiB
Org Mode
#+TITLE: Rust format config
|
||
#+INCLUDE: headers
|
||
#+OPTIONS: auto-id:t
|
||
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's Rust format config" />
|
||
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's Rust format config" />
|
||
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the Rust format config file of Phundrak" />
|
||
#+PROPERTY: header-args:toml :tangle ~/.rustfmt.toml :comments link
|
||
#+STARTUP: content
|
||
|
||
* Table of Contents :TOC:noexport:
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-0871ece1-3315-4853-88ee-26b83530b95a
|
||
:END:
|
||
- [[#introduction][Introduction]]
|
||
- [[#general-settings][General settings]]
|
||
- [[#structs-and-enums][Structs and Enums]]
|
||
- [[#comments][Comments]]
|
||
- [[#documentation][Documentation]]
|
||
- [[#whitespace][Whitespace]]
|
||
|
||
* Introduction
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-c2854002-b43e-4d65-83a2-e7cbb96af409
|
||
:END:
|
||
The ~.rustfmt.toml~ file located in the ~$HOME~ directory is a global
|
||
configuration file for Rust’s code formatters, such as ~rustfmt~. In this
|
||
file, you can find how my Rust code is always formatted.
|
||
|
||
* General settings
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-3d97602e-1562-44eb-b673-55b677eda1c2
|
||
:END:
|
||
First, we are using the 2018 edition of Rust.
|
||
#+BEGIN_SRC toml
|
||
edition = "2018"
|
||
#+END_SRC
|
||
|
||
Put single-expression functions on a single line.
|
||
#+BEGIN_SRC toml
|
||
fn_single_line = true
|
||
#+END_SRC
|
||
|
||
Format string literals where necessary.
|
||
#+BEGIN_SRC toml
|
||
format_strings = true
|
||
#+END_SRC
|
||
|
||
Maximum width of each line
|
||
#+BEGIN_SRC toml
|
||
max_width = 80
|
||
#+END_SRC
|
||
|
||
Merge multiple imports into a single nested import.
|
||
#+BEGIN_SRC toml
|
||
merge_imports = true
|
||
#+END_SRC
|
||
|
||
* Structs and Enums
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-a6ec06c9-be62-464e-8b52-59019bbe5f7f
|
||
:END:
|
||
The maximum length of enum variant having discriminant, that gets vertically
|
||
aligned with others. Variants without discriminants would be ignored for the
|
||
purpose of alignment.
|
||
|
||
Note that this is not how much whitespace is inserted, but instead the longest
|
||
variant name that doesn't get ignored when aligning.
|
||
#+BEGIN_SRC toml
|
||
enum_discrim_align_threshold = 20
|
||
#+END_SRC
|
||
|
||
The maximum diff of width between struct fields to be aligned with each other.
|
||
#+BEGIN_SRC toml
|
||
struct_field_align_threshold = 20
|
||
#+END_SRC
|
||
|
||
Reorder impl items. ~type~ and ~const~ are put first, then macros and methods.
|
||
#+BEGIN_SRC toml
|
||
reorder_impl_items = true
|
||
#+END_SRC
|
||
|
||
* Comments
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-d3f4dcf6-c910-4716-a531-a628a53c2858
|
||
:END:
|
||
Convert ~/* */~ comments to ~//~ comments where possible.
|
||
#+BEGIN_SRC toml
|
||
normalize_comments = true
|
||
#+END_SRC
|
||
|
||
Break comments to fit on the line.
|
||
#+BEGIN_SRC toml
|
||
wrap_comments = true
|
||
#+END_SRC
|
||
|
||
Report ~FIXME~ items in comments.
|
||
#+BEGIN_SRC toml
|
||
report_fixme = "Always"
|
||
#+END_SRC
|
||
|
||
Report ~TODO~ items in comments.
|
||
#+BEGIN_SRC toml
|
||
todo = "Always"
|
||
#+END_SRC
|
||
|
||
* Documentation
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-24aa1f8c-02f5-4add-b1af-d406eecfef25
|
||
:END:
|
||
Format code snippet included in doc comments.
|
||
#+BEGIN_SRC toml
|
||
format_code_in_doc_comments = true
|
||
#+END_SRC
|
||
|
||
Convert ~#![doc]~ and ~#[doc]~ attributes to ~//!~ and ~///~ doc comments.
|
||
#+BEGIN_SRC toml
|
||
normalize_doc_attributes = true
|
||
#+END_SRC
|
||
|
||
* Whitespace
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: h-ad416728-7920-49fa-abdc-92cd5ceebc5a
|
||
:END:
|
||
|
||
Use tab characters for indentation, spaces for alignment.
|
||
#+BEGIN_SRC toml
|
||
hard_tabs = false
|
||
#+END_SRC
|
||
|
||
Number of spaces per tab.
|
||
#+BEGIN_SRC toml
|
||
tab_spaces = 4
|
||
#+END_SRC
|
||
|
||
I want newlines to always be Unix style.
|
||
#+BEGIN_SRC toml
|
||
newline_style = "Unix"
|
||
#+END_SRC
|