如何让rustfmt允许迭代器适配器在单独的行上?

dkqlctbz  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(85)

在rust rust book中,关于改进迭代器的部分演示了如何将迭代器适配器放在单独的行中,如下所示:

pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
    contents
        .lines()
        .filter(|line| line.contains(query))
        .collect()
}

默认情况下,rustfmt将这些合并到一行中,我在documentation中找不到地方来防止这种情况,如何才能做到呢?
截图:

ccgok5k5

ccgok5k51#

方法链的格式是在一行还是多行上,主要由chain_width属性控制:
适合一条线的链的最大宽度。

  • 默认值:60
  • 可能值:小于或等于max_width指定值的任何正整数
  • 稳定:是

默认情况下,此选项设置为use_small_heuristics提供的max_width的百分比,但直接为chain_width设置的值将优先。
rustfmt不知道类型,所以它对所有的方法调用都一视同仁,你可以在rustfmt.toml中手动减少chain_width,以鼓励它更频繁地使用新行。
也就是说,默认的宽度是60,这里显示的完整表达式至少是62,所以我不知道为什么它会在一行中格式化,当我使用rustfmt和默认的config时,它会保留所显示的格式;在新的线路上。

相关问题