Could you comment on why it is a goal to avoid rust-style option/results?
I often find myself wishing the nim standard library used results instead of exceptions (this is extra painful with async code because the stack traces are a nightmare to understand).