Continue execution even if the Result is Err and return an error later

The "aggregate error" is the hard part here, since giving that a type is awkward. It could be (Option<E1>, Option<E2>, ...), but that's not quite right since (None, None, ...) wouldn't actually be possible. Is there a big reason that all the errors are needed, and not just one of the errors?