New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Include Struct Name in Error Message? #2711
Comments
+, I would like to have a structure name or at least a custom description like in the expecting tag for I have to make a separate field in It would be much more convenient to have one |
@1makarov Thanks for the idea of the separate field in the enum; this might help in some cases. Yet the above error happens in an Enum that contains both those structures, so I can't quickly pinpoint where the error occurs. So, as you said, having the structure name where the error happens will greatly help. |
@MyGodItsFull0fStars You can also use a wrapper like this (If no specific machining is required): use std::any::type_name;
use bytes::Bytes;
#[derive(Debug, thiserror::Error)]
#[error("Failed to parse {struct_name} from JSON: {source}")]
pub struct ParseJsonError {
source: serde_json::Error,
struct_name: String,
}
pub fn parse_json<T>(json: &Bytes) -> Result<T, ParseJsonError>
where
T: serde::de::DeserializeOwned,
{
serde_json::from_slice(json).map_err(|source| ParseJsonError {
source,
struct_name: type_name::<T>().to_string(),
})
} |
@1makarov Thank you so, so much! This is super helpful for my problem! |
I use the
derive[]
variant of Serde to deserialize large files containing various data structures with identical value names.In this issue, I focus on the value name
hidden
(I included two of the structs I use in this issue).In at least one of the data types, the
hidden
value does not always seem available. Hence, I must use anOptional
on that specifichidden
value. As I want this to be as strict as possible, I don't want to change all values to anOptional<bool>
value, but only if necessary.Now, if I try to call the
from_str
function, I encounter the error message:As multiple
struct
data types are used in the files' deserialization, I cannot pinpoint which of them the error is occurring.Is there a way to add a value similar to
tags
to additionally add to error messages?For example, if the mentioned error is encountered for deserializing into a
CategoryEntry
struct, the message could (if possible) look like this:The text was updated successfully, but these errors were encountered: