File tree Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Original file line number Diff line number Diff line change @@ -892,6 +892,21 @@ impl<'a> Formatter<'a> {
892892 }
893893}
894894
895+ #[ stable( since = "1.2.0" , feature = "formatter_write" ) ]
896+ impl < ' a > Write for Formatter < ' a > {
897+ fn write_str ( & mut self , s : & str ) -> Result {
898+ self . buf . write_str ( s)
899+ }
900+
901+ fn write_char ( & mut self , c : char ) -> Result {
902+ self . buf . write_char ( c)
903+ }
904+
905+ fn write_fmt ( & mut self , args : Arguments ) -> Result {
906+ write ( self . buf , args)
907+ }
908+ }
909+
895910#[ stable( feature = "rust1" , since = "1.0.0" ) ]
896911impl Display for Error {
897912 fn fmt ( & self , f : & mut Formatter ) -> Result {
@@ -965,10 +980,7 @@ impl Debug for char {
965980#[ stable( feature = "rust1" , since = "1.0.0" ) ]
966981impl Display for char {
967982 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)
983+ f. write_char ( * self )
972984 }
973985}
974986
Original file line number Diff line number Diff line change 1515#![ allow( unknown_features) ]
1616#![ feature( box_syntax) ]
1717
18- use std:: fmt;
18+ use std:: fmt:: { self , Write } ;
1919use std:: usize;
2020
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