raftify 0.1.82

Experimental High level Raft framework
Documentation
use std::{fmt, str::FromStr};

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum InitialRole {
    Leader,
    Voter,
    Learner,
}

impl fmt::Display for InitialRole {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            InitialRole::Leader => write!(f, "Leader"),
            InitialRole::Voter => write!(f, "Voter"),
            InitialRole::Learner => write!(f, "Learner"),
        }
    }
}

impl FromStr for InitialRole {
    type Err = ();

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        let s = s.to_lowercase();
        match s.as_str() {
            "leader" => Ok(InitialRole::Leader),
            "voter" => Ok(InitialRole::Voter),
            "learner" => Ok(InitialRole::Learner),
            _ => Err(()),
        }
    }
}