summaryrefslogtreecommitdiff
path: root/rola-cli/src/error/io.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rola-cli/src/error/io.rs')
-rw-r--r--rola-cli/src/error/io.rs12
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]