From 9661458e741e594a2a160fe15fb240fc426e76b6 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Sun, 5 Dec 2021 22:37:29 +0500 Subject: [PATCH] Use weak refs --- src/main.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6a4d674..7e20c77 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +use crate::glib::clone; + use std::cell::Cell; use std::rc::Rc; @@ -28,9 +30,6 @@ fn build_ui(app: &Application) { .margin_end(12) .build(); - let label1 = label.clone(); - let label2 = label.clone(); - let button1 = Button::builder() .label("Increase") .margin_top(12) @@ -47,17 +46,16 @@ fn build_ui(app: &Application) { .margin_end(12) .build(); - let number1 = Rc::new(Cell::new(0)); - let number2 = number1.clone(); + let number = Rc::new(Cell::new(0)); - button1.connect_clicked(move |_| { - number1.set(number1.get() + 1); - label1.set_label(&number1.get().to_string()); - }); - button2.connect_clicked(move |_| { - number2.set(number2.get() - 1); - label2.set_label(&number2.get().to_string()); - }); + button1.connect_clicked(clone!(@weak number, @weak label => move |_| { + number.set(number.get() + 1); + label.set_label(&number.get().to_string()); + })); + button2.connect_clicked(clone!(@weak label => move |_| { + number.set(number.get() - 1); + label.set_label(&number.get().to_string()); + })); let box_ = Box::new(Orientation::Vertical, 0);