Ogeon

@Ogeon@programming.dev
1 Post – 12 Comments
Joined 11 months ago

It's useful for keeping track of your mental gymnastics.

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.

1 more...

Got myself a proper hiking backpack. An Osprey Exos 58L. Shifting much of the weight to the hips makes a massive difference and my back was very happy!

1 more...

Zooming in? In this economy?!

That's definitely part of "the deal" with MIT and Apache. The other end of it is that they shouldn't really expect to get anything more than what the authors are willing to give.

Simple features are often complex to make, and complex features are often way too simple to make.

To make things worse, that teapot doesn't have a bottom surface.

3 more...

I considered the smaller one at first, but decided to take the larger one and use the compression straps to keep it tight when packing a smaller volume. It doesn't feel as bulky as I thought it would at first.

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.

Also the Swedish classic "glida in på en räkmacka" ((to) slide in on a shrimp sandwich), which basically means to end up somewhere (location, career, situation) without any difficulties. The shrimp sandwich symbolizes a life without difficulties or in some luxury.

Then there's also "halka in på ett bananskal" ((to) slip in on a banana peel), which is similar to the above, but not always favorable and you don't have any plan or preparation. You just winged it or it just happened by accident.

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.

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.