1use core::fmt;
7use std::error::Error;
8
9#[derive(PartialEq, Debug, Eq, Clone)]
10pub enum SanitizeError {
11 IndexOutOfBounds,
12 ValueOutOfBounds,
13 InvalidValue,
14}
15
16impl Error for SanitizeError {}
17
18impl fmt::Display for SanitizeError {
19 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20 match self {
21 SanitizeError::IndexOutOfBounds => f.write_str("index out of bounds"),
22 SanitizeError::ValueOutOfBounds => f.write_str("value out of bounds"),
23 SanitizeError::InvalidValue => f.write_str("invalid value"),
24 }
25 }
26}
27
28pub trait Sanitize {
38 fn sanitize(&self) -> Result<(), SanitizeError> {
39 Ok(())
40 }
41}
42
43impl<T: Sanitize> Sanitize for Vec<T> {
44 fn sanitize(&self) -> Result<(), SanitizeError> {
45 for x in self.iter() {
46 x.sanitize()?;
47 }
48 Ok(())
49 }
50}