Files
rust/library/std/tests
Jonathan Brouwer 3ed70babac Rollup merge of #152865 - asder8215:path_display, r=joboet
Fixed ByteStr not padding within its Display trait when no specific alignment is mentioned

Fixes rust-lang/rust#152804. `Path`'s `Display` uses `ByteStr`'s `Display`, which is where the problem was occurring.

The issue was coming from `ByteStr` implementation of `fmt()` in this particular area:
```rust
        let Some(align) = f.align() else {
            return fmt_nopad(self, f);
        };
        let nchars: usize = self
            .utf8_chunks()
            .map(|chunk| {
                chunk.valid().chars().count() + if chunk.invalid().is_empty() { 0 } else { 1 }
            })
            .sum();
        let padding = f.width().unwrap_or(0).saturating_sub(nchars);
        let fill = f.fill();
        let (lpad, rpad) = match align {
            fmt::Alignment::Left => (0, padding),
            fmt::Alignment::Right => (padding, 0),
            fmt::Alignment::Center => {
                let half = padding / 2;
                (half, half + padding % 2)
            }
        };
```

The docs for the align implies that `Alignment::Left`, `Alignment::Right`, `Alignment::Center` comes from `:<`, `:>`, and `:^` respectively with `align()` returning `None` if neither of those symbols are used in the formatted string. However, while padding is taken care of in the aligned cases, we could still have padding for things that don't use alignment like:
```rust
assert_eq!(format!("{:10}", Path::new("/foo/bar").display()), "/foo/bar  ");
```
We shouldn't write to `f` and return from there when there's no alignment; we should also include any potential padding/filling bytes here.

r? @joboet
2026-02-22 11:31:13 +01:00
..
2025-02-07 16:54:07 +01:00
2024-04-28 18:04:25 -04:00
2024-04-28 18:04:25 -04:00
2025-02-09 17:11:13 +00:00
2024-07-29 08:26:52 +10:00