about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorPiotr Jawniak <sawyer47@gmail.com>2017-03-03 15:42:30 +0100
committerAlex Crichton <alex@alexcrichton.com>2017-03-15 07:50:44 -0700
commitff63866edb511a73eed657a8a4f5c81f1ee5a9bb (patch)
treea9f4fdcbba4d05220796bcc46a2a1dda5f76a90f /src/libcore
parent6f10e2f63de720468e2b4bfcb275e4b90b1f9870 (diff)
downloadrust-ff63866edb511a73eed657a8a4f5c81f1ee5a9bb.tar.gz
rust-ff63866edb511a73eed657a8a4f5c81f1ee5a9bb.zip
Change how the `0` flag works in format!
Now it always implies right-alignment, so that padding zeroes are placed after the sign (if any) and before the digits. In other words, it always takes precedence over explicitly specified `[[fill]align]`. This also affects the '#' flag: zeroes are placed after the prefix (0b, 0o, 0x) and before the digits.

           :05     :<05    :>05    :^05
before   |-0001| |-1000| |-0001| |-0100|
after    |-0001| |-0001| |-0001| |-0001|
          :#05x   :<#05x  :>#05x  :^#05x
before   |0x001| |0x100| |000x1| |0x010|
after    |0x001| |0x001| |0x001| |0x001|

Fixes #39997 [breaking-change]
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/fmt/mod.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs
index 1657342ff6a..fd77201317f 100644
--- a/src/libcore/fmt/mod.rs
+++ b/src/libcore/fmt/mod.rs
@@ -1045,6 +1045,7 @@ impl<'a> Formatter<'a> {
             // is zero
             Some(min) if self.sign_aware_zero_pad() => {
                 self.fill = '0';
+                self.align = rt::v1::Alignment::Right;
                 write_prefix(self)?;
                 self.with_padding(min - width, rt::v1::Alignment::Right, |f| {
                     f.buf.write_str(buf)