Inhaltsverzeichnis

std.result

Result- und Option-Typen für explizite Fehlerbehandlung ohne Exceptions — nach dem Vorbild von Rust's Result<T, E> und Option<T>. Konkrete Typen: ResultInt64 (ok/err mit Wert und Fehlercode), ResultVec2, ResultBool, OptionInt64, OptionVec2. Methoden: IsOk/IsErr, Unwrap, UnwrapOr, Map, MapErr, AndThen. Sichere Arithmetik: SafeAdd, SafeSub, SafeMul, SafeDiv, SafeMod und sichere Array-Zugriffe.

Einsatzbereiche: fehlerresistente Bibliotheks-APIs, DO-178C-konforme Programmierung, Funktionen die zwischen Erfolg und Fehler unterscheiden müssen ohne globale Fehlervariablen.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Imports


Konstanten

Name Typ Wert Sichtbarkeit
ERR_NONE int64 0 priv
ERR_UNKNOWN int64 1 priv
ERR_INVALID_INPUT int64 2 priv
ERR_OUT_OF_BOUNDS int64 3 priv
ERR_DIVISION_BY_ZERO int64 4 priv
ERR_OVERFLOW int64 5 priv
ERR_UNDERFLOW int64 6 priv
ERR_PARSE_ERROR int64 7 priv
ERR_NOT_FOUND int64 8 priv
ERR_ALREADY_EXISTS int64 9 priv
ERR_PERMISSION_DENIED int64 10 priv
ERR_IO int64 11 priv
ERR_OUT_OF_MEMORY int64 12 priv
ERR_NOT_IMPLEMENTED int64 13 priv

Typen

ResultInt64 (struct)

Feld Typ
success bool
value int64
error_code int64

Funktionen

Signatur Sichtbarkeit Beschreibung
OkInt64(value: int64): ResultInt64 pub Erzeugt erfolgreiches ResultInt64 mit Wert
ErrInt64(error_code: int64): ResultInt64 pub Erzeugt fehlgeschlagenes ResultInt64 mit Fehlercode
ErrInt64WithValue(error_code: int64, value: int64): ResultInt64 pub Erzeugt Fehler-Result mit Fehlercode und Wert
ResultInt64IsOk(r: ResultInt64): bool pub Prüft ob ResultInt64 erfolgreich ist
ResultInt64IsErr(r: ResultInt64): bool pub Prüft ob ResultInt64 einen Fehler enthält
ResultInt64Unwrap(r: ResultInt64): int64 pub Gibt Wert zurück oder bricht bei Fehler ab
ResultInt64UnwrapOr(r: ResultInt64, fallback: int64): int64 pub Gibt Wert oder Fallback bei Fehler zurück
ResultInt64UnwrapOrElse(r: ResultInt64, default_fn: int64): int64 pub Gibt Wert oder Ergebnis der Fallback-Funktion zurück
ResultInt64Expect(r: ResultInt64, msg: pchar): int64 pub Gibt Wert zurück oder bricht mit Nachricht ab
ResultInt64Error(r: ResultInt64): int64 pub Gibt Fehlercode des Results zurück
ResultInt64Map(r: ResultInt64, fn_val: int64): ResultInt64 pub Transformiert Wert bei Erfolg per Funktion
ResultInt64MapErr(r: ResultInt64, fn_err: int64): ResultInt64 pub Transformiert Fehlercode per Funktion
ResultInt64AndThen(r: ResultInt64, fn_op: int64): ResultInt64 pub Kettet Operationen bei Erfolg weiter

ResultVec2 (struct)

Feld Typ
success bool
value Vec2
error_code int64
Signatur Sichtbarkeit Beschreibung
OkVec2(value: Vec2): ResultVec2 pub Erzeugt erfolgreiches ResultVec2 mit Wert
ErrVec2(error_code: int64): ResultVec2 pub Erzeugt fehlgeschlagenes ResultVec2 mit Fehlercode
ResultVec2IsOk(r: ResultVec2): bool pub Prüft ob ResultVec2 erfolgreich ist
ResultVec2IsErr(r: ResultVec2): bool pub Prüft ob ResultVec2 einen Fehler enthält
ResultVec2Unwrap(r: ResultVec2): Vec2 pub Gibt Vec2-Wert zurück oder bricht bei Fehler ab
ResultVec2UnwrapOr(r: ResultVec2, fallback: Vec2): Vec2 pub Gibt Vec2-Wert oder Fallback bei Fehler zurück
ResultVec2Error(r: ResultVec2): int64 pub Gibt Fehlercode des Vec2-Results zurück

ResultBool (struct)

Feld Typ
success bool
value bool
error_code int64
Signatur Sichtbarkeit Beschreibung
OkBool(value: bool): ResultBool pub Erzeugt erfolgreiches ResultBool mit Wert
ErrBool(error_code: int64): ResultBool pub Erzeugt fehlgeschlagenes ResultBool mit Fehlercode
ResultBoolIsOk(r: ResultBool): bool pub Prüft ob ResultBool erfolgreich ist
ResultBoolIsErr(r: ResultBool): bool pub Prüft ob ResultBool einen Fehler enthält
ResultBoolUnwrap(r: ResultBool): bool pub Gibt Bool-Wert zurück oder bricht bei Fehler ab
ResultBoolError(r: ResultBool): int64 pub Gibt Fehlercode des Bool-Results zurück

OptionInt64 (struct)

Feld Typ
has_value bool
value int64
Signatur Sichtbarkeit Beschreibung
SomeInt64(value: int64): OptionInt64 pub Erzeugt OptionInt64 mit vorhandenem Wert
NoneInt64(): OptionInt64 pub Erzeugt leeres OptionInt64 ohne Wert
OptionInt64IsSome(opt: OptionInt64): bool pub Prüft ob OptionInt64 einen Wert enthält
OptionInt64IsNone(opt: OptionInt64): bool pub Prüft ob OptionInt64 leer ist
OptionInt64Unwrap(opt: OptionInt64): int64 pub Gibt Wert zurück oder bricht bei None ab
OptionInt64UnwrapOr(opt: OptionInt64, fallback: int64): int64 pub Gibt Wert oder Fallback bei None zurück
OptionInt64Map(opt: OptionInt64, fn_val: int64): OptionInt64 pub Transformiert Wert bei Some per Funktion

OptionVec2 (struct)

Feld Typ
has_value bool
value Vec2
Signatur Sichtbarkeit Beschreibung
SomeVec2(value: Vec2): OptionVec2 pub Erzeugt OptionVec2 mit vorhandenem Wert
NoneVec2(): OptionVec2 pub Erzeugt leeres OptionVec2 ohne Wert
OptionVec2IsSome(opt: OptionVec2): bool pub Prüft ob OptionVec2 einen Wert enthält
OptionVec2IsNone(opt: OptionVec2): bool pub Prüft ob OptionVec2 leer ist
OptionVec2Unwrap(opt: OptionVec2): Vec2 pub Gibt Vec2-Wert zurück oder bricht bei None ab
OptionVec2UnwrapOr(opt: OptionVec2, fallback: Vec2): Vec2 pub Gibt Vec2-Wert oder Fallback bei None zurück
ErrorCodeToString(code: int64): pchar pub Gibt deutschen Fehlertext für Fehlercode zurück
SafeAdd(a: int64, b: int64): ResultInt64 pub Addiert zwei Zahlen mit Überlaufprüfung
SafeSub(a: int64, b: int64): ResultInt64 pub Subtrahiert zwei Zahlen mit Unterlaufprüfung
SafeMul(a: int64, b: int64): ResultInt64 pub Multipliziert zwei Zahlen mit Überlaufprüfung
SafeDiv(a: int64, b: int64): ResultInt64 pub Dividiert mit Prüfung auf Division durch Null
SafeMod(a: int64, b: int64): ResultInt64 pub Modulo mit Prüfung auf Division durch Null
SafeArrayGet(arr: int64, len: int64, index: int64): ResultInt64 pub Liest Array-Element mit Grenzprüfung
SafeArraySet(arr: int64, len: int64, index: int64, value: int64): ResultBool pub Schreibt Array-Element mit Grenzprüfung