diff --git a/src/miette_diagnostic.rs b/src/miette_diagnostic.rs index 9863e88..49b5fa6 100644 --- a/src/miette_diagnostic.rs +++ b/src/miette_diagnostic.rs @@ -258,6 +258,27 @@ impl MietteDiagnostic { } } +impl From> for MietteDiagnostic { + fn from(diag: Box) -> Self { + let message = diag.to_string(); + + let code = diag.code().map(|c| c.to_string()); + let severity = diag.severity(); + let help = diag.help().map(|h| h.to_string()); + let url = diag.url().map(|u| u.to_string()); + let labels = diag.labels().map(|l| l.collect::>()); + + MietteDiagnostic { + message, + code, + severity, + help, + url, + labels, + } + } +} + #[cfg(feature = "serde")] #[test] fn test_serialize_miette_diagnostic() {