Enums
An enum may contain many types including other enums.
pub enum Error {
StateError: StateError,
UserError: UserError,
}
pub enum StateError {
Void: (),
Pending: (),
Completed: (),
}
pub enum UserError {
InsufficientPermissions: (),
Unauthorized: (),
}
Encouraged
The preferred way to use enums is to use the individual (not nested) enums directly because they are easy to follow and the lines are short:
let error1 = StateError::Void;
let error2 = UserError::Unauthorized;
Discouraged
If you wish to use the nested form of enums via the Error enum from the example above, then you can instantiate them into variables using the following syntax:
let error1 = Error::StateError(StateError::Void);
let error2 = Error::UserError(UserError::Unauthorized);
Key points to note:
- You must import all of the enums i.e.
Error,StateError&UserError - The lines may get unnecessarily long (depending on the names)
- The syntax is unergonomic