All Failures Collected
Unlike if/throw validation, every rule is always evaluated — all failures surface together:
if (!result.IsSuccess)
{
foreach (var error in result.Errors)
Console.WriteLine($"{error.Message}");
// Outputs all failures in one pass
}