diff --git a/Cargo.toml b/Cargo.toml index ca53992..3247c21 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "updateinfo-xmlparser" -version = "0.1.1" +version = "0.1.2" edition = "2021" [dependencies] diff --git a/src/lib.rs b/src/lib.rs index 041a7f4..df73064 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -181,7 +181,7 @@ pub struct RpmInfo { // 包名 name: String, // 可能为空 - epoch: String, + epoch: Option, version: String, @@ -198,7 +198,7 @@ impl RpmInfo { pub fn new() -> Self { RpmInfo { name: String::new(), - epoch: String::new(), + epoch: None, version: String::new(), release: String::new(), arch: String::new(), @@ -211,7 +211,12 @@ impl RpmInfo { pub fn set(&mut self, key: &str, value: String) { match key { "name" => self.name = value, - "epoch" => self.epoch = value, + "epoch" => { + self.epoch = match value.parse::() { + Ok(i) => Some(i), + Err(_) => None, + }; + }, "version" => self.version = value, "release" => self.release = value, "arch" => self.arch = value, @@ -225,12 +230,15 @@ impl RpmInfo { &self.name } - pub fn epoch(&self) -> Option<&str> { + pub fn epoch(&self) -> Option { + /* if self.epoch != "" { Some(&self.epoch) } else { None } + */ + self.epoch } pub fn version(&self) -> &str { @@ -241,8 +249,12 @@ impl RpmInfo { &self.release } - pub fn arch(&self) -> &str { - &self.arch + pub fn arch(&self) -> Option<&str> { + if self.arch != "" { + Some(&self.arch) + } else { + None + } } pub fn file(&self) -> &str { @@ -255,7 +267,7 @@ impl RpmInfo { pub fn evr(&self) -> String { if self.epoch().is_some() { - format!("{}:{}-{}", self.epoch, self.version, self.release) + format!("{}:{}-{}", self.epoch.as_ref().unwrap(), self.version, self.release) } else { format!("{}-{}", self.version, self.release) }