Bitflags
Крейт bitflags удобен для работы с битовыми флагами.
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
use bitflags::bitflags;
bitflags! {
/// Флаги из регистра флагов UART.
#[repr(transparent)]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
struct Flags: u16 {
/// Clear to send (готовность к отправке).
const CTS = 1 << 0;
/// Data set ready (готовность набора данных).
const DSR = 1 << 1;
/// Data carrier detect (обнаружение несущей).
const DCD = 1 << 2;
/// UART занят передачей данных.
const BUSY = 1 << 3;
/// Очередь приёма (FIFO) пуста.
const RXFE = 1 << 4;
/// Очередь передачи (FIFO) заполнена.
const TXFF = 1 << 5;
/// Очередь приёма (FIFO) заполнена.
const RXFF = 1 << 6;
/// Очередь передачи (FIFO) пуста.
const TXFE = 1 << 7;
/// Индикатор кольца (ring indicator).
const RI = 1 << 8;
}
}
- Макрос
bitflags!создаёт новый тип-обёртку примерно видаstruct Flags(u16)и набор реализаций методов для чтения и установки флагов.