mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 21:16:44 +00:00 
			
		
		
		
	 7d1de7f994
			
		
	
	
		7d1de7f994
		
	
	
	
	
		
			
			Rather than writing character at a time, optimise Debug implementation for core::ascii::Char such that it writes the entire representation as with a single write_str call. With that, add tests for Display and Debug implementations.
		
			
				
	
	
		
			29 lines
		
	
	
		
			932 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			932 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use core::ascii::Char;
 | |
| use core::fmt::Write;
 | |
| 
 | |
| /// Tests Display implementation for ascii::Char.
 | |
| #[test]
 | |
| fn test_display() {
 | |
|     let want = (0..128u8).map(|b| b as char).collect::<String>();
 | |
|     let mut got = String::with_capacity(128);
 | |
|     for byte in 0..128 {
 | |
|         write!(&mut got, "{}", Char::from_u8(byte).unwrap()).unwrap();
 | |
|     }
 | |
|     assert_eq!(want, got);
 | |
| }
 | |
| 
 | |
| /// Tests Debug implementation for ascii::Char.
 | |
| #[test]
 | |
| fn test_debug_control() {
 | |
|     for byte in 0..128u8 {
 | |
|         let mut want = format!("{:?}", byte as char);
 | |
|         // `char` uses `'\u{#}'` representation where ascii::char uses `'\x##'`.
 | |
|         // Transform former into the latter.
 | |
|         if let Some(rest) = want.strip_prefix("'\\u{") {
 | |
|             want = format!("'\\x{:0>2}'", rest.strip_suffix("}'").unwrap());
 | |
|         }
 | |
|         let chr = core::ascii::Char::from_u8(byte).unwrap();
 | |
|         assert_eq!(want, format!("{chr:?}"), "byte: {byte}");
 | |
|     }
 | |
| }
 |