diff options
Diffstat (limited to 'rola-cli/src/error/io.rs')
| -rw-r--r-- | rola-cli/src/error/io.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/rola-cli/src/error/io.rs b/rola-cli/src/error/io.rs index d65b765..7f31824 100644 --- a/rola-cli/src/error/io.rs +++ b/rola-cli/src/error/io.rs @@ -3,6 +3,7 @@ use mingling::{ macros::{r_println, renderer}, res::ResExitCode, }; +use serde::Serialize; use crate::locale::errors::I18nIoError; @@ -46,7 +47,7 @@ pub const EC_IOERR_UNEXPECTED_EOF: i32 = 2536; pub const EC_IOERR_OUT_OF_MEMORY: i32 = 2537; pub const EC_IOERR_OTHER: i32 = 2538; -#[derive(Default, Groupped)] +#[derive(Default, Serialize, Groupped)] pub enum ErrorIo { #[default] /// DONT USE IT: This variant is only used to provide a Default derive for ErrorIo @@ -54,7 +55,14 @@ pub enum ErrorIo { /// In normal creation flow, you should directly use ErrorIo::from(/* std::io::Error */) DontUse, - Error(std::io::Error), + Error(#[serde(serialize_with = "serialize_io_error")] std::io::Error), +} + +fn serialize_io_error<S: serde::Serializer>( + err: &std::io::Error, + serializer: S, +) -> Result<S::Ok, S::Error> { + serializer.serialize_str(&format!("{:?}", err)) } #[renderer] |
