/// Einfaches Ergebnis-Typ für erwartbare Fehler (kein zusätzliches Paket). sealed class Result { const Result(); const factory Result.success(T value) = Success; const factory Result.failure(E error) = Failure; bool get isSuccess => this is Success; bool get isFailure => this is Failure; /// Wert bei Erfolg, sonst `null`. T? get valueOrNull => switch (this) { Success(:final value) => value, Failure() => null, }; /// Fehler bei Misserfolg, sonst `null`. E? get errorOrNull => switch (this) { Success() => null, Failure(:final error) => error, }; R when({ required R Function(T value) success, required R Function(E error) failure, }) => switch (this) { Success(:final value) => success(value), Failure(:final error) => failure(error), }; } final class Success extends Result { const Success(this.value); final T value; } final class Failure extends Result { const Failure(this.error); final E error; }