this post was submitted on 08 Feb 2024
101 points (100.0% liked)

Rust

5999 readers
4 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] anlumo@feddit.de 17 points 9 months ago (1 children)

Oh, inspect has finally arrived! That will help a ton with debug logging.

[–] lambda@programming.dev 7 points 9 months ago* (last edited 9 months ago) (3 children)

Do you mind explaining? Maybe with the context of another languages equivalent?

[–] anlumo@feddit.de 13 points 9 months ago (2 children)
let bar: Result<T, E> = ...;
let foo = bar.inspect(|value| log::debug("{}", value));

is equivalent to

let bar: Result<T, E> = ...;
let foo = bar.map(|value| {
    log::debug("{}", value);
    value
});
[–] lambda@programming.dev 1 points 9 months ago

Elegant. Thanks!

[–] xav@programming.dev 1 points 9 months ago

Warning: in the first case "value" is actually a shared reference, not a value.

[–] GissaMittJobb@lemmy.ml 2 points 9 months ago

Looks vaguely like Stream::peek from Java, I think? There's an equivalent method in Iterator::inspect.

[–] owsei@programming.dev 1 points 9 months ago* (last edited 9 months ago)

it's just a way to use map with a reference instead of the value, by what I understood.

could be usefull for logging values in a Result so you can see it. However I think you can already do that by just mapping and returning the variable.