Ich versuche, die Struktur einer Rust- und GTK-RS-Anwendung zu erhöhen, aber ich kann nicht herausfinden, wie ich mit Ereignisverbindungen umgehen soll. Ich sehe, dass das Problem in der falschen Lebenszeit liegt, aber ich verstehe nicht wirklich, wie es behoben werden könnte.Typ muss die statische Lebensdauer erfüllen
#[derive(Debug)]
struct CreatingProfileUI {
window: gtk::MessageDialog,
profile_name_entry: gtk::Entry,
add_btn: gtk::Button,
cancel_btn: gtk::Button,
}
#[derive(Debug)]
struct UI {
window: gtk::Window,
// Header
url_entry: gtk::Entry,
open_btn: gtk::Button,
// Body
add_profile_btn: gtk::Button,
remove_profile_btn: gtk::Button,
profiles_textview: gtk::TextView,
// Creating profile
creating_profile: CreatingProfileUI,
// Statusbar
statusbar: gtk::Statusbar,
}
impl UI {
fn init(&self) {
self.add_profile_btn
.connect_clicked(move |_| { &self.creating_profile.window.run(); });
}
}
Und ich bekomme diese Fehlermeldung:
error[E0477]: the type `[[email protected]/main.rs:109:46: 111:6 self:&UI]` does not fulfill the required lifetime
--> src/main.rs:109:30
|
109 | self.add_profile_btn.connect_clicked(move |_| {
| ^^^^^^^^^^^^^^^
|
= note: type must satisfy the static lifetime
['ButtonExt :: connect_clicked'] (https://docs.rs/gtk/0.2.0/gtk/trait.ButtonExt.html#typmethod.connect_clicked) benötigt eine Funktion mit der '' statischen '' Lebensdauer. Related (um Threads, aber der Fehler ist der gleiche): https://Stackoverflow.com/a/28661524/1233251 –