pub type GateResult = Result<Vec<Violation>, GateError>;
What every gate returns: the violations it found, or why it could not run.
pub enum GateResult { Ok(Vec<Violation>), Err(GateError), }
Contains the success value
Contains the error value