rustfmt changes code between stable and beta
Manishearth opened this issue ยท 3 comments
With the following code:
fn main() {
let arr = [
("en-001", "", "Hello from ๐บ๏ธ"), // WORLD
("en-002", "", "Hello from ๐"), // AFRICA
];
}
rustfmt considers it correctly formatted under Rust 1.79, but will remove the space before // WORLD
under Rust 1.80-beta3 (and nightly)
This is caused by unicode-width 0.1.13, which changed the predicted widths of a lot of Unicode characters, including emoji. The new version is more accurate, but these changes have not been made in a way that guarantees any kind of stability. The issue I have filed asks for such an API.
In the meantime, should rust/rustfmt pin to 0.1.2?
From the README:
The following list enumerates areas where Rustfmt does not work or where the stability guarantees do not apply (we don't make a distinction between the two because in the future Rustfmt might work on code where it currently does not):
- [โฆ]
- Code containing non-ascii unicode characters
Ah, cool.
agreed not guaranteed to have stable formatting in this particular case but good find and thank you for sharing it
probably worth a mention in the relnotes and blog post for the release though. if that ship hasn't already sailed i can look into it later tonight