4 ms·
You prove to the compiler that the nilable var is not-nil via if statement. Eg: proc foobar(f:Foo not nil) = discard let f = Foo() # nilable ref l
by filwit 11y ago
You prove to the compiler that the nilable var is not-nil via if statement. Eg:
proc foobar(f:Foo not nil) =
discard
let f = Foo() # nilable ref
let b: Foo not nil = f # Error, can't prove 'f' is not nil
if f != nil:
let b: Foo not nil = f # can assign non-nil vars to 'f'
foobar(f) # or can pass 'f' directly
- phaylon 11y agoAh, good to know. So Nim does static analysis on conditionals where Rust would use an explicit pattern match to get at the contained value. Might be a good example for http://nim-lang.org/manual.html#not-nil-annotation http://nim-lang.org/manual.html#not-nil-annotation