1
// This file is part of hnefatafl-copenhagen.
2
//
3
// hnefatafl-copenhagen is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU Affero General Public License as published by
5
// the Free Software Foundation, either version 3 of the License, or
6
// (at your option) any later version.
7
//
8
// hnefatafl-copenhagen is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
// GNU Affero General Public License for more details.
12
//
13
// You should have received a copy of the GNU Affero General Public License
14
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
15
//
16
// SPDX-License-Identifier: AGPL-3.0-or-later
17
// SPDX-FileCopyrightText: 2025 David Campbell <david@hnefatafl.org>
18

            
19
use std::{fmt, str::FromStr};
20

            
21
#[derive(Clone, Debug, Eq, PartialEq)]
22
pub enum Draw {
23
    Accept,
24
    Decline,
25
}
26

            
27
impl fmt::Display for Draw {
28
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29
        match self {
30
            Self::Accept => write!(f, "accept"),
31
            Self::Decline => write!(f, "decline"),
32
        }
33
    }
34
}
35

            
36
impl FromStr for Draw {
37
    type Err = anyhow::Error;
38

            
39
    fn from_str(value: &str) -> anyhow::Result<Self> {
40
        match value {
41
            "accept" => Ok(Self::Accept),
42
            "decline" => Ok(Self::Decline),
43
            s => Err(anyhow::Error::msg(format!(
44
                "Error trying to convert '{s}' to a Draw!"
45
            ))),
46
        }
47
    }
48
}