use std::str::FromStr;
use crate::Error;
#[derive(
Clone, Copy, Debug, Default, PartialEq, Eq, Hash, strum::Display, strum::IntoStaticStr,
)]
#[strum(serialize_all = "lowercase")]
pub enum Scope {
#[default]
Project,
User,
}
impl Scope {
#[must_use]
pub fn as_str(self) -> &'static str {
self.into()
}
}
impl FromStr for Scope {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"project" => Ok(Self::Project),
"user" => Ok(Self::User),
_ => Err(Error::UnknownScope { value: s.to_owned() }),
}
}
}