I just learned
enum E { C = ... }
means pretty much the same thing as
const E_C: isize = ...;
enum E { C = E_C }
So in my example, an untyped int literal 1 in 1 << 63 is typed as isize, which nowadays commonly means i64.
https://doc.rust-lang.org/error-index.html#E0082
But all these things should be explained in the Rust reference…
Also, the choice of isize as the default type may be pragmatic but is debatable.