1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mod checksum;
mod name;
mod source;
pub use self::{
    checksum::Checksum,
    name::Name,
    source::{SourceId, SourceKind},
};
pub use semver::Version;
use crate::dependency::Dependency;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, PartialOrd, Ord, Serialize)]
pub struct Package {
    
    pub name: Name,
    
    pub version: Version,
    
    pub source: Option<SourceId>,
    
    pub checksum: Option<Checksum>,
    
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub dependencies: Vec<Dependency>,
    
    pub replace: Option<Dependency>,
}