essential_storage/
failed_solution.rs1use std::fmt::Display;
2
3use essential_types::solution::Solution;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
8pub enum SolutionFailReason {
9 ConstraintsFailed(String),
11 NotComposable,
13}
14
15#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
17pub struct FailedSolution {
18 pub solution: Solution,
20 pub reason: SolutionFailReason,
22}
23
24#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
25pub enum CheckOutcome {
27 Success(u64),
29 Fail(SolutionFailReason),
31}
32#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
34pub struct SolutionOutcomes {
35 pub solution: Solution,
37 pub outcome: Vec<CheckOutcome>,
39}
40
41impl Display for SolutionFailReason {
42 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43 match self {
44 SolutionFailReason::ConstraintsFailed(reason) => {
45 write!(f, "ConstraintsFailed: {}", reason)
46 }
47 SolutionFailReason::NotComposable => write!(f, "NotComposable"),
48 }
49 }
50}