Більше трейтів

Ми вивели трейт Debug. Також було б корисно реалізувати ще кілька трейтів.

use core::fmt::{self, Write};

impl Write for Uart {
    fn write_str(&mut self, s: &str) -> fmt::Result {
        for c in s.as_bytes() {
            self.write_byte(*c);
        }
        Ok(())
    }
}

// БЕЗПЕКА: `Uart` містить лише покажчик на пам'ять пристрою, до якого
// можна отримати доступ з будь-якого контексту.
unsafe impl Send for Uart {}
  • Реалізація Write дозволяє використовувати макроси write! і writeln! з нашим типом Uart.
  • Запустіть приклад у QEMU за допомогою make qemu_minimal у src/bare-metal/aps/examples.