MenuItems

Struct MenuItems 

Source
pub struct MenuItems(/* private fields */);
Expand description

The set of menu items a board enables.

MenuItem::Status and every Back entry are always present regardless of how the set was built.

Implementations§

Source§

impl MenuItems

Source

pub const fn new() -> Self

Just the entries no board can do without.

Source

pub const fn all() -> Self

Every item this crate defines.

Source

pub const fn with(self, item: MenuItem) -> Self

Enable one more item.

Source

pub const fn without(self, item: MenuItem) -> Self

Disable one item.

The counterpart to with for boards that start from all and name what they cannot do, which is the shorter list on most hardware. Removing every entry of a level removes the way into it too — see level_is_empty — so a board need not also remember to disable the submenu that led there.

Source

pub const fn contains(self, item: MenuItem) -> bool

Source

pub const fn len(self) -> u32

Number of enabled items across the whole tree. Always at least one.

Source

pub const fn is_empty(self) -> bool

Source

pub fn level_is_empty(self, level: Level) -> bool

Whether a level has anything worth entering: any enabled entry that is not its own Back.

A submenu whose entries are all disabled is not shown at all, rather than opening onto a list containing only Back.

Source

pub fn entries(self, level: Level) -> impl Iterator<Item = MenuItem>

The enabled entries of one level, in navigation order.

This is what a renderer draws a list from, so it and step must agree about what is on screen.

Source

pub fn first_after_back(self, level: Level) -> MenuItem

The entry a freshly entered level should highlight: the first one after Back.

Highlighting the exit of a screen the user just asked to enter would waste the press that got them there. A level with nothing but Back falls back to it, though level_is_empty means such a level is never entered.

Trait Implementations§

Source§

impl Clone for MenuItems

Source§

fn clone(&self) -> MenuItems

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MenuItems

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MenuItems

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for MenuItems

Source§

fn eq(&self, other: &MenuItems) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for MenuItems

Source§

impl Eq for MenuItems

Source§

impl StructuralPartialEq for MenuItems

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.