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

Rust

5953 readers
7 users here now

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

Wormhole

[email protected]

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
[–] [email protected] 7 points 9 months ago* (last edited 9 months ago) (3 children)

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

[–] [email protected] 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
});
[–] [email protected] 1 points 9 months ago

Elegant. Thanks!

[–] [email protected] 1 points 9 months ago

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

[–] [email protected] 2 points 9 months ago

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

[–] [email protected] 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.