如何为代码区域而不是单个项目关闭 rustfmt?

skg*_*nga 3 rust rustfmt

#[rustfmt::skip]允许您在格式化时跳过“代码块”,但这需要skip在每个代码块{}而不是 Clang 样式on/off

考虑这个代码:

fn add(a : i32, b : i32) -> i32 { a + b }
fn sub(a : i32, b : i32) -> i32 { a - b }
Run Code Online (Sandbox Code Playgroud)

rustfmt 将其格式化为:

fn add(a: i32, b: i32) -> i32 {
    a + b
}
fn sub(a: i32, b: i32) -> i32 {
    a - b
}
Run Code Online (Sandbox Code Playgroud)

一个需要两个#[rustfmt::skip]属性而不是单个on/off.

单行函数有一个 rustfmt 选项,但此示例仅用于演示目的。我想控制该地区任何可能的 rustfmt 设置。

jus*_*nas 8

您可以将不想格式化的函数放在一个模块中,用 标记整个模块#[rustfmt::skip],然后用 将项目拉入父模块use

#[rustfmt::skip]
mod unformatted {
    pub fn add(a : i32, b : i32) -> i32 { a + b }
    pub fn sub(a : i32, b : i32) -> i32 { a - b }
}

use unformatted::*;

fn main() {
    dbg!(add(2, 3));
}
Run Code Online (Sandbox Code Playgroud)