Bitflags
O crate bitflags é útil para trabalhar com bitflags.
use bitflags::bitflags;
bitflags! {
/// _Flags_ do registrador de _flags_ do UART.
#[repr(transparent)]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
struct Flags: u16 {
/// Limpar para enviar.
const CTS = 1 << 0;
/// Dados prontos para envio.
const DSR = 1 << 1;
/// Dados detectados pelo receptor.
const DCD = 1 << 2;
/// UART ocupado transmitindo dados.
const BUSY = 1 << 3;
/// O FIFO de recebimento está vazio.
const RXFE = 1 << 4;
/// O FIFO de transmissão está cheio.
const TXFF = 1 << 5;
/// O FIFO de recebimento está cheio.
const RXFF = 1 << 6;
/// O FIFO de transmissão está vazio.
const TXFE = 1 << 7;
/// Indicador de anel.
const RI = 1 << 8;
}
}
- A macro
bitflags!cria um newtype algo comoFlags(u16), junto com um monte de implementações de método para obter e setar flags.