The Nim Tutorial page states:
Lossless Automatic type conversion is performed in expressions where different kinds of integer types are used.
So, I thought that creating an int
in the range of a uint8
would allow me to pass it to proc
s expecingt an uint8
.
However, the following code raises the annotated errors:
import random
proc show(x: uint8) {.discardable.} = echo x
let a: int = 255
show(a) # type mismatch: got (int) but expected one of proc show(x: uint8)
let b: uint8 = random(256) # type mismatch: got (int) but expected 'uint8'
show(b)
I am very confused by the first one, which is telling me it expected a proc
instead of an int. The second one is clearer, but I expected an autoconversion at this point, since random
generates an int
in the uint8
range (0..256) (documentation).
Is there a way to convert int
to uint8
?