Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/fetch_crates.rs')
-rw-r--r--crates/ide/src/fetch_crates.rs28
1 files changed, 10 insertions, 18 deletions
diff --git a/crates/ide/src/fetch_crates.rs b/crates/ide/src/fetch_crates.rs
index 916c26855a..d326b7c2cc 100644
--- a/crates/ide/src/fetch_crates.rs
+++ b/crates/ide/src/fetch_crates.rs
@@ -1,13 +1,13 @@
use ide_db::{
- base_db::{CrateOrigin, SourceDatabase},
+ base_db::{CrateOrigin, FileId, SourceDatabase},
FxIndexSet, RootDatabase,
};
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct CrateInfo {
- pub name: String,
- pub version: String,
- pub path: String,
+ pub name: Option<String>,
+ pub version: Option<String>,
+ pub root_file_id: FileId,
}
// Feature: Show Dependency Tree
@@ -22,24 +22,16 @@ pub(crate) fn fetch_crates(db: &RootDatabase) -> FxIndexSet<CrateInfo> {
.iter()
.map(|crate_id| &crate_graph[crate_id])
.filter(|&data| !matches!(data.origin, CrateOrigin::Local { .. }))
- .filter_map(|data| crate_info(data))
+ .map(|data| crate_info(data))
.collect()
}
-fn crate_info(data: &ide_db::base_db::CrateData) -> Option<CrateInfo> {
+fn crate_info(data: &ide_db::base_db::CrateData) -> CrateInfo {
let crate_name = crate_name(data);
- let crate_path = data.crate_root_path.as_ref().map(|p| p.display().to_string());
- if let Some(crate_path) = crate_path {
- let version = data.version.clone().unwrap_or_else(|| "".to_owned());
- Some(CrateInfo { name: crate_name, version, path: crate_path })
- } else {
- None
- }
+ let version = data.version.clone();
+ CrateInfo { name: crate_name, version, root_file_id: data.root_file_id }
}
-fn crate_name(data: &ide_db::base_db::CrateData) -> String {
- data.display_name
- .clone()
- .map(|it| it.canonical_name().to_owned())
- .unwrap_or("unknown".to_string())
+fn crate_name(data: &ide_db::base_db::CrateData) -> Option<String> {
+ data.display_name.as_ref().map(|it| it.canonical_name().to_owned())
}