title: Gtk-rs: Set label within glib::timeout_add
body: <p>I'm new to rust and having trouble with the scope of objects/variables in GTK. I have the following code, which works, but I need to set a label in the GTK Window to the text of the variable <code>watch_text</code>. Here is the code:</p>
  <pre><code>use adw::subclass::prelude::AdwApplicationWindowImpl;
  use gtk::prelude::*;
  use gtk::subclass::prelude::*;
  use gtk::{gio, glib, CompositeTemplate};
  use glib::{clone, DateTime, timeout_add};
  use std::time::Duration;
  use std::sync::{Arc, Mutex};
  
      fn setup_signals(&amp;self) {
              let imp = imp::FurWindow::from_instance(self);
              let running = Arc::new(Mutex::new(false));
      
              imp.start_button.connect_clicked(clone!(@weak self as this, @strong running =&gt; move |_| {
                  if !*running.lock().unwrap() {
                      let mut secs: u32 = 0;
                      let mut mins: u32 = 0;
                      let mut hrs: u32 = 0;
                      this.inapp_notification(&quot;Starting Timer!&quot;);
                      *running.lock().unwrap() = true;
                      let stopwatch = DateTime::now_local();
                      let duration = Duration::new(1,0);
                      let timer_repeat = timeout_add(duration, clone!(@strong running as running_clone =&gt; move || {
                          if *running_clone.lock().unwrap() {
                              secs += 1;
                              if secs &gt; 59 {
                                  secs = 0;
                                  mins += 1;
                                  if mins &gt; 59 {
                                      mins = 0;
                                      hrs += 1;
                                  }
                              }
                              let watch_text: &amp;str = &amp;format!(&quot;{:02}:{:02}:{:02}&quot;, hrs, mins, secs).to_string();
                              println!(&quot;{}&quot;,watch_text);
                              // **Here the println works, everything prints correctly, 
                              // but I need to add watch_text to the label &quot;watch&quot; 
                              // this.set_watch_time(watch_text);
                          }
                          Continue(*running_clone.lock().unwrap())
                      }));
                  } else {
                      this.inapp_notification(&quot;Stopping Timer!&quot;);
                      *running.lock().unwrap() = false;
                  }
              }));
          }
  </code></pre>
  <p>The issue is that in the commented section, no matter how I try to access or clone imp.watch, I get an error <code>NonNull&lt;GObject&gt; cannot be sent between threads safely</code>. How can I set the label text to <code>watch_text</code>?</p>