aboutsummaryrefslogtreecommitdiff
path: root/crates/paths
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-06-19 14:07:32 +0100
committerAleksey Kladov <[email protected]>2020-06-19 14:07:32 +0100
commitb9f3c5d585ee266f0fd5db77c2a3f331a0bddf2d (patch)
treedae453e237a54c1a4e86634b71fae8890e850796 /crates/paths
parent902a9c6da7939abec74bb4e4be9d1d16dfb15daa (diff)
Speedup VFS::partition
The task of `partition` function is to bin the flat list of paths into disjoint filesets. Ideally, it should be incremental -- each new file should be added to a specific fileset. However, preliminary measurnments show that it is actually fast enough if we just optimize this to use a binary search instead of a linear scan.
Diffstat (limited to 'crates/paths')
-rw-r--r--crates/paths/src/lib.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/crates/paths/src/lib.rs b/crates/paths/src/lib.rs
index c7ce0c42f..190c50913 100644
--- a/crates/paths/src/lib.rs
+++ b/crates/paths/src/lib.rs
@@ -2,7 +2,7 @@
2//! relative paths. 2//! relative paths.
3use std::{ 3use std::{
4 convert::{TryFrom, TryInto}, 4 convert::{TryFrom, TryInto},
5 ops, 5 io, ops,
6 path::{Component, Path, PathBuf}, 6 path::{Component, Path, PathBuf},
7}; 7};
8 8
@@ -46,6 +46,9 @@ impl TryFrom<&str> for AbsPathBuf {
46} 46}
47 47
48impl AbsPathBuf { 48impl AbsPathBuf {
49 pub fn canonicalized(path: &Path) -> io::Result<AbsPathBuf> {
50 path.canonicalize().map(|it| AbsPathBuf::try_from(it).unwrap())
51 }
49 pub fn as_path(&self) -> &AbsPath { 52 pub fn as_path(&self) -> &AbsPath {
50 AbsPath::new_unchecked(self.0.as_path()) 53 AbsPath::new_unchecked(self.0.as_path())
51 } 54 }