File tree Expand file tree Collapse file tree 2 files changed +17
-4
lines changed Expand file tree Collapse file tree 2 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -731,6 +731,13 @@ impl<'a> Formatter<'a> {
731731 self . buf . write_str ( data)
732732 }
733733
734+ /// Writes a `char` to the underlying buffer contained within this
735+ /// formatter.
736+ #[ stable( feature = "fmt_write_char" , since = "1.1.0" ) ]
737+ pub fn write_char ( & mut self , c : char ) -> Result {
738+ self . buf . write_char ( c)
739+ }
740+
734741 /// Writes some formatted information into this instance
735742 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
736743 pub fn write_fmt ( & mut self , fmt : Arguments ) -> Result {
@@ -965,10 +972,7 @@ impl Debug for char {
965972#[ stable( feature = "rust1" , since = "1.0.0" ) ]
966973impl Display for char {
967974 fn fmt ( & self , f : & mut Formatter ) -> Result {
968- let mut utf8 = [ 0 ; 4 ] ;
969- let amt = self . encode_utf8 ( & mut utf8) . unwrap_or ( 0 ) ;
970- let s: & str = unsafe { mem:: transmute ( & utf8[ ..amt] ) } ;
971- Display :: fmt ( s, f)
975+ f. write_char ( * self )
972976 }
973977}
974978
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ use std::usize;
2121struct A ;
2222struct B ;
2323struct C ;
24+ struct D ;
2425
2526impl fmt:: LowerHex for A {
2627 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
@@ -37,6 +38,13 @@ impl fmt::Display for C {
3738 f. pad_integral ( true , "☃" , "123" )
3839 }
3940}
41+ impl fmt:: Binary for D {
42+ fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
43+ try!( f. write_str ( "aa" ) ) ;
44+ try!( f. write_char ( '☃' ) ) ;
45+ f. write_str ( "bb" )
46+ }
47+ }
4048
4149macro_rules! t {
4250 ( $a: expr, $b: expr) => { assert_eq!( $a, $b) }
@@ -90,6 +98,7 @@ pub fn main() {
9098 t ! ( format!( "{foo_bar}" , foo_bar=1 ) , "1" ) ;
9199 t ! ( format!( "{}" , 5 + 5 ) , "10" ) ;
92100 t ! ( format!( "{:#4}" , C ) , "☃123" ) ;
101+ t ! ( format!( "{:b}" , D ) , "aa☃bb" ) ;
93102
94103 let a: & fmt:: Debug = & 1 ;
95104 t ! ( format!( "{:?}" , a) , "1" ) ;
You can’t perform that action at this time.
0 commit comments