The reason you can only implicitly use 0 is because 0 will always be a valid enum
type where 1,2,3 or any other number might not necessarily be a valid type. For example try this
enum En {
val1=1,
val2=2,
}
0 is still a valid enum
type because 0 is the default no matter what you do. Which means if you do not let one of your values be equal to 0 it will generate a 0 enum
type for you.