On Thursday, 1 January 2026 at 17:01:25 UTC, zhade wrote:
Hi, I am trying to fail-fast and need to return "something" that works together with MapResult.

I came up with a solution but wanted to know if its the supposed way to do it.

What I learned is that the lambdas of `map` and `filter` are part of the return type.

`MapResult` does not have an universal empty value. If you want its result to be empty, you need to give it a source range that is also empty. Fortunately, in your case it is easy to do:

```d
auto example_func(bool fail)
{
    auto list = fail? []: someExpensiveOperation();

    return list
        .filter!(a => a != "expensive")
        .map!(a => tuple!("value", "numLetters")(a, a.length));
}
```

You could also iterate the result range until it's empty before returning it, but that's wasting CPU cycles.

Reply via email to