Ещё трейты
Мы вывели (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— авто-трейт, но он не реализуется автоматически, потому что для указателей он не реализован.