usestd::rc::Rc;usekts_analyze::FlatTable;/// The type of information for this provider.
#[derive(PartialEq)]pubenumKind{
Browser,
Shell,
ShellCd,}/// Metadata about this provider.
pubstructInfo{pubname: String,
pubsize:usize,
pubkind: Kind,
}/// Type of errors, right now keep it simple.
pubtypeError=String;/// Trait to be implemented by all providers.
pubtraitProvider{// Metadata about the provider.
fninfo(&self)->&Info;// Provider specific (and possibly more efficient) search.
fnsearch(&self, term:&str)->Result<Vec<String>, Error>;// Table provider to integrate in bigger pipelines.
fnflat_table(&self)->Result<Rc<FlatTable>, Error>;}