Skip to main content

SettingsState

Struct SettingsState 

Source
pub struct SettingsState {
Show 40 fields pub pages: Vec<SettingsPage>, pub selected_category: usize, pub selected_item: usize, pub focus: FocusManager<FocusPanel>, pub footer_button_index: usize, pub pending_changes: HashMap<String, Value>, pub visible: bool, pub search_query: String, pub search_active: bool, pub search_results: Vec<SearchResult>, pub selected_search_result: usize, pub search_scroll_offset: usize, pub search_max_visible: usize, pub showing_confirm_dialog: bool, pub confirm_dialog_selection: usize, pub confirm_dialog_hover: Option<usize>, pub showing_reset_dialog: bool, pub reset_dialog_selection: usize, pub reset_dialog_hover: Option<usize>, pub showing_entry_discard_confirm: bool, pub entry_discard_confirm_selection: usize, pub showing_entry_delete_confirm: bool, pub entry_delete_confirm_selection: usize, pub entry_delete_target_name: String, pub entry_delete_target_is_array_item: bool, pub showing_help: bool, pub scroll_panel: ScrollablePanel, pub sub_focus: Option<usize>, pub editing_text: bool, pub hover_position: Option<(u16, u16)>, pub hover_hit: Option<SettingsHit>, pub entry_dialog_stack: Vec<EntryDialogState>, pub target_layer: ConfigLayer, pub layer_sources: HashMap<String, ConfigLayer>, pub pending_deletions: HashSet<String>, pub layout_width: u16, pub item_style: ItemBoxStyle, pub expanded_categories: HashSet<usize>, pub categories_scroll: ScrollablePanel, pub tree_cursor_section: Option<usize>, /* private fields */
}
Expand description

The state of the settings UI

Fields§

§pages: Vec<SettingsPage>

Pages built from categories

§selected_category: usize

Currently selected category index

§selected_item: usize

Currently selected item index within the category

§focus: FocusManager<FocusPanel>

Which panel currently has keyboard focus

§footer_button_index: usize

Selected footer button index (0=Reset, 1=Save, 2=Cancel)

§pending_changes: HashMap<String, Value>

Pending changes (path -> new value)

§visible: bool

Whether the settings panel is visible

§search_query: String

Current search query

§search_active: bool

Whether search is active

§search_results: Vec<SearchResult>

Current search results

§selected_search_result: usize

Selected search result index

§search_scroll_offset: usize

Scroll offset for search results (first visible result index)

§search_max_visible: usize

Maximum number of visible search results (set during render)

§showing_confirm_dialog: bool

Whether the unsaved changes confirmation dialog is showing

§confirm_dialog_selection: usize

Selected option in confirmation dialog (0=Save, 1=Discard, 2=Cancel)

§confirm_dialog_hover: Option<usize>

Hovered option in confirmation dialog (for mouse hover feedback)

§showing_reset_dialog: bool

Whether the reset confirmation dialog is showing

§reset_dialog_selection: usize

Selected option in reset dialog (0=Reset, 1=Cancel)

§reset_dialog_hover: Option<usize>

Hovered option in reset dialog (for mouse hover feedback)

§showing_entry_discard_confirm: bool

Whether the “Discard changes?” prompt is showing over the currently-open entry dialog. Set when the user presses Esc on a dialog that has uncommitted edits; cleared by either button choice.

§entry_discard_confirm_selection: usize

Selection in the entry-discard prompt: 0 = Keep editing, 1 = Discard.

§showing_entry_delete_confirm: bool

Whether the “Delete ?” prompt is showing over the currently-open entry dialog. Set when the user activates the Delete button; deletion only fires once they confirm.

§entry_delete_confirm_selection: usize

Selection in the entry-delete prompt: 0 = Cancel (safe default), 1 = Delete.

§entry_delete_target_name: String

Key being deleted, displayed in the confirm prompt.

§entry_delete_target_is_array_item: bool

True when the entry-delete prompt is targeting an array item. The confirm uses a generic “item” phrasing in this case since a numeric index in entry_delete_target_name would mean nothing to the user.

§showing_help: bool

Whether the help overlay is showing

§scroll_panel: ScrollablePanel

Scrollable panel for settings items

§sub_focus: Option<usize>

Sub-focus index within the selected item (for TextList/Map navigation)

§editing_text: bool

Whether we’re in text editing mode (for TextList controls)

§hover_position: Option<(u16, u16)>

Current mouse hover position (for hover feedback)

§hover_hit: Option<SettingsHit>

Current hover hit result (computed from hover_position and cached layout)

§entry_dialog_stack: Vec<EntryDialogState>

Stack of entry dialogs (for nested editing of Maps/ObjectArrays) The top of the stack (last element) is the currently active dialog.

§target_layer: ConfigLayer

Which configuration layer to save changes to. User layer is the default (global settings). Project layer saves to the current project’s .fresh/config.json.

§layer_sources: HashMap<String, ConfigLayer>

Source layer for each setting path (where the value came from). Maps JSON pointer paths (e.g., “/editor/tab_size”) to their source layer. Values not in this map come from system defaults.

§pending_deletions: HashSet<String>

Paths to be removed from the current layer on save. When a user “resets” a setting, we remove it from the delta rather than setting it to the schema default.

§layout_width: u16

Last known layout width for the body panel. Set during render so input handlers (which run between renders) can recompute scroll math without access to the frame area.

§item_style: ItemBoxStyle

Visual style applied to every item in this state. Toggle with Self::set_item_style to swap between card / flat presentation.

§expanded_categories: HashSet<usize>

Categories whose sections are currently expanded in the left-panel tree view. Only categories with sections.len() > 1 are eligible — a category with zero or one section stays flat.

§categories_scroll: ScrollablePanel

Scroll state for the categories panel itself, separate from the body panel’s scroll_panel. Drives mouse-wheel + page-up/down on the left.

§tree_cursor_section: Option<usize>

Cursor position inside the currently-selected category’s tree row. None = cursor is on the category row itself (the category row shows the > indicator). Some(s) = cursor is on the s-th section row of the current category (that section row shows the > indicator).

Tracked explicitly so it is independent of the body’s scroll position — pressing Right to expand a category keeps the cursor on the category, pressing Down then walks into the sections, and scrolling the body updates this so Up/Down resumes from the section the user is actually looking at.

Implementations§

Source§

impl SettingsState

Source

pub fn new(schema_json: &str, config: &Config) -> Result<Self, Error>

Create a new settings state from schema and current config

Source

pub fn new_with_plugin_schemas( schema_json: &str, config: &Config, plugin_schemas: &HashMap<String, Value>, ) -> Result<Self, Error>

Same as Self::new, plus inject per-plugin config schemas as subcategories of a “Plugin Settings” top-level category. Only enabled plugins with a schema are rendered.

Source

pub fn focus_panel(&self) -> FocusPanel

Get the currently focused panel

Source

pub fn show(&mut self)

Show the settings panel

Source

pub fn hide(&mut self)

Hide the settings panel

Source

pub fn entry_dialog(&self) -> Option<&EntryDialogState>

Get the current entry dialog (top of stack), if any

Source

pub fn entry_dialog_mut(&mut self) -> Option<&mut EntryDialogState>

Get the current entry dialog mutably (top of stack), if any

Source

pub fn has_entry_dialog(&self) -> bool

Check if any entry dialog is open

Source

pub fn current_page(&self) -> Option<&SettingsPage>

Get the currently selected page

Source

pub fn current_page_mut(&mut self) -> Option<&mut SettingsPage>

Get the currently selected page mutably

Source

pub fn topmost_visible_item_index(&self) -> Option<usize>

Index of the item currently sitting at the top of the body viewport, computed from the scroll offset and per-item heights. The left-panel section indicator follows this so scrolling visibly moves the highlight in the tree, not just keyboard navigation.

Source

pub fn current_section_index(&self) -> Option<usize>

Section currently displayed in the body — the section whose item range contains either the focused item or the topmost visible item (whichever is later). Returns None when the page has no sections or when the cursor is above the first section.

Source

pub fn is_category_expandable(&self, cat_idx: usize) -> bool

Whether a category should render with a chevron + be expandable in the tree view. We require strictly more than one section, since one section adds no information beyond the category itself.

Source

pub fn tree_step(&mut self, delta: i32)

Move the cursor in the categories tree by delta rows (positive = down, negative = up). The cursor walks every visible row — both category rows and the section rows under any expanded category — so users can step into discovered sections without leaving the keyboard.

Maps the new row to state:

  • Category row → selected_category = idx, selected_item = 0.
  • Section row → category + first item of that section (same effect as clicking the section).
Source

pub fn auto_expand_current_category(&mut self)

Toggle whether a category is expanded in the tree view. No-op for categories that aren’t expandable (zero or one section). Ensure the currently selected category is expanded in the tree view when it has more than one section. Called on any path that “visits” a category (Up/Down to it, click, search-jump) so the user immediately sees that the category contains sections — they don’t have to remember to press Right.

No-op for non-expandable categories (≤ 1 section). Idempotent.

Source

pub fn toggle_category_expanded(&mut self, cat_idx: usize)

Source

pub fn jump_to_section(&mut self, cat_idx: usize, section_idx: usize)

Jump the body panel to a specific section within a category. The category becomes the selected category, and the body’s selected_item jumps to the section’s first item.

Source

pub fn visible_tree(&self) -> Vec<TreeRow>

Flatten the categories list + currently expanded sections into the row order rendered in the left panel. Single source of truth for rendering, hit-testing, and Up/Down navigation in the tree.

Source

pub fn current_item(&self) -> Option<&SettingItem>

Get the currently selected item

Source

pub fn current_item_mut(&mut self) -> Option<&mut SettingItem>

Get the currently selected item mutably

Source

pub fn can_exit_text_editing(&self) -> bool

Check if the current text field can be exited (valid JSON if required)

Source

pub fn entry_dialog_can_exit_text_editing(&self) -> bool

Check if entry dialog’s current text field can be exited (valid JSON if required)

Source

pub fn select_prev(&mut self)

Move selection up

Source

pub fn select_next(&mut self)

Move selection down

Source

pub fn select_next_page(&mut self)

Move selection down by a page (viewport height worth of items)

Source

pub fn select_prev_page(&mut self)

Move selection up by a page (viewport height worth of items)

Source

pub fn toggle_focus(&mut self)

Switch focus between panels: Categories -> Settings -> Footer -> Categories

Source

pub fn toggle_focus_backward(&mut self)

Switch focus to the previous panel: Categories <- Settings <- Footer <- Categories

Source

pub fn set_item_style(&mut self, style: ItemBoxStyle)

Toggle the visual style applied to every item.

Style is cached per-item so the ScrollItem::height(width) trait impl can compute the correct height without taking a style parameter; this method propagates the change to every item across every page in one pass. Recomputes the scroll panel content height too, since heights just changed.

Source

pub fn ensure_visible(&mut self)

Ensure the selected item is visible in the viewport.

Source

pub fn set_pending_change(&mut self, path: &str, value: Value)

Record a pending change for a setting

Source

pub fn has_changes(&self) -> bool

Check if there are unsaved changes

Source

pub fn apply_changes(&self, config: &Config) -> Result<Config, Error>

Apply pending changes to a config

Source

pub fn discard_changes(&mut self)

Discard all pending changes

Source

pub fn set_target_layer(&mut self, layer: ConfigLayer)

Set the target layer for saving changes.

Source

pub fn cycle_target_layer(&mut self)

Cycle through writable layers: User -> Project -> Session -> User

Source

pub fn target_layer_name(&self) -> &'static str

Get a display name for the current target layer.

Source

pub fn set_layer_sources(&mut self, sources: HashMap<String, ConfigLayer>)

Set the layer sources map (called by Editor when opening settings). This also rebuilds pages to update modified indicators.

Source

pub fn set_status_bar_tokens(&mut self, tokens: HashMap<String, String>)

Refresh the snapshot of plugin-registered status-bar tokens (called by Editor when opening settings).

Source

pub fn get_layer_source(&self, path: &str) -> ConfigLayer

Get the source layer for a setting path. Returns the layer where this value was defined, or System if it’s the default.

Source

pub fn layer_source_label(layer: ConfigLayer) -> &'static str

Get a short label for a layer source (for UI display).

Source

pub fn reset_focused_entry_field(&mut self)

Reset the current item by removing it from the target layer.

NEW SEMANTICS: Instead of setting to schema default, we remove the value from the current layer’s delta. The value then falls back to inherited (from lower-precedence layers) or to the schema default.

Only items defined in the target layer can be reset. Reset the focused entry-dialog field to its schema default.

Per-field counterpart of [reset_current_to_default], scoped to the active entry dialog rather than the main settings page. Skips read-only / non-modified / no-default fields. The dialog itself becomes dirty (user_edited = true) so the title flips to • modified, signalling that the parent still owes a save.

Source

pub fn reset_current_to_default(&mut self)

Source

pub fn set_current_to_null(&mut self)

Set the current nullable setting to null (inherit value).

This explicitly sets the value to null in the current layer, indicating that the setting should be inherited rather than overridden. Only applies to nullable settings that are not currently null.

Source

pub fn clear_current_category(&mut self)

Clear a nullable category by setting its path to null and updating all items.

This sets the category’s root path (e.g., /fallback) to null in the target layer, effectively removing the entire section. All items within the category are marked as null/inherited.

Source

pub fn current_category_has_values(&self) -> bool

Check if any items in the current nullable category have non-null values.

Source

pub fn on_value_changed(&mut self)

Handle a value change from user interaction

Source

pub fn update_focus_states(&mut self)

Update focus states for rendering

Start search mode

Cancel search mode

Source

pub fn set_search_query(&mut self, query: String)

Update search query and refresh results

Source

pub fn search_push_char(&mut self, c: char)

Add a character to the search query

Source

pub fn search_pop_char(&mut self)

Remove the last character from the search query

Source

pub fn search_prev(&mut self)

Navigate to previous search result

Source

pub fn search_next(&mut self)

Navigate to next search result

Source

pub fn search_scroll_up(&mut self, delta: usize) -> bool

Scroll search results up by delta items

Source

pub fn search_scroll_down(&mut self, delta: usize) -> bool

Scroll search results down by delta items

Source

pub fn search_scroll_to_ratio(&mut self, ratio: f32) -> bool

Scroll search results to a ratio (0.0 = top, 1.0 = bottom)

Source

pub fn jump_to_search_result(&mut self)

Jump to the currently selected search result

Source

pub fn current_search_result(&self) -> Option<&SearchResult>

Get the currently selected search result

Source

pub fn show_confirm_dialog(&mut self)

Show the unsaved changes confirmation dialog

Source

pub fn hide_confirm_dialog(&mut self)

Hide the confirmation dialog

Source

pub fn confirm_dialog_next(&mut self)

Move to next option in confirmation dialog

Source

pub fn confirm_dialog_prev(&mut self)

Move to previous option in confirmation dialog

Source

pub fn toggle_help(&mut self)

Toggle the help overlay

Source

pub fn hide_help(&mut self)

Hide the help overlay

Source

pub fn showing_entry_dialog(&self) -> bool

Check if the entry dialog is showing

Source

pub fn open_entry_dialog(&mut self)

Open the entry dialog for the currently focused map entry

Source

pub fn open_add_entry_dialog(&mut self)

Open entry dialog for adding a new entry (with empty key)

Source

pub fn open_add_array_item_dialog(&mut self)

Open dialog for adding a new array item

Source

pub fn open_edit_array_item_dialog(&mut self)

Open dialog for editing an existing array item

Source

pub fn close_entry_dialog(&mut self)

Close the entry dialog without saving (pops from stack)

Source

pub fn open_nested_entry_dialog(&mut self)

Open a nested entry dialog for a Map or ObjectArray field within the current dialog

This enables recursive editing: if a dialog field is itself a Map or ObjectArray, pressing Enter will open a new dialog on top of the stack for that nested structure.

Source

pub fn save_entry_dialog(&mut self)

Save the entry dialog and apply changes

Automatically detects whether this is a Map or ObjectArray dialog and handles saving appropriately.

Source

pub fn request_entry_delete_confirm(&mut self)

Delete the entry from the map and close the dialog Pop the “Delete ?” confirmation prompt. The actual delete only fires once the user confirms via the prompt. Cancel (selection 0) is the safe default, so a misplaced Tab+Enter on the Delete button no longer destroys data.

Source

pub fn delete_entry_dialog(&mut self)

Source

pub fn max_scroll(&self) -> u16

Get the maximum scroll offset for the current page (in rows)

Source

pub fn scroll_up(&mut self, delta: usize) -> bool

Scroll up by a given number of rows Returns true if the scroll offset changed

Source

pub fn scroll_down(&mut self, delta: usize) -> bool

Scroll down by a given number of rows Returns true if the scroll offset changed

Source

pub fn scroll_to_ratio(&mut self, ratio: f32) -> bool

Scroll to a position based on a ratio (0.0 to 1.0) Returns true if the scroll offset changed

Source

pub fn is_number_control(&self) -> bool

Start text editing mode for TextList, Text, or Map controls Check if the current control is a number input

Source

pub fn start_editing(&mut self)

Source

pub fn stop_editing(&mut self)

Stop text editing mode

Source

pub fn is_editable_control(&self) -> bool

Check if the current item is editable (TextList, DualList, Text, Map, or Json)

Source

pub fn is_editing_json(&self) -> bool

Check if currently editing a JSON control

Source

pub fn text_insert(&mut self, c: char)

Insert a character into the current editable control

Source

pub fn text_insert_str(&mut self, s: &str)

Insert a whole string into the current editable control. Mirrors Self::text_insert but inserts in one pass so single-line text fields can flatten embedded newlines (used by the paste path).

Source

pub fn paste_into_focused_text(&mut self, text: &str) -> bool

Route a paste to whichever Settings text input currently has focus — the entry-dialog field when an entry dialog is open, otherwise the main-panel control being edited. Returns true when a text field accepted the paste. The bracketed-paste router relies on this so a paste lands in the focused field instead of the buffer behind the dialog (issue #2268).

Source

pub fn text_backspace(&mut self)

Backspace in the current editable control

Source

pub fn text_move_left(&mut self)

Move cursor left in the current editable control

Source

pub fn text_move_right(&mut self)

Move cursor right in the current editable control

Source

pub fn text_focus_prev(&mut self)

Move focus to previous item in TextList/Map (wraps within control)

Source

pub fn text_focus_next(&mut self)

Move focus to next item in TextList/Map (wraps within control)

Source

pub fn text_add_item(&mut self)

Add new item in TextList/Map (from the new item field)

Source

pub fn text_remove_focused(&mut self)

Remove the currently focused item in TextList/Map

Source

pub fn is_editing_dual_list(&self) -> bool

Check if currently editing a DualList control

Source

pub fn with_dual_list_mut<R>( &mut self, item_idx: usize, f: impl FnOnce(&mut DualListState) -> R, ) -> Option<R>

Access the DualList at item_idx in the current page and run f on it. Returns None if the item isn’t a DualList or the index is out of bounds.

Source

pub fn with_current_dual_list_mut<R>( &mut self, f: impl FnOnce(&mut DualListState) -> R, ) -> Option<R>

Access the currently selected DualList and run f on it. Returns None if the current item isn’t a DualList.

Source

pub fn refresh_dual_list_sibling(&mut self)

After changing a DualList, refresh the sibling’s excluded set.

Assumes the sibling setting lives on the same page as the current item. This holds for the current use case (status_bar.left and .right are both flattened into the Editor page under the “Status Bar” section). Cross-category siblings would silently no-op until the next build_pages().

Source

pub fn json_cursor_up(&mut self)

Move cursor up in JSON editor

Source

pub fn json_cursor_down(&mut self)

Move cursor down in JSON editor

Source

pub fn json_insert_newline(&mut self)

Insert newline in JSON editor

Source

pub fn json_delete(&mut self)

Delete character at cursor in JSON editor

Source

pub fn json_exit_editing(&mut self)

Stop JSON editing: commit if valid, revert if invalid

Source

pub fn json_select_all(&mut self)

Select all text in JSON editor

Source

pub fn json_selected_text(&self) -> Option<String>

Get selected text from JSON editor

Source

pub fn json_cursor_up_selecting(&mut self)

Move cursor up with selection in JSON editor

Source

pub fn json_cursor_down_selecting(&mut self)

Move cursor down with selection in JSON editor

Source

pub fn json_cursor_left_selecting(&mut self)

Move cursor left with selection in JSON editor

Source

pub fn json_cursor_right_selecting(&mut self)

Move cursor right with selection in JSON editor

Source

pub fn is_dropdown_open(&self) -> bool

Check if current item is a dropdown with menu open

Source

pub fn dropdown_toggle(&mut self)

Toggle dropdown open/closed

Source

pub fn dropdown_prev(&mut self)

Select previous option in dropdown

Source

pub fn dropdown_next(&mut self)

Select next option in dropdown

Source

pub fn dropdown_home(&mut self)

Jump to first option in dropdown

Source

pub fn dropdown_end(&mut self)

Jump to last option in dropdown

Source

pub fn dropdown_confirm(&mut self)

Confirm dropdown selection (close and record change)

Source

pub fn dropdown_cancel(&mut self)

Cancel dropdown (restore original value and close)

Source

pub fn dropdown_select(&mut self, option_idx: usize)

Select a specific dropdown option by index and confirm

Source

pub fn set_dropdown_hover(&mut self, hover_idx: Option<usize>) -> bool

Set dropdown hover index (for mouse hover indication) Returns true if the hover index changed

Source

pub fn dropdown_scroll(&mut self, delta: i32)

Scroll open dropdown by delta (positive = down, negative = up)

Source

pub fn is_number_editing(&self) -> bool

Check if current item is a number input being edited

Source

pub fn start_number_editing(&mut self)

Start number editing mode

Source

pub fn number_insert(&mut self, c: char)

Insert a character into number input

Source

pub fn number_backspace(&mut self)

Backspace in number input

Source

pub fn number_confirm(&mut self)

Confirm number editing

Source

pub fn number_cancel(&mut self)

Cancel number editing

Source

pub fn number_delete(&mut self)

Delete character forward in number input

Source

pub fn number_move_left(&mut self)

Move cursor left in number input

Source

pub fn number_move_right(&mut self)

Move cursor right in number input

Source

pub fn number_move_home(&mut self)

Move cursor to start of number input

Source

pub fn number_move_end(&mut self)

Move cursor to end of number input

Source

pub fn number_move_left_selecting(&mut self)

Move cursor left selecting in number input

Source

pub fn number_move_right_selecting(&mut self)

Move cursor right selecting in number input

Source

pub fn number_move_home_selecting(&mut self)

Move cursor to start selecting in number input

Source

pub fn number_move_end_selecting(&mut self)

Move cursor to end selecting in number input

Source

pub fn number_move_word_left(&mut self)

Move word left in number input

Source

pub fn number_move_word_right(&mut self)

Move word right in number input

Source

pub fn number_move_word_left_selecting(&mut self)

Move word left selecting in number input

Source

pub fn number_move_word_right_selecting(&mut self)

Move word right selecting in number input

Source

pub fn number_select_all(&mut self)

Select all text in number input

Source

pub fn number_delete_word_backward(&mut self)

Delete word backward in number input

Source

pub fn number_delete_word_forward(&mut self)

Delete word forward in number input

Source

pub fn get_change_descriptions(&self) -> Vec<String>

Get list of pending changes for display

Trait Implementations§

Source§

impl Debug for SettingsState

Source§

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

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

impl InputHandler for SettingsState

Source§

fn handle_key_event( &mut self, event: &KeyEvent, ctx: &mut InputContext, ) -> InputResult

Handle a key event. Returns whether the event was consumed.
Source§

fn is_modal(&self) -> bool

Whether this handler is modal (consumes all unhandled input).
Source§

fn focused_child(&self) -> Option<&dyn InputHandler>

Get the currently focused child handler, if any.
Source§

fn focused_child_mut(&mut self) -> Option<&mut dyn InputHandler>

Get the currently focused child handler mutably, if any.
Source§

fn dispatch_input( &mut self, event: &KeyEvent, ctx: &mut InputContext, ) -> InputResult

Dispatch input through this handler and its children. This is the main entry point - it handles the bubble-up logic.

Auto Trait Implementations§

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> ParallelSend for T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more