1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
//! Clone macro taken from gtk-rs examples. /// gtk-rs examples are licensed on MIT License. #[macro_export] macro_rules! clone { (@param _) => ( _ ); (@param $x:ident) => ( $x ); ($($n:ident),+ => move || $body:expr) => ( { $( let $n = $n.clone(); )+ move || $body } ); ($($n:ident),+ => move |$($p:tt),+| $body:expr) => ( { $( let $n = $n.clone(); )+ move |$(clone!(@param $p),)+| $body } ); }