resolve extern crates propertly

This commit is contained in:
Aleksey Kladov 2018-12-09 13:49:54 +03:00
parent e89da32bb7
commit 7784c7a701
4 changed files with 98 additions and 51 deletions

View file

@ -5,7 +5,7 @@ use relative_path::{RelativePath, RelativePathBuf};
use crate::{FileId, FileResolver, SourceRoot, FileResolverImp};
#[derive(Default, Debug)]
#[derive(Default, Debug, Clone)]
pub struct FileMap(Vec<(FileId, RelativePathBuf)>);
impl FileMap {
@ -28,6 +28,11 @@ impl FileMap {
self.iter().map(|(id, _)| id).collect()
}
pub fn file_id(&self, path: &str) -> FileId {
assert!(path.starts_with('/'));
self.iter().find(|(_, p)| p == &path[1..]).unwrap().0
}
fn iter<'a>(&'a self) -> impl Iterator<Item = (FileId, &'a RelativePath)> + 'a {
self.0
.iter()