Struct SearchRegistry
pub struct SearchRegistry { /* private fields */ }Expand description
The set of providers a search surface draws from. One registry can back a single app (its own providers) or, in the shell, every app’s providers at once for a global Ctrl+K.
Implementations§
§impl SearchRegistry
impl SearchRegistry
pub fn new() -> SearchRegistry
pub fn register( &mut self, provider: Box<dyn SearchProvider>, ) -> &mut SearchRegistry
pub fn register_fn<F>( &mut self, name: impl Into<String>, f: F, ) -> &mut SearchRegistry
pub fn provider_count(&self) -> usize
pub fn provider_names(&self) -> Vec<&str>
pub fn provider_names(&self) -> Vec<&str>
In registration order.
pub fn query(&self, query: &str) -> Vec<SearchResult>
pub fn query(&self, query: &str) -> Vec<SearchResult>
Sorted by descending rank_key; ties keep provider
registration order (a stable sort), so ranking is deterministic.
pub fn query_limited(&self, query: &str, limit: usize) -> Vec<SearchResult>
pub fn query_limited(&self, query: &str, limit: usize) -> Vec<SearchResult>
Bounded cross-provider merge for interactive global search. Providers
stop materialising once their share is full, canonical action aliases
collapse to one row, and only the best limit hits survive.
pub fn query_grouped(&self, query: &str) -> Vec<SearchGroup>
pub fn query_grouped(&self, query: &str) -> Vec<SearchGroup>
Groups appear in the order their best result ranks; within a group, results stay in ranked order.
pub fn query_grouped_capped(
&self,
query: &str,
per_group_cap: usize,
) -> Vec<SearchGroup>
pub fn query_grouped_capped( &self, query: &str, per_group_cap: usize, ) -> Vec<SearchGroup>
Caps each group to per_group_cap results, so no single busy provider
floods the overlay. 0 means uncapped.
Trait Implementations§
§impl Default for SearchRegistry
impl Default for SearchRegistry
§fn default() -> SearchRegistry
fn default() -> SearchRegistry
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for SearchRegistry
impl !RefUnwindSafe for SearchRegistry
impl !Send for SearchRegistry
impl !Sync for SearchRegistry
impl Unpin for SearchRegistry
impl UnsafeUnpin for SearchRegistry
impl !UnwindSafe for SearchRegistry
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> 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>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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.§fn as_any(&self) -> &(dyn Any + 'static)
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.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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.§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>
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§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
The none-equivalent value.