pub enum HelpTopicBody {
Static(&'static str),
Owned(String),
Compressed {
packed: &'static [u8],
raw_len: usize,
cache: OnceLock<String>,
},
Dynamic(Box<dyn Fn() -> String + Send + Sync>),
}Expand description
Where a topic’s body comes from.
Static— a compile-time&'static str. Used by tests and by any caller registering a topic from a string it already holds.Owned— runtime markdown the registry owns. What a plugin’s pages land as (CR.3): the body crossed the WASM boundary as an ownedStringand there is no'staticto borrow from. Chosen over leaking the string — a leak would survive unload, and a plugin reloaded repeatedly would accumulate a copy of its manual each time.Compressed— deflate-compressed markdown embedded at build time. Every builtin topic is one of these. Decompressed on first render and cached, so a session that never opens:helpnever decompresses anything and the second open of a topic is free.Dynamic— a closure invoked on every open (the seam for LSP / introspection). NOT what plugin pages use: it re-invokes on every open, and a help plugin’s guest is dropped once its bodies are across.
Variants§
Static(&'static str)
Owned(String)
Compressed
Fields
§
cache: OnceLock<String>Decompressed body, filled on first HelpTopicBody::render.
Dynamic(Box<dyn Fn() -> String + Send + Sync>)
Implementations§
Auto Trait Implementations§
impl !Freeze for HelpTopicBody
impl !RefUnwindSafe for HelpTopicBody
impl !UnwindSafe for HelpTopicBody
impl Send for HelpTopicBody
impl Sync for HelpTopicBody
impl Unpin for HelpTopicBody
impl UnsafeUnpin for HelpTopicBody
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
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 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> ⓘ
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