Struct SearchResult
pub struct SearchResult {
pub title: String,
pub subtitle: Option<String>,
pub preview: Option<String>,
pub kind: String,
pub action_id: String,
pub icon: Option<Icon>,
pub row: Option<SearchRow>,
pub score: i32,
pub scope_anchor: Option<String>,
}Expand description
One typed hit produced by a SearchProvider.
App-agnostic on purpose: an app fills the display fields (title,
subtitle, kind, icon) and an activation target. New providers should
use SearchResult::for_action or SearchResult::with_action_address to
name an exported resource action. The palette resolves that address against
the current resource tree and sends it through the same operation broker as
every other affordance.
action_id remains public and opaque for compatibility with providers that
predate the resource/action model. Those legacy values are still handed to
the owning widget’s navigation callback when they are activated.
Fields§
§title: StringPrimary line — what the row reads as (e.g. a contact’s display name).
subtitle: Option<String>Optional secondary line rendered dimmer under the title (e.g. an email address, a file path, a command description).
preview: Option<String>Plain-text detail rendered by the shared result surface for the selected or hovered row without changing row geometry.
kind: StringGrouping label, e.g. "Contacts", "Files", "Commands". Rows sharing
a kind are bucketed together under this label in the results overlay,
so a mixed query reads as sectioned groups rather than one flat list.
action_id: StringActivation token. Prefer the canonical encoded ActionAddress made
by for_action or
with_action_address. Any value that is
not tagged as canonical is treated as a legacy opaque navigation id.
A tagged address that is not currently exported is omitted by the
palette rather than gaining authority through the legacy callback.
icon: Option<Icon>Optional leading glyph drawn at the start of the row.
row: Option<SearchRow>What the hit is (a message, a video, a match in a file) and that
row’s slots. None draws the generic row.
score: i32Provider-supplied relevance bias — a nudge, not an override, since the
registry adds a query-match bonus on top. 0 ranks by query match
alone; raise it to float pinned/recent/favourite hits.
scope_anchor: Option<String>Where the hit lies in the app’s anchor path, for scope checks, when
that is not what its action addresses: a contact addressed by its flat
id contact:42 that lies in group:family. None scopes the hit by
its action’s resource (see anchor).
Implementations§
§impl SearchResult
impl SearchResult
pub fn new(
kind: impl Into<String>,
title: impl Into<String>,
action_id: impl Into<String>,
) -> SearchResult
pub fn new( kind: impl Into<String>, title: impl Into<String>, action_id: impl Into<String>, ) -> SearchResult
A result with the three required fields; chain the builders for the rest.
pub fn for_action(
kind: impl Into<String>,
title: impl Into<String>,
address: impl Borrow<ActionAddress>,
) -> SearchResult
pub fn for_action( kind: impl Into<String>, title: impl Into<String>, address: impl Borrow<ActionAddress>, ) -> SearchResult
A result that activates a canonical exported resource action.
This is the preferred constructor for new providers. The address is
encoded into the existing action_id storage so adding canonical
activation does not break providers built against the legacy shape.
pub fn with_action_address(
self,
address: impl Borrow<ActionAddress>,
) -> SearchResult
pub fn with_action_address( self, address: impl Borrow<ActionAddress>, ) -> SearchResult
Replace this hit’s legacy activation id with a canonical action address while retaining its display metadata.
pub fn action_address(&self) -> Option<ActionAddress>
pub fn action_address(&self) -> Option<ActionAddress>
Decode this hit’s canonical action address, if it carries one.
pub fn with_subtitle(self, subtitle: impl Into<String>) -> SearchResult
pub fn with_preview(self, preview: impl Into<String>) -> SearchResult
pub fn with_icon(self, icon: Icon) -> SearchResult
pub fn with_score(self, score: i32) -> SearchResult
pub fn with_row(self, row: SearchRow) -> SearchResult
pub fn with_row(self, row: SearchRow) -> SearchResult
Draw this hit as row (a message, a video, a file hit) instead of
the generic row.
pub fn within(self, anchor: impl Into<String>) -> SearchResult
pub fn within(self, anchor: impl Into<String>) -> SearchResult
Place the hit at anchor in the app’s anchor path for scope checks,
whatever its action addresses: a hit addressed by a flat id
(sheets.cell:B4) lies in the scope its path names (sheet:2), so it
is narrowed without renaming the resource.
Trait Implementations§
§impl Clone for SearchResult
impl Clone for SearchResult
§fn clone(&self) -> SearchResult
fn clone(&self) -> SearchResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for SearchResult
impl Debug for SearchResult
§impl PartialEq for SearchResult
impl PartialEq for SearchResult
impl StructuralPartialEq for SearchResult
Auto Trait Implementations§
impl Freeze for SearchResult
impl !RefUnwindSafe for SearchResult
impl Send for SearchResult
impl Sync for SearchResult
impl Unpin for SearchResult
impl UnsafeUnpin for SearchResult
impl !UnwindSafe for SearchResult
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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