1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#[macro_export] macro_rules! modele { ( $model_name:literal, $model_label:literal => $( $field_name:literal: $field:ident $({ $($key: ident: $value: expr ),*$(,)? })? ),* $(,interfaces: $($interfaces: literal),*)? $(,)? ) => { { let mut mdl: $crate::Model = $crate::Model::new( String::from($model_name), String::from($model_label), ); $($(mdl.fields.insert( String::from($field_name), std::rc::Rc::new(std::cell::RefCell::new($field { name: String::from($field_name), $($key: $value,)* ..Default::default() })) );)*)? $($(mdl.interfaces.push(String::from($interfaces));),*)? std::rc::Rc::new(mdl) } } }