1#![allow(dead_code)]
2
3use std::collections::{BTreeMap, BTreeSet};
4
5use serde::Deserialize;
6
7#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Deserialize)]
8enum Bank {
9 #[serde(rename = "N")]
10 North,
11
12 #[serde(rename = "W")]
13 West,
14
15 #[serde(rename = "E")]
16 East,
17
18 #[serde(rename = "S")]
19 South,
20}
21
22#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Deserialize)]
23enum Person {
24 #[serde(rename = "c1_OF_PERSON")]
25 Cannibal1,
26
27 #[serde(rename = "c2_OF_PERSON")]
28 Cannibal2,
29
30 #[serde(rename = "m1_OF_PERSON")]
31 Missionary1,
32
33 #[serde(rename = "m2_OF_PERSON")]
34 Missionary2,
35}
36
37#[derive(Clone, Debug, Deserialize)]
38struct State {
39 pub bank_of_boat: Bank,
40 pub who_is_on_bank: BTreeMap<Bank, BTreeSet<Person>>,
41}
42
43fn main() {
44 let data = include_str!("../tests/fixtures/MissionariesAndCannibals.itf.json");
45 let trace: itf::Trace<State> = itf::trace_from_str(data).unwrap();
46
47 dbg!(trace);
48}