diff --git a/src/filesystem.rs b/src/filesystem.rs index 7536f62..e863d43 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -209,7 +209,7 @@ impl EntryList for Vec { } } -pub fn list_roots>(connection: &C) -> Result> { +pub fn list_roots>(connection: &C) -> Result> { let all_directories: Vec = query( connection, Query::SingleQuery(QueryPart::Matches(EntryQuery { @@ -232,6 +232,7 @@ pub fn list_roots>(connection: &C) -> Result>( path: &UPath, ) -> Result> { let entry_addresses = match path.0.len() { - 0 => list_roots(connection)? - .into_iter() - .map(|e| e.entity) - .collect(), + 0 => list_roots(connection)?, _ => { let resolved_path: Vec
= resolve_path(connection, path, false)?; let last = resolved_path.last().unwrap(); @@ -306,7 +304,13 @@ pub fn fetch_or_create_dir>( .filter(|a| parent_has.contains(a)) .collect() } - None => matching_directories, + None => { + let roots = list_roots(connection)?; + matching_directories + .into_iter() + .filter(|a| roots.contains(a)) + .collect() + } }; match valid_directories.len() {