1use std::fmt::{Display, Formatter, Result};
2
3#[derive(Debug, Clone, Default)]
4pub struct Version {
5 pub major: u32,
6 pub minor: u32,
7 pub patch: u32,
8}
9
10impl Version {
11 pub fn new(major: u32, minor: u32, patch: u32) -> Self {
12 Version {
13 major,
14 minor,
15 patch,
16 }
17 }
18}
19
20impl Display for Version {
21 fn fmt(&self, f: &mut Formatter) -> Result {
22 write!(f, "{}.{}.{}", self.major, self.minor, self.patch)
23 }
24}
25
26pub mod traits {
27 use crate::Version;
28
29 pub trait Pkg {
30 fn pkg_name(&self) -> String;
32
33 fn pkg_version(&self) -> Version;
35 }
36}