callisto_model/
discovery.rs1use std::path::PathBuf;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{DepEdge, Ecosystem, Package, PackageId};
6
7#[derive(Clone, Debug, PartialEq, Eq)]
9pub struct ProjectRoot {
10 pub id: PackageId,
11 pub path: PathBuf,
12 pub ecosystem: Ecosystem,
13}
14
15#[derive(Clone, Debug, PartialEq, Eq)]
17pub struct DeclaredEdge {
18 pub from: PackageId,
19 pub to: PackageId,
20 pub kind: DeclaredEdgeKind,
21 pub via: Option<String>,
22}
23
24#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub enum DeclaredEdgeKind {
28 Build,
29 Development,
30 Peer,
31 Production,
32 Root,
33}
34
35pub trait DependencyResolver: Send + Sync {
37 fn packages(&self) -> impl Iterator<Item = &Package>;
38 fn dependencies_of(&self, id: &PackageId) -> impl Iterator<Item = &DepEdge>;
39 fn dependents_of(&self, id: &PackageId) -> impl Iterator<Item = &DepEdge>;
40 fn diagnostics(&self) -> &[crate::Diagnostic] {
41 &[]
42 }
43}