Hej,
Jakoś udało mi się stworzyć kanały do komunikacji między wątkami i dodać sprawdzanie czy nie nadeszła w między czasie żadna nowa wiadomość.

Problem w tym, że jak w kanale pojawi się wiadomość, to chcę zamknąć aktualny wątek, ale process::exit(0) wywala całą aplikację zamiast tego konkretnego wątku.

W jaki sposób mogę tę wątek usunąć z jego wnętrza?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qarmin: wątek się skończy, jak skończy się funkcja wątku. Wystarczy return. Jak chcesz bardziej hardkorowo to możesz rzucić panic, ale to raczej nie w tym przypadku
  • Odpowiedz
@qarmin: najprościej IMO jest dodać trzeci parametr, coś w stylu:

fn foo(..., ..., is_canceled: impl Fn() -> bool)
gdzie is_canceled w przypadku z Receiverem zawiera kod do odbierania wiadomości, a w drugim przypadku zawsze zwraca false.

Z drugiej strony pewnie wolałbym to jakoś podzielić, bo teraz ciężko się połapać o co tu dokładnie chodzi. Możliwe, że po podzieleniu całości skopiowanie funkcji byłoby
  • Odpowiedz
Hej,

W jaki sposób mogę usunąć jeszcze działający wątek wątek?

W aplikacji mam dość zasobożerne obliczenia, które utworzeniem wątku przerzuciłem na inny proces.
Po rozpoczęciu zadania pojawia się przycisk Stop, który powinien natychmiastowo usunąć ten wątek, ale nie wiem jak to zrobić.
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Cześć fascynaci #programownie w #rustlang - w nadchodzący wtorek będzie okazja by posłuchać kolejnej prezentacji online w ramach spotkań wrocławskiej grupy Rusta.

Temat: "Tower load balancing use case - real-life failure use case post mortem"
Prowadzący: Bartłomiej Kuras

Więcej info + zapisy: https://www.meetup.com/pl-PL/Rust-Wroclaw/events/273500211/
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Pod tagiem #devopsiarz (obserwuj lub czarnolistuj) publikuję kolejne zestawienie o ciekawych artykułach, programach, bibliotekach z działki #devops i nie tylko - najczęściej #golang i #python, ale też #rustlang, #haskell, #wordpress, #pracait czy #produktywnosc

To samo zestawienie u mnie na stronie (lepsze formatowanie) https://devopsiarz.pl/zestawienia/zestawienie-linkow-materialow-04-10-2020/

A jeśli chcesz jeszcze dostępu do większej ilości
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Wołam 17 osób na podstawie algorytmu: wołanie za plusy dla 2 ostatnich
materiałów lub plusy dla przynajmniej 3 z 6 ostatnich materiałów.

Jeśli plusowałeś/aś tylko 2 ostatnie(-nich) materiały(-ów) - nie plusuj posta
rozpoczynającego ten wątek, aby wyłączyć wołanie przy kolejnych wpisach.

Jeśli
  • Odpowiedz
Czkawka 1.0.0 wydana!

W końcu po nieco ponad miesiącu prac mam zaszczyt przedstawić aplikację do wyszukiwania zbędnych plików, duplikatów, pustych folderów oraz dużych plików, która to wyszła z mojej ręki mimo bólu tworzenia w GTK i Rust(na początku obie technologie dają nieźle w kość).

Jaki jest jej koszt zapytacie? - Gratis to uczciwa cena

Aplikacja
q.....n - Czkawka 1.0.0 wydana!

W końcu po nieco ponad miesiącu prac mam zaszczyt ...
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej,

Niby proste pytanie ale spędza mi sen z powiek, bo mimo, że przeczytałem już z 300 stron książki o Rust, to ciągle nie mam odpowiedzi na to pytanie.

A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?
W C++ po prostu utworzyłbym klasę bazową i odziedziczyłbym zmienne oraz funkcje z niej korzystające.
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?


@qarmin: wyekstrahowanie do osobnej struktury? Ten problem wymaga zmiany myślenia, można spokojnie pisać kod bez dziedziczenia (poza oczywiście interfejsami) zarówno w C++ jak i w Ruscie. Dziedziczenie zmiennych to największa zbrodnia popełniona w programowaniu i bardzo dobrze, że tego nie ma w Ruscie
  • Odpowiedz
Hej,

Potrzebuję w GTK pokolorować i zablokować przed zaznaczaniem wiersz w TreeView w ListStore

Chodzi mi o to co jest po lewej stronie obrazu(wiersz 24 x 2 852 różni się kolorem niż inne np. RRRR( ...)
A póki co mam wszystko identyczne, jak po prawej stronie obrazu.
q.....n - Hej,

Potrzebuję w GTK pokolorować i zablokować przed zaznaczaniem wiersz...

źródło: comment_1601041138FzyeYaZdekecnhIJav3uuz.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qarmin: Bardzo fajny temat, ale prezentacja bardzo słaba.
Nic nie mówi o flagowaniu lifetimu dla generyków, które jest podstawą dla statycznej analizy borrowcheckera Rusta.

Co do rzeczy gdzie Rust nie jest najlepszy, to są to makra, mimo że są dużo leprze od CPP to jednak dalej są makrami. Nadużywanie mark powoduje, że Rust dalej cierpi na brak takich ważnych rzeczy jak refleksja.
Do wielu zastosowań jednak to szablony z C++
  • Odpowiedz
Pod tagiem #devopsiarz (obserwuj lub czarnolistuj) publikuję kolejne zestawienie o ciekawych artykułach, programach,bibliotekach z działki #devops i nie tylko - najczęściej #golang i #python, ale też #rustlang, #haskell, #wordpress, #pracait czy #produktywnosc

To samo zestawienie u mnie na stronie (lepsze formatowanie) https://devopsiarz.pl/zestawienia/zestawienie-linkow-materialow-23-09-2020/

A jeśli chcesz jeszcze dostępu do większej ilości linków,
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Wołam 13 osób na podstawie algorytmu: wołanie za plusy dla 2 ostatnich
materiałów lub plusy dla przynajmniej 3 z 6 ostatnich materiałów.

Jeśli plusowałeś/aś tylko 2 ostatnie(-nich) materiały(-ów) - nie plusuj posta
rozpoczynającego ten wątek, aby wyłączyć wołanie przy kolejnych wpisach.

Jeśli
  • Odpowiedz
@olrajt: jak Ci pasuje, możesz tworzyć z niego znalezisko - nieco wątpię tylko, czy zostanie wykopany ( ͡° ͜ʖ ͡°)
@Cinex: dziękuje za docenienie, co do linków premium tych "poprzednich" to uznałem, że co 3 miesiące będę je wysyłał wraz z aktualnym zestawieniem. Czyli jak teraz się zapiszesz, to dostaniesz te "zaległe" linki za około 2 miesiące wraz z nowym (na wtedy) zestawieniem. To
  • Odpowiedz
Jeszcze się nie poddałem z OpenGLem. Po krótszej przerwie zacząłem znowu kodzić, przeczyściłem minimalnie kod, poprzenosiłem część rzeczy do osobnych struktur i powoli zaczyna to działać. Doszła obsługa imgui, w międzyczasie testowałem winit zamiast glfw jednak na razie zostaje przy tym drugim bo go bardziej kojarzę z c++. Mimo tego jestem całkiem zadowolony, jest szansa, że nawet jakąś małą gierkę na tym napiszę.
Link do kodu: https://git.sr.ht/~leinnan/doppler
#leinnanblends #programowanie
Leinnan - Jeszcze się nie poddałem z OpenGLem. Po krótszej przerwie zacząłem znowu ko...

źródło: comment_1600894784J2jwoBBPV07luCzXfFG2ZR.jpg

Pobierz
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej,
Już gdzieś od miesiąca w ramach nauki Rusta kodzę sobie aplikację do znajdywania duplikatów i pustych folderów na Linuxa.

Póki co mam już zrobioną i przetestowaną dość dobrze wersję konsolową ale moim głównym celem jest stworzenie aplikacji graficznej.

Z racji, że nie jestem zbyt dobrym grafikiem(można rzec, że wręcz tragicznym), to moim głównym celem jest skopiowanie prawie 1:1 interfejsu FSlint.
q.....n - Hej,
Już gdzieś od miesiąca w ramach nauki Rusta kodzę sobie aplikację do ...

źródło: comment_1600798393zrGzAXgnJZd5ajuwcHJB6i.jpg

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej,

W jaki sposób mogę w sposób bezpieczny dodawać i usuwać dane z Hashmapy z poziomu domknięć(move |_|)?
Potrzebuje pamiętać dla każdej zakładki układ jej przycisków oraz też inne dane tj. lista plików do usunięcia.

Użytkownik Hauleth i m504 zalecili użycie Rc/Cell, Arc/RwLock i smart pointerów, jednak w dalszym stopniu nie wiem gdzie konkretnie definicję tego obiektu powinienem stworzyć oraz jak go używać.
q.....n - Hej,

W jaki sposób mogę w sposób bezpieczny dodawać i usuwać dane z Hash...

źródło: comment_1600671815SFZiE82Hm6KVy3SE4BRwOb.jpg

Pobierz
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qarmin:

let shared_buttons: Rc> = Rc::new(RefCell::new( HashMap::<&str, bool>::new()));
to masz dobrze, tylko zmien &str na String, bo nie ma opcji, żeby lifetime się zgadzał

Następnie
  • Odpowiedz
#python w nowych wersjach ma używać nowego parsera, żeby umożliwić łatwe rozszerzanie składni języka. Co chcielibyście zobaczyć nowego w samym języku?
IMHO deklarowanie w kodzie zmiennej jako mutable albo immutable mogłoby być bardzo przydatne. Coś na kształt const i mut z #rustlang
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ProfesorBigos: Fajnie byłoby mieć typy algebraiczne, prawdziwy full patten matching i null checking przez typowanie. W każdym języku w którym je stosowałem są to na prawdę przydatne narzędzia do zwiększania pewności co do poprawności kodu
  • Odpowiedz
Hej,

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 RS

Ten
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qarmin: stwórz tymczasową referencję - https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8b6addf032fca00b891f4920a41b3559

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).
  • Odpowiedz