// A C-like enum is a plain Nim enum: it compares and `case`-checks like Rust's. #[derive(Clone, Copy, PartialEq, Eq, Debug)] enum Error { InvalidEncoding, InvalidLength, } fn describe(e: Error) -> i32 { match e { Error::InvalidEncoding => 1, Error::InvalidLength => 2, } } fn main() { let a = Error::InvalidEncoding; let b = Error::InvalidLength; println!("{} {}", describe(a), describe(b)); println!("{:?} {:?}", a, b); println!("{} {}", a == b, a == Error::InvalidEncoding); }