3218: Cut some deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2020-02-18 13:46:54 +00:00 committed by GitHub
commit eab80cd961
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 32 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@ crates/*/target
*.log *.log
*.iml *.iml
.vscode/settings.json .vscode/settings.json
cargo-timing*.html

20
Cargo.lock generated
View file

@ -1043,7 +1043,6 @@ version = "0.1.0"
dependencies = [ dependencies = [
"either", "either",
"format-buf", "format-buf",
"fst",
"indexmap", "indexmap",
"insta", "insta",
"itertools", "itertools",
@ -1060,11 +1059,8 @@ dependencies = [
"ra_syntax", "ra_syntax",
"ra_text_edit", "ra_text_edit",
"rand", "rand",
"rayon",
"rustc-hash", "rustc-hash",
"superslice",
"test_utils", "test_utils",
"unicase",
] ]
[[package]] [[package]]
@ -1091,7 +1087,6 @@ dependencies = [
"rustc-hash", "rustc-hash",
"superslice", "superslice",
"test_utils", "test_utils",
"unicase",
] ]
[[package]] [[package]]
@ -1602,15 +1597,6 @@ dependencies = [
"num_cpus", "num_cpus",
] ]
[[package]]
name = "unicase"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [
"version_check",
]
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
version = "0.3.4" version = "0.3.4"
@ -1653,12 +1639,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "version_check"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
[[package]] [[package]]
name = "walkdir" name = "walkdir"
version = "2.3.1" version = "2.3.1"

View file

@ -17,11 +17,7 @@ indexmap = "1.3.0"
itertools = "0.8.0" itertools = "0.8.0"
join_to_string = "0.1.3" join_to_string = "0.1.3"
log = "0.4.5" log = "0.4.5"
rayon = "1.0.2"
fst = { version = "0.3.1", default-features = false }
rustc-hash = "1.0" rustc-hash = "1.0"
unicase = "2.2.0"
superslice = "1.0.0"
rand = { version = "0.7.0", features = ["small_rng"] } rand = { version = "0.7.0", features = ["small_rng"] }
once_cell = "1.2.0" once_cell = "1.2.0"

View file

@ -20,7 +20,6 @@ log = "0.4.5"
rayon = "1.0.2" rayon = "1.0.2"
fst = { version = "0.3.1", default-features = false } fst = { version = "0.3.1", default-features = false }
rustc-hash = "1.0" rustc-hash = "1.0"
unicase = "2.2.0"
superslice = "1.0.0" superslice = "1.0.0"
once_cell = "1.2.0" once_cell = "1.2.0"

View file

@ -21,6 +21,7 @@
//! those FSTs. //! those FSTs.
use std::{ use std::{
cmp::Ordering,
fmt, fmt,
hash::{Hash, Hasher}, hash::{Hash, Hasher},
mem, mem,
@ -187,29 +188,34 @@ impl Hash for SymbolIndex {
impl SymbolIndex { impl SymbolIndex {
fn new(mut symbols: Vec<FileSymbol>) -> SymbolIndex { fn new(mut symbols: Vec<FileSymbol>) -> SymbolIndex {
fn cmp_key<'a>(s1: &'a FileSymbol) -> impl Ord + 'a { fn cmp(lhs: &FileSymbol, rhs: &FileSymbol) -> Ordering {
unicase::Ascii::new(s1.name.as_str()) let lhs_chars = lhs.name.chars().map(|c| c.to_ascii_lowercase());
let rhs_chars = rhs.name.chars().map(|c| c.to_ascii_lowercase());
lhs_chars.cmp(rhs_chars)
} }
#[cfg(not(feature = "wasm"))] #[cfg(not(feature = "wasm"))]
symbols.par_sort_by(|s1, s2| cmp_key(s1).cmp(&cmp_key(s2))); symbols.par_sort_by(cmp);
#[cfg(feature = "wasm")] #[cfg(feature = "wasm")]
symbols.sort_by(|s1, s2| cmp_key(s1).cmp(&cmp_key(s2))); symbols.sort_by(cmp);
let mut builder = fst::MapBuilder::memory(); let mut builder = fst::MapBuilder::memory();
let mut last_batch_start = 0; let mut last_batch_start = 0;
for idx in 0..symbols.len() { for idx in 0..symbols.len() {
if symbols.get(last_batch_start).map(cmp_key) == symbols.get(idx + 1).map(cmp_key) { if let Some(next_symbol) = symbols.get(idx + 1) {
if cmp(&symbols[last_batch_start], next_symbol) == Ordering::Equal {
continue; continue;
} }
}
let start = last_batch_start; let start = last_batch_start;
let end = idx + 1; let end = idx + 1;
last_batch_start = end; last_batch_start = end;
let key = symbols[start].name.as_str().to_lowercase(); let key = symbols[start].name.as_str().to_ascii_lowercase();
let value = SymbolIndex::range_to_map_value(start, end); let value = SymbolIndex::range_to_map_value(start, end);
builder.insert(key, value).unwrap(); builder.insert(key, value).unwrap();