关于rustfmt配置变量块赋值左大括号换行的技术咨询
关于rustfmt配置变量块赋值左大括号换行的技术咨询
嘿,我最近在折腾rustfmt的代码格式化规则时,碰到了个有点挠头的小问题,后来摸索出了解决办法,跟大家分享下:
我一直希望代码里这种块赋值的写法:
let x = { let y = 10; 5 };
能始终保持固定格式——左大括号跟=在同一行,左右大括号保持垂直对齐的结构,不管什么场景都别乱改换行。
最开始我在rustfmt.toml里加了这些配置,结果完全没达到预期:
unstable_features = true brace_style = "AlwaysNextLine"
后来才反应过来,我选的brace_style取值完全搞反了!AlwaysNextLine的作用是强制所有大括号都单独占一行,刚好和我想要的效果背道而驰,难怪配置了没变化。
想要实现目标格式,有两种靠谱的配置方案:
- 方案一:用标准大括号风格配置
把brace_style改成"SameLineWherePossible",这是rustfmt的默认风格之一,它会尽可能让大括号和前面的内容保持在同一行,完美适配这种块赋值的场景:
brace_style = "SameLineWherePossible"
- 方案二:单独针对块表达式配置(需开不稳定特性)
如果只想调整块表达式的大括号风格,不想影响函数、结构体等其他代码的大括号格式,可以在开启unstable_features = true的前提下,用block_brace_style这个专属配置,把它设为"SameLine":
unstable_features = true block_brace_style = "SameLine"
这两种配置都能让rustfmt乖乖保持我想要的块赋值代码格式,亲测有效!
内容来源于stack exchange
相关产品推荐
相关产品推荐

