Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ещё трейты

Мы вывели (derive) трейт Debug. Было бы полезно реализовать и несколько других трейтов.

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

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(())
    }
}

// SAFETY: `Uart` содержит только указатель на память устройства, к которой
// можно обратиться из любого контекста.
unsafe impl Send for Uart {}
  • Реализация Write позволяет использовать макросы write! и writeln! с нашим типом Uart.

  • Send — авто-трейт, но он не реализуется автоматически, потому что для указателей он не реализован.