这段代码:
//let seen_cell = std::cell::RefCell::new(window_0);
window_0.connect_delete_event(|_, _| {
    //window_0.destroy();
    window.hide();
    Inhibit(true)  
    });
button_0.connect_clicked(|_|{  
    window.show_all(); 
    }  
);
产生错误:
error[E0373]: closure may outlive the current function, but it borrows `window`, which is owned by the current function
   --> src/main.rs:192:36
    |
192 |     window_0.connect_delete_event( |_, _| {
    |                                    ^^^^^^ may outlive borrowed value `window`
...
195 |         window.hide();
    |         ------ `window` is borrowed here
    |
help: to force the closure to take ownership of `window` (and any other referenced variables), use the `move` keyword, as shown:
    |     window_0.connect_delete_event( move |_, _| {
error[E0373]: closure may outlive the current function, but it borrows `window`, which is owned by the current function
   --> src/main.rs:199:30
    |
199 |     button_0.connect_clicked(|_|{
    |                              ^^^ may outlive borrowed value `window`
200 |         window.show_all();
    |         ------ `window` is borrowed here
    |
help: to force the closure to take ownership of `window` (and any other referenced variables), use the `move` keyword, as shown:
    |     button_0.connect_clicked(move |_|{
如果我试试这个:
//let seen_cell = std::cell::RefCell::new(window_0);
window_0.connect_delete_event(move |_, _| {
    //window_0.destroy();
    window.hide();
    Inhibit(true)  
    });
button_0.connect_clicked(|_|{  
    window.show_all(); 
    }  
);
我得到错误:
error[E0373]: closure may outlive the current function, but it borrows `window`, which is owned by the current function
   --> src/main.rs:199:30
    |
199 |     button_0.connect_clicked(|_|{
    |                              ^^^ may outlive borrowed value `window`
200 |         window.show_all();
    |         ------ `window` is borrowed here
    |
help: to force the closure to take ownership of `window` (and any other referenced variables), use the `move` keyword, as shown:
    |     button_0.connect_clicked(move |_|{
error[E0382]: capture of moved value: `window`
   --> src/main.rs:199:30
    |
192 |     window_0.connect_delete_event(move |_, _| {
    |                                   ----------- value moved (into closure) here
...
199 |     button_0.connect_clicked(|_|{
    |                              ^^^ value captured here after move
    |
    = note: move occurs because `window` has type `gtk::Window`, which does not implement the `Copy` trait
如果我试试这个:
//let seen_cell = std::cell::RefCell::new(window_0);
window_0.connect_delete_event(move |_, _| {
    //window_0.destroy();
    window.hide();
    Inhibit(true)  
    });
button_0.connect_clicked(move|_|{  
    window.show_all(); 
    }  
);
我得到错误:
error[E0382]: capture of moved value: `window`
   --> src/main.rs:200:9
    |
192 |     window_0.connect_delete_event(move |_, _| {
    |                                   ----------- value moved (into closure) here
...
200 |         window.show_all();
    |         ^^^^^^ value captured here after move
    |
    = note: move occurs because `window` has type `gtk::Window`, which does not implement the `Copy` trait
我读过类似的问题,但我无法解决这个问题。我怎样才能以最好的方式解决这个问题,也许是通过使用Arc或类似的方式?