From 6da497c4a50eae0786d266b093fd29b840001b7e Mon Sep 17 00:00:00 2001 From: Jia Chao Date: Wed, 18 Sep 2024 10:22:39 +0800 Subject: [PATCH] update: 0.1.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. RpmInfo epoch 使用 Option 类型存储 2. arch() 返回 Option<&str> Signed-off-by: Jia Chao --- Cargo.toml | 2 +- src/lib.rs | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) 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) }