Ah, taking inspiration from late 1940’s literature, I see. Smart!
Ah, taking inspiration from late 1940’s literature, I see. Smart!
Simple features are often complex to make, and complex features are often way too simple to make.
It may be possible to use the Any
trait to “launder” the value by first casting it to &Any
and then downcasting it to the generic type.
let any_value = match tmp_value {
serde_json::Value::Number(x) => x as &Any,
// ...
};
let maybe_value = any_value.downcast_ref::< T >();
I haven’t tested it, so I may have missed something.
Edit: to be clear, this will not actually let you return multiple types, but let the caller decide which type to expect. I assumed this was your goal.
My shower has its own favorite temperature and will slowly readjust itself to it.
Absolutely, I didn’t mean to suggest otherwise. :) I’m just giving a bit of context and perspective from someone who has used it for a while.
Static types aside, the file system has a lot of failure cases, which every language is affected by, and Rust makes them very visible. This can indeed feel like a lot, but it’s an intentional feature and makes more sense in larger projects. I guess the feeling may get amplified by the author’s style of long form posts with a lot of details.
Error handling in practice contains a lot of “let the caller deal with it”, using the ?
operator to pass errors up the call stack. The more verbose options are for when you need to actually handle it.
They interviewed multiple eye witnesses.
To make things worse, that teapot doesn’t have a bottom surface.
I liked this talk on the subject: https://www.deconstructconf.com/2019/dan-abramov-the-wet-codebase
It’s a nice explanation of how it’s less about code that looks the same or currently performs the same operations, and more about what it means.
Reject C, return to assembly. Structured programming is the true oppression our generation never talks about.