From bc4b529a0ccec4acb47549fe08c327155eafba0a Mon Sep 17 00:00:00 2001 From: thewh1teagle <61390950+thewh1teagle@users.noreply.github.com> Date: Tue, 23 Apr 2024 03:04:40 +0300 Subject: [PATCH] feat: implement serialize for report --- eyre/Cargo.toml | 2 ++ eyre/src/error.rs | 3 +++ eyre/src/error/serialize.rs | 11 +++++++++++ 3 files changed, 16 insertions(+) create mode 100644 eyre/src/error/serialize.rs diff --git a/eyre/Cargo.toml b/eyre/Cargo.toml index 1085cbb..1d1d7e0 100644 --- a/eyre/Cargo.toml +++ b/eyre/Cargo.toml @@ -17,11 +17,13 @@ default = ["anyhow", "auto-install", "track-caller"] anyhow = [] auto-install = [] track-caller = [] +serialize = ["dep:serde"] [dependencies] indenter = { workspace = true } once_cell = { workspace = true } pyo3 = { version = "0.20", optional = true, default-features = false } +serde = { version = "1.0.198", optional = true } [dev-dependencies] futures = { version = "0.3", default-features = false } diff --git a/eyre/src/error.rs b/eyre/src/error.rs index d6e3d5d..69ea2b6 100644 --- a/eyre/src/error.rs +++ b/eyre/src/error.rs @@ -909,5 +909,8 @@ impl AsRef for Report { } } +#[cfg(feature = "serialize")] +mod serialize; + #[cfg(feature = "pyo3")] mod pyo3_compat; diff --git a/eyre/src/error/serialize.rs b/eyre/src/error/serialize.rs new file mode 100644 index 0000000..6098ec5 --- /dev/null +++ b/eyre/src/error/serialize.rs @@ -0,0 +1,11 @@ +use crate::Report; +use serde::{ser::Serializer, Serialize}; + +impl Serialize for Report { + fn serialize(&self, serializer: S) -> std::result::Result + where + S: Serializer, + { + serializer.serialize_str(self.to_string().as_ref()) + } +}