From cbfe6221bd36134a2a5455bcd18627539f3fca1a Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 25 Jan 2019 13:18:13 +0100 Subject: [PATCH] Implement support for Rust's formatting macros --- src/vga_buffer.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index b04e7dad..e07bd866 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -1,3 +1,4 @@ +use core::fmt; use volatile::Volatile; #[allow(dead_code)] @@ -88,7 +89,15 @@ impl Writer { fn new_line(&mut self) {/* TODO */} } +impl fmt::Write for Writer { + fn write_str(&mut self, s: &str) -> fmt::Result { + self.write_string(s); + Ok(()) + } +} + pub fn print_something() { + use core::fmt::Write; let mut writer = Writer { column_position: 0, color_code: ColorCode::new(Color::Yellow, Color::Black), @@ -96,6 +105,6 @@ pub fn print_something() { }; writer.write_byte(b'H'); - writer.write_string("ello "); - writer.write_string("Wörld!"); + writer.write_string("ello! "); + write!(writer, "The numbers are {} and {}", 42, 1.0 / 3.0).unwrap(); }