39 lines
848 B
Rust
39 lines
848 B
Rust
use std::{collections::HashSet, hash::Hash};
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::dependency::Dependency;
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
|
|
pub struct Package {
|
|
name: String,
|
|
version: semver::Version,
|
|
source: String,
|
|
checksum: String,
|
|
dependencies: HashSet<Dependency>,
|
|
}
|
|
|
|
impl Package {
|
|
pub fn name(&self) -> String {
|
|
self.name.clone()
|
|
}
|
|
}
|
|
|
|
impl Default for Package {
|
|
fn default() -> Self {
|
|
Self {
|
|
name: Default::default(),
|
|
version: semver::Version::new(0, 1, 0),
|
|
source: Default::default(),
|
|
checksum: Default::default(),
|
|
dependencies: Default::default(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Hash for Package {
|
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
|
self.name.hash(state);
|
|
}
|
|
}
|