Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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) и набор реализаций методов для чтения и установки флагов.