Add a generate_attribute! macro, and use it for the common case.
This commit is contained in:
parent
9955c1131b
commit
0f297d2d2d
10 changed files with 158 additions and 499 deletions
35
src/mam.rs
35
src/mam.rs
|
|
@ -39,36 +39,11 @@ pub struct Fin {
|
|||
pub set: Set,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum DefaultPrefs {
|
||||
Always,
|
||||
Never,
|
||||
Roster,
|
||||
}
|
||||
|
||||
impl FromStr for DefaultPrefs {
|
||||
type Err = Error;
|
||||
|
||||
fn from_str(s: &str) -> Result<DefaultPrefs, Error> {
|
||||
Ok(match s {
|
||||
"always" => DefaultPrefs::Always,
|
||||
"never" => DefaultPrefs::Never,
|
||||
"roster" => DefaultPrefs::Roster,
|
||||
|
||||
_ => return Err(Error::ParseError("Invalid 'default' attribute.")),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl IntoAttributeValue for DefaultPrefs {
|
||||
fn into_attribute_value(self) -> Option<String> {
|
||||
Some(String::from(match self {
|
||||
DefaultPrefs::Always => "always",
|
||||
DefaultPrefs::Never => "never",
|
||||
DefaultPrefs::Roster => "roster",
|
||||
}))
|
||||
}
|
||||
}
|
||||
generate_attribute!(DefaultPrefs, "default", {
|
||||
Always => "always",
|
||||
Never => "never",
|
||||
Roster => "roster",
|
||||
});
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Prefs {
|
||||
|
|
|
|||
Loading…
Reference in a new issue