mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 13:51:31 +00:00
make indexing parallel again
This commit is contained in:
parent
b636d23bec
commit
44c8ddf885
2 changed files with 5 additions and 4 deletions
|
@ -3,6 +3,7 @@ use std::{sync::Arc};
|
||||||
use ra_editor::LineIndex;
|
use ra_editor::LineIndex;
|
||||||
use ra_syntax::File;
|
use ra_syntax::File;
|
||||||
use rustc_hash::FxHashSet;
|
use rustc_hash::FxHashSet;
|
||||||
|
use rayon::prelude::*;
|
||||||
use salsa::Database;
|
use salsa::Database;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -105,8 +106,8 @@ impl ReadonlySourceRoot {
|
||||||
.set((), Arc::new(db::FileSet { files: file_ids, resolver }));
|
.set((), Arc::new(db::FileSet { files: file_ids, resolver }));
|
||||||
let file_set = db.file_set();
|
let file_set = db.file_set();
|
||||||
let symbol_index =
|
let symbol_index =
|
||||||
SymbolIndex::for_files(file_set.files.iter() // TODO: par iter
|
SymbolIndex::for_files(file_set.files.par_iter()
|
||||||
.map(|&file_id| (file_id, db.file_syntax(file_id))));
|
.map_with(db.clone(), |db, &file_id| (file_id, db.file_syntax(file_id))));
|
||||||
|
|
||||||
ReadonlySourceRoot { db, symbol_index: Arc::new(symbol_index) }
|
ReadonlySourceRoot { db, symbol_index: Arc::new(symbol_index) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ impl Hash for SymbolIndex {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SymbolIndex {
|
impl SymbolIndex {
|
||||||
pub(crate) fn for_files(files: impl Iterator<Item = (FileId, File)>) -> SymbolIndex {
|
pub(crate) fn for_files(files: impl ParallelIterator<Item = (FileId, File)>) -> SymbolIndex {
|
||||||
let mut symbols = files
|
let mut symbols = files
|
||||||
.flat_map(|(file_id, file)| {
|
.flat_map(|(file_id, file)| {
|
||||||
file_symbols(&file)
|
file_symbols(&file)
|
||||||
|
@ -52,7 +52,7 @@ impl SymbolIndex {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn for_file(file_id: FileId, file: File) -> SymbolIndex {
|
pub(crate) fn for_file(file_id: FileId, file: File) -> SymbolIndex {
|
||||||
SymbolIndex::for_files(::std::iter::once((file_id, file)))
|
SymbolIndex::for_files(rayon::iter::once((file_id, file)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue