mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
Vec -> Box<[_]>
This commit is contained in:
parent
51cc1a4614
commit
76c1a376c3
@ -92,11 +92,11 @@ impl<'a> SymbolCollector<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn finish(self) -> Vec<FileSymbol> {
|
pub fn finish(self) -> Box<[FileSymbol]> {
|
||||||
self.symbols.into_iter().collect()
|
self.symbols.into_iter().collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn collect_module(db: &dyn HirDatabase, module: Module) -> Vec<FileSymbol> {
|
pub fn collect_module(db: &dyn HirDatabase, module: Module) -> Box<[FileSymbol]> {
|
||||||
let mut symbol_collector = SymbolCollector::new(db);
|
let mut symbol_collector = SymbolCollector::new(db);
|
||||||
symbol_collector.collect(module);
|
symbol_collector.collect(module);
|
||||||
symbol_collector.finish()
|
symbol_collector.finish()
|
||||||
|
@ -136,16 +136,13 @@ fn library_symbols(db: &dyn SymbolsDatabase, source_root_id: SourceRootId) -> Ar
|
|||||||
// the module or crate indices for those in salsa unless we need to.
|
// the module or crate indices for those in salsa unless we need to.
|
||||||
.for_each(|module| symbol_collector.collect(module));
|
.for_each(|module| symbol_collector.collect(module));
|
||||||
|
|
||||||
let mut symbols = symbol_collector.finish();
|
Arc::new(SymbolIndex::new(symbol_collector.finish()))
|
||||||
symbols.shrink_to_fit();
|
|
||||||
Arc::new(SymbolIndex::new(symbols))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn module_symbols(db: &dyn SymbolsDatabase, module: Module) -> Arc<SymbolIndex> {
|
fn module_symbols(db: &dyn SymbolsDatabase, module: Module) -> Arc<SymbolIndex> {
|
||||||
let _p = tracing::info_span!("module_symbols").entered();
|
let _p = tracing::info_span!("module_symbols").entered();
|
||||||
|
|
||||||
let symbols = SymbolCollector::collect_module(db.upcast(), module);
|
Arc::new(SymbolIndex::new(SymbolCollector::collect_module(db.upcast(), module)))
|
||||||
Arc::new(SymbolIndex::new(symbols))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn crate_symbols(db: &dyn SymbolsDatabase, krate: Crate) -> Box<[Arc<SymbolIndex>]> {
|
pub fn crate_symbols(db: &dyn SymbolsDatabase, krate: Crate) -> Box<[Arc<SymbolIndex>]> {
|
||||||
@ -228,7 +225,7 @@ pub fn world_symbols(db: &RootDatabase, query: Query) -> Vec<FileSymbol> {
|
|||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct SymbolIndex {
|
pub struct SymbolIndex {
|
||||||
symbols: Vec<FileSymbol>,
|
symbols: Box<[FileSymbol]>,
|
||||||
map: fst::Map<Vec<u8>>,
|
map: fst::Map<Vec<u8>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +250,7 @@ impl Hash for SymbolIndex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl SymbolIndex {
|
impl SymbolIndex {
|
||||||
fn new(mut symbols: Vec<FileSymbol>) -> SymbolIndex {
|
fn new(mut symbols: Box<[FileSymbol]>) -> SymbolIndex {
|
||||||
fn cmp(lhs: &FileSymbol, rhs: &FileSymbol) -> Ordering {
|
fn cmp(lhs: &FileSymbol, rhs: &FileSymbol) -> Ordering {
|
||||||
let lhs_chars = lhs.name.chars().map(|c| c.to_ascii_lowercase());
|
let lhs_chars = lhs.name.chars().map(|c| c.to_ascii_lowercase());
|
||||||
let rhs_chars = rhs.name.chars().map(|c| c.to_ascii_lowercase());
|
let rhs_chars = rhs.name.chars().map(|c| c.to_ascii_lowercase());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user