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 como Flags(u16), junto com um monte de implementaçÔes de mĂ©todo para obter e setar flags.