Бітові прапорці (крейт bitflags)
Крейт bitflags корисний для роботи з бітовими флагами.
use bitflags::bitflags;
bitflags! {
/// Прапорці з регістру прапорів UART.
#[repr(transparent)]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
struct Flags: u16 {
/// Очистити для відправки.
const CTS = 1 << 0;
/// Набір даних готовий.
const DSR = 1 << 1;
/// Визначення носія даних.
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;
/// Індикатор кільця.
const RI = 1 << 8;
}
}
- Макрос
bitflags!створює новий тип, щось на кшталтFlags(u16)разом із купою реалізацій методів для отримання та встановлення прапорів.