lemma/inversion/
target.rs1use crate::{LiteralValue, OperationResult};
2
3#[derive(Debug, Clone, PartialEq)]
5pub struct Target {
6 pub op: TargetOp,
8
9 pub outcome: Option<OperationResult>,
12}
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16pub enum TargetOp {
17 Eq,
19 Neq,
21 Lt,
23 Lte,
25 Gt,
27 Gte,
29}
30
31impl Target {
32 pub fn value(value: LiteralValue) -> Self {
34 Self {
35 op: TargetOp::Eq,
36 outcome: Some(OperationResult::Value(value)),
37 }
38 }
39
40 pub fn veto(message: Option<String>) -> Self {
42 Self {
43 op: TargetOp::Eq,
44 outcome: Some(OperationResult::Veto(message)),
45 }
46 }
47
48 pub fn any_veto() -> Self {
50 Self::veto(None)
51 }
52
53 pub fn any_value() -> Self {
55 Self {
56 op: TargetOp::Eq,
57 outcome: None,
58 }
59 }
60
61 pub fn with_op(op: TargetOp, outcome: OperationResult) -> Self {
63 Self {
64 op,
65 outcome: Some(outcome),
66 }
67 }
68}