summaryrefslogtreecommitdiffstats
path: root/util/flashrom_tester/flashrom/src/lib.rs
diff options
context:
space:
mode:
authorEvan Benn <evanbenn@chromium.org>2022-06-17 14:11:18 +1000
committerEdward O'Callaghan <quasisec@chromium.org>2022-07-21 23:29:08 +0000
commitc42ae261ae299ea932403a6081fdfc8aa606e8fb (patch)
tree7466baf892390341a4c3893e568de6ddb4ce1117 /util/flashrom_tester/flashrom/src/lib.rs
parent4342cc0f14e2945d7642e75e44346c13ca23089b (diff)
downloadflashrom-c42ae261ae299ea932403a6081fdfc8aa606e8fb.tar.gz
flashrom-c42ae261ae299ea932403a6081fdfc8aa606e8fb.tar.bz2
flashrom-c42ae261ae299ea932403a6081fdfc8aa606e8fb.zip
flashrom_tester: Refactor Error type
Use a type implementing Error instead of a string for errors. Error implements Display so can be easily converted to a String. This will allow libflashrom to be more easily integrated. BUG=b:230545739 BRANCH=None TEST=cargo test Change-Id: Id166053c7edfd07576e7823692cfa0ea4d438948 Signed-off-by: Evan Benn <evanbenn@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/65277 Reviewed-by: Peter Marheine <pmarheine@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Diffstat (limited to 'util/flashrom_tester/flashrom/src/lib.rs')
-rw-r--r--util/flashrom_tester/flashrom/src/lib.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/util/flashrom_tester/flashrom/src/lib.rs b/util/flashrom_tester/flashrom/src/lib.rs
index fff5863bc..e01acbb9b 100644
--- a/util/flashrom_tester/flashrom/src/lib.rs
+++ b/util/flashrom_tester/flashrom/src/lib.rs
@@ -38,6 +38,8 @@ extern crate log;
mod cmd;
+use std::{error, fmt};
+
pub use cmd::{dut_ctrl_toggle_wp, FlashromCmd};
#[derive(Copy, Clone, PartialEq, Debug)]
@@ -81,7 +83,27 @@ impl FlashChip {
}
}
-pub type FlashromError = String;
+#[derive(Debug, PartialEq)]
+pub struct FlashromError {
+ msg: String,
+}
+
+impl fmt::Display for FlashromError {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", self.msg)
+ }
+}
+
+impl error::Error for FlashromError {}
+
+impl<T> From<T> for FlashromError
+where
+ T: Into<String>,
+{
+ fn from(msg: T) -> Self {
+ FlashromError { msg: msg.into() }
+ }
+}
pub struct ROMWriteSpecifics<'a> {
pub layout_file: Option<&'a str>,