1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use std::path::{Path, PathBuf}; #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum Edition { Ed2015, Ed2018, } pub trait ProjectModelProvider { fn edition(&self, manifest: &Path) -> Option<Edition>; fn discover_project_manifest(&self, path: &Path) -> Option<PathBuf>; fn search_dependencies( &self, manifest: &Path, search_fn: Box<dyn Fn(&str) -> bool>, ) -> Vec<(String, PathBuf)>; fn resolve_dependency(&self, manifest: &Path, dep_name: &str) -> Option<PathBuf>; }