Skip to main content

ThemeChoice

Struct ThemeChoice 

Source
#[non_exhaustive]
pub struct ThemeChoice<'a> { pub id: &'a str, pub name: &'a str, pub variant: ThemeVariant, pub contrast: Contrast, }
Expand description

One theme, as a picker offers it.

Four facts where a Choice has two, and the two extra ones are why this is its own type rather than options with the variant folded into the label. Both are facts the theme layer resolved and neither survives being written into a string: a group is structure and a badge is a second column.

§No unavailable

Choice::unavailable’s counterpart is absent for its own sibling’s reason. A theme that is installed can be picked, and a theme that is not installed is not in the list. There is no third state for a reason to explain.

#[non_exhaustive] from birth, so a new member costs no call site.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§id: &'a str

What is submitted, and what the app stores.

§name: &'a str

What is read.

§variant: ThemeVariant

Which group it belongs to.

§contrast: Contrast

How legible its muted text measured.

Implementations§

Source§

impl<'a> ThemeChoice<'a>

Source

pub const fn new( id: &'a str, name: &'a str, variant: ThemeVariant, contrast: Contrast, ) -> Self

A theme, with everything a picker needs to place and mark it.

Every fact is an argument and none is a builder, which is the opposite of Choice’s arrangement and is deliberate: a theme missing its variant has no group to sit in and a theme missing its tier has no badge to draw, so both are the control rather than embellishments on it. The same reasoning Field::range applies to its bounds.

Trait Implementations§

Source§

impl<'a> Clone for ThemeChoice<'a>

Source§

fn clone(&self) -> ThemeChoice<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for ThemeChoice<'a>

Source§

impl<'a> Debug for ThemeChoice<'a>

Source§

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

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

impl<'a> Eq for ThemeChoice<'a>

Source§

impl<'a> Hash for ThemeChoice<'a>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a> PartialEq for ThemeChoice<'a>

Source§

fn eq(&self, other: &ThemeChoice<'a>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for ThemeChoice<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for ThemeChoice<'a>

§

impl<'a> RefUnwindSafe for ThemeChoice<'a>

§

impl<'a> Send for ThemeChoice<'a>

§

impl<'a> Sync for ThemeChoice<'a>

§

impl<'a> Unpin for ThemeChoice<'a>

§

impl<'a> UnsafeUnpin for ThemeChoice<'a>

§

impl<'a> UnwindSafe for ThemeChoice<'a>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.