#[non_exhaustive]pub struct SettingsItem {
pub code: String,
pub label: Text,
pub description: Text,
pub category: Text,
pub order: i32,
pub icon: Option<String>,
pub permission: Option<String>,
pub link: Option<String>,
pub fields: Vec<FormField>,
/* private fields */
}Expand description
A settings model surfaced in the admin: a storage code, a category and
order that place it in the index, and the fields to edit.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.code: StringStorage key. Matches the model’s SettingsModel::CODE.
This is a storage key and never a URL. It is dotted, like the module
identity it derives from, and a dotted identifier in a path is how these
screens spent months at /settings/rainmill.discovery.robots. Where the
screen mounts is SettingsItem::route, resolved at boot through the
module’s namespace like every other contributed screen.
label: TextThe item’s label, description, and category heading, localized at render.
description: Text§category: TextGroup heading in the index.
order: i32Weight within the category (lower sorts first).
icon: Option<String>Icon name shown beside the item in the context sidebar (a Lucide name
such as users or shield). None falls back to a generic glyph.
permission: Option<String>Permission required to edit, enforced by middleware. None means any
authenticated operator.
link: Option<String>When set, the item links to this route (e.g. a resource list) instead of its settings form. Used to place list/form screens (like Administrators) in the settings menu rather than the main menu.
fields: Vec<FormField>Implementations§
Source§impl SettingsItem
impl SettingsItem
Sourcepub fn new(
code: impl Into<String>,
label: impl Into<Text>,
fields: Vec<FormField>,
) -> Self
pub fn new( code: impl Into<String>, label: impl Into<Text>, fields: Vec<FormField>, ) -> Self
A settings screen for code (the model’s SettingsModel::CODE), titled
label, editing fields.
Everything else takes a default and is opted into through a builder method, so a field added later costs existing callers nothing.
Sourcepub fn description(self, text: impl Into<Text>) -> Self
pub fn description(self, text: impl Into<Text>) -> Self
The sentence under the item’s name in the index and sidebar.
Sourcepub fn permission(self, permission: impl Into<String>) -> Self
pub fn permission(self, permission: impl Into<String>) -> Self
The permission required to edit, enforced by middleware.
Trait Implementations§
Source§impl Clone for SettingsItem
impl Clone for SettingsItem
Source§fn clone(&self) -> SettingsItem
fn clone(&self) -> SettingsItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SettingsItem
impl Debug for SettingsItem
Auto Trait Implementations§
impl Freeze for SettingsItem
impl RefUnwindSafe for SettingsItem
impl Send for SettingsItem
impl Sync for SettingsItem
impl Unpin for SettingsItem
impl UnsafeUnpin for SettingsItem
impl UnwindSafe for SettingsItem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more