Skip to content
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

Open
MyGodItsFull0fStars opened this issue Mar 11, 2024 · 0 comments
Open

Include Struct Name in Error Message? #2711

MyGodItsFull0fStars opened this issue Mar 11, 2024 · 0 comments

Comments

@MyGodItsFull0fStars
Copy link

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 an Optional on that specific hidden value. As I want this to be as strict as possible, I don't want to change all values to an Optional<bool> value, but only if necessary.

Now, if I try to call the from_str function, I encounter the error message:

..called `Result::unwrap()` on an `Err` value: Custom("missing field `@hidden`")
    #[derive(Debug, Deserialize, PartialEq, Eq)]
    pub struct CategoryEntry {
        #[serde(rename = "@name")]
        pub name: String,
        #[serde(rename = "@hidden")]
        pub hidden: bool,                      <-------- could fail here
        #[serde(rename = "@id")]
        pub id: String,
    }

    #[derive(Debug, Deserialize, PartialEq, Eq)]
    pub struct InfoLink {
        #[serde(rename = "@name")]
        pub name: String,
        #[serde(rename = "@hidden")]
         pub hidden: bool,                      <-------- or here?
    }

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:

..called `Result::unwrap()` on an `Err` value: CategoryEntry("missing field `@hidden`")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant