]> git.lizzy.rs Git - rust.git/blobdiff - src/libcore/fmt/mod.rs
Auto merge of #26698 - alexcrichton:char-fmt, r=huonw
[rust.git] / src / libcore / fmt / mod.rs
index 35dea6d15f0e9cef79a5df1324e16d345064ab82..f735ed7b78b17b5babe8723ecf6a5720dac2c5a7 100644 (file)
@@ -983,7 +983,14 @@ fn fmt(&self, f: &mut Formatter) -> Result {
 #[stable(feature = "rust1", since = "1.0.0")]
 impl Display for char {
     fn fmt(&self, f: &mut Formatter) -> Result {
-        f.write_char(*self)
+        if f.width.is_none() && f.precision.is_none() {
+            f.write_char(*self)
+        } else {
+            let mut utf8 = [0; 4];
+            let amt = self.encode_utf8(&mut utf8).unwrap_or(0);
+            let s: &str = unsafe { mem::transmute(&utf8[..amt]) };
+            f.pad(s)
+        }
     }
 }