use crate::Location;
use std::fmt::Display;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Default, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct Dependency {
pub name: String,
pub location: Location,
pub path: Option<PathBuf>,
pub edition: Option<u16>,
}
impl Display for Dependency {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{} (on {:?})", self.name, self.location)?;
if let Some(path) = &self.path {
write!(f, " (at {})", path.display())?;
}
if let Some(edition) = self.edition {
write!(f, " (edition {edition})")?;
}
Ok(())
}
}