diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-11-04 15:09:55 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-11-04 16:43:27 +0100 |
commit | b3549535bf00a54910f375a6d7ed547c04f67f1b (patch) | |
tree | 574cf44dbc44d451e18feef0a561399415171d5b /src/log | |
parent | 3ff4fee49963d461fd5dcc896a0ea10ed63759eb (diff) |
Add LogItem::display(), which crafts a displayable object from the LogItem
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/log')
-rw-r--r-- | src/log/filesink.rs | 2 | ||||
-rw-r--r-- | src/log/item.rs | 24 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/log/filesink.rs b/src/log/filesink.rs index 6052254..d48e393 100644 --- a/src/log/filesink.rs +++ b/src/log/filesink.rs @@ -31,7 +31,7 @@ impl FileSink { impl LogSink for FileSink { fn log_item(&mut self, item: LogItem) -> Result<()> { - let s: String = item.try_into()?; + let s = item.display()?; writeln!(self.file, "{}", s)?; Ok(()) } diff --git a/src/log/item.rs b/src/log/item.rs index 1e5d62a..9130045 100644 --- a/src/log/item.rs +++ b/src/log/item.rs @@ -19,17 +19,23 @@ pub enum LogItem { State(Result<String, String>), } -impl TryInto<String> for LogItem { - type Error = anyhow::Error; - - fn try_into(self) -> Result<String> { +impl LogItem { + pub fn display(&self) -> Result<Display> { match self { - LogItem::Line(v) => String::from_utf8(v).map_err(Error::from), - LogItem::Progress(u) => Ok(format!("#BUTIDO:PROGRESS:{}", u)), - LogItem::CurrentPhase(p) => Ok(format!("#BUTIDO:PHASE:{}", p)), - LogItem::State(Ok(s)) => Ok(format!("#BUTIDO:STATE:OK:{}", s)), - LogItem::State(Err(s)) => Ok(format!("#BUTIDO:STATE:ERR:{}", s)), + LogItem::Line(s) => Ok(Display(String::from_utf8(s.to_vec())?)), + LogItem::Progress(u) => Ok(Display(format!("#BUTIDO:PROGRESS:{}", u))), + LogItem::CurrentPhase(p) => Ok(Display(format!("#BUTIDO:PHASE:{}", p))), + LogItem::State(Ok(s)) => Ok(Display(format!("#BUTIDO:STATE:OK:{}", s))), + LogItem::State(Err(s)) => Ok(Display(format!("#BUTIDO:STATE:ERR:{}", s))), } } } +pub struct Display(String); + +impl std::fmt::Display for Display { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { + write!(f, "{}", self.0) + } +} + |