flo_ui 0.1.0

Implementation-free user interface description library
Documentation
use super::control::*;
use super::attributes::*;

use modifier::*;

pub trait ControlModifier {
    fn modify(self, control: &mut Control);    
}

impl Modifier<Control> for ControlAttribute {
    fn modify(self, control: &mut Control) {
        control.add_attribute(self);
    }
}

impl<A: Modifier<Control>> ControlModifier for Option<A> {
    fn modify(self, control: &mut Control) {
        if let Some(modifier) = self {
            modifier.modify(control);
        }
    }
}

impl<A: Modifier<Control>> ControlModifier for A {
    fn modify(self, control: &mut Control) {
        self.modify(control)
    }
}