I don't really understand how does work borrowing in Rust. I'm trying to modify labels during clicked event. My current code behaves correctly, however looks like a monster. How should I do it properly?
use gtk::{Button, Label};
let label_1_rc_1 = Rc::new(label_1);
let label_1_rc_2 = label_1_rc_1.clone();
let label_1_rc_3 = label_1_rc_1.clone();
let label_1_rc_4 = label_1_rc_1.clone();
button_a.connect_clicked(move |_| {
........
compose_view(
label_1_rc_1.clone(),
);
});
button_b.connect_clicked(move |_| {
........
compose_view(
label_1_rc_2.clone(),
);
});
button_c.connect_clicked(move |_| {
........
compose_view(
label_1_rc_3.clone(),
);
});
fn compose_view(
label_1: Rc<Label>,
) -> () {
.......
label_1.set_markup(&format!("<span>Sth different...</span>"));
}
I tried to use Arc<Mutex<gtk::Label>> instead of just Rc<gtk::Label> but, well.. I wasn't able to make it working. Usually I got error such as: move occurs because label_1_arc has type Arc<Mutex<gtk::Label>>, which does not implement the Copy trait