Language Design: Naming Conventions
Part 3: Option & Result
Published on 2024-07-05. Last updated on 2025-05-23
Name | Example |
---|---|
or |
Some(1).or(Some(2)) --> Some(1) None.or(Some(2)) --> Some(2) Pass(1).or(Pass(2)) --> Pass(1) Fail(1).or(Pass(2)) --> Pass(2) |
orElse |
Some(1).orElse(() -> Some(2)) --> Some(1) None.orElse(() -> Some(2)) --> Some(2) None.orElse(() -> None) --> None Pass(1).orElse(() -> Pass(2)) --> Pass(1) Fail(1).orElse(() -> Pass(2)) --> Pass(2) |
getOr |
Some(1).getOr(2) --> 1 None.getOr(2) --> 2 Pass(1).getOr(2) --> 1 Fail(1).getOr(2) --> 2 |
getOrElse |
Some(1).getOrElse(() -> 2) --> 1 None.getOrElse(() -> 2) --> 2 Pass(1).getOrElse(() -> 2) --> 1 Fail(1).getOrElse(() -> 2) --> 2 |
getOrPanic |
Some(1).getOrPanic() --> 1 None.getOrPanic() # program aborts Pass(1).getOrPanic() --> 1 Fail(1).getOrPanic() # program aborts |
getOrPanicWith |
Some(1).getOrPanicWith("expected some") --> 1 None.getOrPanicWith("expected some") # program aborts with message "expected some" Pass(1).getOrPanicWith("expected some") --> 1 Fail(1).getOrPanicWith("expected pass") # program aborts with message "expected pass" |
Naming scheme:
Option
has variantsSome
andNone;
Resulthas variants
Passand
Fail`get
indicates going fromOption[T]
/Result[T]
toT
else
indicates a closure argument- all panicking methods contain
...Panic