#[non_exhaustive]pub struct AppSession {
pub prompt_prefix: String,
pub history_enabled: bool,
pub history_shell: HistoryShellContext,
pub prompt_timing: DebugTimingState,
pub scope: ReplScopeStack,
pub last_rows: Vec<Row>,
pub last_failure: Option<LastFailure>,
pub result_cache: HashMap<String, Vec<Row>>,
pub cache_order: VecDeque<String>,
pub max_cached_results: usize,
pub config_overrides: ConfigLayer,
/* private fields */
}Expand description
Session-scoped REPL state, caches, and prompt metadata.
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.prompt_prefix: StringPrompt prefix shown before any scope label.
history_enabled: boolWhether history capture is enabled for this session.
history_shell: HistoryShellContextShell-scoped history prefix state shared with the history store.
prompt_timing: DebugTimingStateShared prompt timing badge state.
scope: ReplScopeStackCurrent nested command scope within the REPL.
last_rows: Vec<Row>Rows returned by the most recent successful REPL command.
last_failure: Option<LastFailure>Summary of the most recent failed REPL command.
result_cache: HashMap<String, Vec<Row>>Cached row outputs keyed by command line.
cache_order: VecDeque<String>Eviction order for the row-result cache.
max_cached_results: usizeMaximum number of cached result sets to retain.
config_overrides: ConfigLayerSession-scoped config overrides layered above persisted config.
Implementations§
Source§impl AppSession
impl AppSession
Sourcepub fn builder() -> AppSessionBuilder
pub fn builder() -> AppSessionBuilder
Starts the builder for session-scoped host state.
Prefer this when you want a neutral starting point and do not want the first constructor call to imply that cache sizing is the primary concern.
§Examples
use osp_cli::app::AppSession;
let session = AppSession::builder()
.with_prompt_prefix("demo")
.with_history_enabled(false)
.build();
assert_eq!(session.prompt_prefix, "demo");
assert!(!session.history_enabled);Sourcepub fn with_cache_limit(max_cached_results: usize) -> Self
pub fn with_cache_limit(max_cached_results: usize) -> Self
Creates a session with bounded caches for row and command results.
A requested cache limit of 0 is clamped to 1 so the session never
stores a zero-capacity cache by accident.
§Examples
use osp_cli::app::AppSession;
let session = AppSession::with_cache_limit(4).with_prompt_prefix("demo");
assert_eq!(session.max_cached_results, 4);
assert_eq!(session.prompt_prefix, "demo");Sourcepub fn with_prompt_prefix(self, prompt_prefix: impl Into<String>) -> Self
pub fn with_prompt_prefix(self, prompt_prefix: impl Into<String>) -> Self
Replaces the prompt prefix shown ahead of any scope label.
Sourcepub fn with_history_enabled(self, history_enabled: bool) -> Self
pub fn with_history_enabled(self, history_enabled: bool) -> Self
Enables or disables history capture for this session.
Sourcepub fn with_history_shell(self, history_shell: HistoryShellContext) -> Self
pub fn with_history_shell(self, history_shell: HistoryShellContext) -> Self
Replaces the shell-scoped history context shared with the history store.
Sourcepub fn with_config_overrides(self, config_overrides: ConfigLayer) -> Self
pub fn with_config_overrides(self, config_overrides: ConfigLayer) -> Self
Replaces the session-scoped config overrides layered above persisted config.
Sourcepub fn enter_repl_scope(&mut self, command: impl Into<String>)
pub fn enter_repl_scope(&mut self, command: impl Into<String>)
Enters a nested REPL shell scope and synchronizes history context.
Sourcepub fn leave_repl_scope(&mut self) -> Option<ReplScopeFrame>
pub fn leave_repl_scope(&mut self) -> Option<ReplScopeFrame>
Leaves the current REPL shell scope and synchronizes history context.
Sourcepub fn record_result(&mut self, command_line: &str, rows: Vec<Row>)
pub fn record_result(&mut self, command_line: &str, rows: Vec<Row>)
Stores the latest successful row output and updates the result cache.
Sourcepub fn record_failure(
&mut self,
command_line: &str,
summary: impl Into<String>,
detail: impl Into<String>,
)
pub fn record_failure( &mut self, command_line: &str, summary: impl Into<String>, detail: impl Into<String>, )
Records details about the latest failed command.
Sourcepub fn cached_rows(&self, command_line: &str) -> Option<&[Row]>
pub fn cached_rows(&self, command_line: &str) -> Option<&[Row]>
Returns cached rows for a previously executed command line.
Sourcepub fn record_prompt_timing(
&self,
level: u8,
total: Duration,
parse: Option<Duration>,
execute: Option<Duration>,
render: Option<Duration>,
)
pub fn record_prompt_timing( &self, level: u8, total: Duration, parse: Option<Duration>, execute: Option<Duration>, render: Option<Duration>, )
Updates the prompt timing badge for the most recent command.
Sourcepub fn seed_startup_prompt_timing(&mut self, level: u8, total: Duration)
pub fn seed_startup_prompt_timing(&mut self, level: u8, total: Duration)
Seeds the initial prompt timing badge emitted during startup.
Sourcepub fn sync_history_shell_context(&self)
pub fn sync_history_shell_context(&self)
Synchronizes history context with the current REPL scope.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AppSession
impl RefUnwindSafe for AppSession
impl Send for AppSession
impl Sync for AppSession
impl Unpin for AppSession
impl UnsafeUnpin for AppSession
impl UnwindSafe for AppSession
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more