rust-analyzer icon indicating copy to clipboard operation
rust-analyzer copied to clipboard

Code action to transform between `foo_or` and `foo_or_else`

Open A-Walrus opened this issue 2 years ago • 0 comments

The standard library has a bunch of functions with two variants such as unwrap_or and unwrap_or_else, ok_or and ok_or_else. The code action would transform for example: a.unwrap_or(calculate(x)) -> a.unwrap_or_else(|| calculate(x)) a.unwrap_or(calculate()) -> a.unwrap_or_else(calculate) and back a.unwrap_or_else(|| 5) -> a.unwrap_or(5)

same for the other functions with or and or_else variants.

clippy currently has lints that warn against these, and suggests fixes, but it would be nice to have a code action for it :) clippy::or_fun_call clippy::unnecessary_lazy_evaluations

A-Walrus avatar Aug 09 '22 10:08 A-Walrus