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 variants Some and None; Result has variants Pass and Fail`
  • get indicates going from Option[T]/Result[T] to T
  • else indicates a closure argument
  • all panicking methods contain ...Panic