pub struct RenderCacheKey {
pub content_hash: u64,
pub terminal_width: u16,
pub tool_expanded: bool,
pub tool_density: ToolDensity,
pub show_labels: bool,
pub theme_generation: u64,
}Expand description
Cache key for a single rendered chat message.
Two keys compare equal only when the content, terminal width, theme generation,
and all display flags are identical. Any mismatch causes a cache miss and
re-render. The theme_generation field increments on every theme swap,
forcing a cache miss after the user switches themes so that cached Lines
(which bake in theme Style values) are not reused with stale colours.
§Examples
use zeph_tui::render_cache::RenderCacheKey;
use zeph_config::ToolDensity;
let k1 = RenderCacheKey { content_hash: 1, terminal_width: 80, tool_expanded: false, tool_density: ToolDensity::Inline, show_labels: false, theme_generation: 0 };
let k2 = RenderCacheKey { content_hash: 1, terminal_width: 80, tool_expanded: false, tool_density: ToolDensity::Inline, show_labels: false, theme_generation: 0 };
assert_eq!(k1, k2);Fields§
§content_hash: u64FNV/xxHash of the message content string.
terminal_width: u16Terminal column width at the time of rendering.
tool_expanded: boolWhether the tool-output section is expanded.
tool_density: ToolDensityCurrent tool-output density level.
show_labels: boolWhether source-label badges are shown on assistant messages.
theme_generation: u64Monotonic counter bumped on each theme swap; forces cache miss after a switch.
Trait Implementations§
Source§impl Clone for RenderCacheKey
impl Clone for RenderCacheKey
Source§fn clone(&self) -> RenderCacheKey
fn clone(&self) -> RenderCacheKey
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for RenderCacheKey
Source§impl Debug for RenderCacheKey
impl Debug for RenderCacheKey
impl Eq for RenderCacheKey
Source§impl PartialEq for RenderCacheKey
impl PartialEq for RenderCacheKey
impl StructuralPartialEq for RenderCacheKey
Auto Trait Implementations§
impl Freeze for RenderCacheKey
impl RefUnwindSafe for RenderCacheKey
impl Send for RenderCacheKey
impl Sync for RenderCacheKey
impl Unpin for RenderCacheKey
impl UnsafeUnpin for RenderCacheKey
impl UnwindSafe for RenderCacheKey
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<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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request