manual-try-fold Prefer Iterator.tryFold over reducing a propagated Result accumulator Reducing a Result accumulator continues calling the reducer after failure only to propagate the same error again. Instead, you SHOULD call tryFold so iteration stops at the first failed Result. The rule requires propagation to be the reducer's first operation, preserving every observable effect. - Category: performance - Level: warning - Fix: suggestion - Scope: module Reported import { Iterator } from "destack:iter"; function sum(values: Iterator): Result { return values.reduce((result, value) => { const total = result?; Result.ok(total + value) }, Result.ok(0)); } Accepted import { Iterator } from "destack:iter"; function sum(values: Iterator): Result { return values.tryFold(0, (total, value) => Result.ok(total + value)); } Prior art - Clippy ยท manualtryfold language/linter/src/rules/performance/manualtryfold.rs:8