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

Rust

5771 readers
48 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 16 points 7 months ago (1 children)

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

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

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

[–] anlumo@feddit.de 12 points 7 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
});
[–] xav@programming.dev 1 points 7 months ago

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

[–] lambda@programming.dev 1 points 7 months ago

Elegant. Thanks!

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

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

[–] owsei@programming.dev 1 points 7 months ago* (last edited 7 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.