Aktywne Wpisy
phaxi +394
HuopWsiowy +90
Zachlałem. Trzeźwy byłem przez 53 dni.
Tag do obserwowania/czarnolisto - #huopwsiowy (teraz to raczej do czarnolisto)
Było dobrze do momentu aż nie wypiłem, 2 dni ciągu alkoholowego i mamy dzisiaj. Dzisiaj już nie piłem, w zasadzie to bym się utopił w rzygach jakbym miał przełknąć coś innego niż woda. Od samego rana dopiero teraz udało mi się zjeść mały posiłek - kromka chleba z serem, dwa jajka na miękko i dwa pomidory.
Tag do obserwowania/czarnolisto - #huopwsiowy (teraz to raczej do czarnolisto)
Było dobrze do momentu aż nie wypiłem, 2 dni ciągu alkoholowego i mamy dzisiaj. Dzisiaj już nie piłem, w zasadzie to bym się utopił w rzygach jakbym miał przełknąć coś innego niż woda. Od samego rana dopiero teraz udało mi się zjeść mały posiłek - kromka chleba z serem, dwa jajka na miękko i dwa pomidory.
w jaki sposób mogę odczytać i zapisać dane do/z zmiennej w domknięciu?
Kod z którego korzystam raczej wymaga
move |_|
bo tak został stworzony GTK RSTen kod
let mut hashmap_buttons: HashMap<&str, bool> = Default::default();
for i in ["duplicate", "empty_folder"].iter() {
hashmap_buttons.insert(i, false);
}
buttons_search.connect_clicked(move |_| {
if *hashmap_buttons.get("duplicate").unwrap() {
buttons_select.show();
buttons_delete.show();
}
else{
buttons_select.hide();
buttons_delete.hide();
}
*hashmap_buttons.get_mut("duplicate").unwrap() = true;
}
Wywala błąd
cannot borrow `hashmap_buttons` as mutable, as it is a captured variable in a `Fn` closure
#rustlang #gtk #programowanie
Ale w tym przypadku to i tak nie zadziała. Musisz tutaj użyć
Cell
lub innego wewnętrznie mutowalnego typu, bo IIRC akcja w podłączonym callbacku może się wywołać w dowolnym momencie. Więc referencja musi żyć dłużej. Jeśli to jest odpalane w osobnym wątku to możesz użyćRwLock
na ten przykład (by równoległe odczyty mogły działać, a zapis blokował odczyt).fn connect_clicked(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn clicked_trampoline(
this: *mut gtk_sys::GtkButton,
f: glib_sys::gpointer,
) where
P: IsA,
{
let f: &F = &*(f as *const F);
f(&Button::from_glib_borrow(this).unsafe_cast_ref())
}
a potrzebowałbym skorzystać z tej zmiennej również w innych domknięciach
Dodatkowo wywala błąd po zmianie
borrowed value does not live long enough
Rc
/Cell
lubArc
/RwLock
jest tym czego szukasz.