Rustfmt:版本排序

摘要

rustfmt 使用了一种新的排序算法。

详情

Rust 风格指南》包含了 排序规则rustfmt 将这些规则应用于各种场景,例如导入。

先前版本的风格指南和 Rustfmt 通常使用基于 “ASCII 字母顺序” 的方法。在 2024 版本中,这已更改为使用类似于版本排序的算法,该算法按字典顺序比较 Unicode 字符,并在 ASCII 数字比较中提供更好的结果。

例如,对于给定的(未排序)输入

use std::num::{NonZeroU32, NonZeroU16, NonZeroU8, NonZeroU64};
use std::io::{Write, Read, stdout, self};

在之前的版本中,rustfmt 会产生

use std::io::{self, stdout, Read, Write};
use std::num::{NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8};

在 2024 版本中,rustfmt 现在产生

use std::io::{self, Read, Write, stdout};
use std::num::{NonZeroU8, NonZeroU16, NonZeroU32, NonZeroU64};

迁移

可以通过使用 2024 版本运行 cargo fmtrustfmt 来自动应用此更改。有关迁移以及风格版本如何工作的更多信息,请参阅风格版本章节。