1use entity::object::ObjectVersion;
3use {ErrorKind, Result};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub enum Expect {
8 Any,
10
11 None,
13
14 IfMatch(Vec<ObjectVersion>),
16
17 IfNoneMatch(Vec<ObjectVersion>),
19}
20impl Expect {
21 pub fn validate(&self, version: Option<ObjectVersion>) -> Result<()> {
23 match *self {
24 Expect::Any => {}
25 Expect::None => track_assert_eq!(version, None, ErrorKind::Unexpected(version)),
26 Expect::IfMatch(ref versions) => track_assert!(
27 versions.iter().any(|&v| Some(v) == version),
28 ErrorKind::Unexpected(version)
29 ),
30 Expect::IfNoneMatch(ref versions) => track_assert!(
31 versions.iter().all(|&v| Some(v) != version),
32 ErrorKind::Unexpected(version)
33 ),
34 }
35 Ok(())
36 }
37}
38impl Default for Expect {
39 fn default() -> Self {
40 Expect::Any
41 }
42}