Myślę, że Rust zmierza teraz w kierunku uzupełniania braków i wygładzania ostrych krawędzi. Jest wiele takich zaskakujących ograniczeń, gdzie czegoś nie można zrobić tylko dlatego, że nie zostało jeszcze zaimplementowane.
Przykładowo impl Trait
nie jest dozwolone w sygnaturach metod w traitach, przez co napisanie abstrakcyjnej fabryki jest trudne i Javowcy po tym doświadczeniu odchodzą pisać w Go. Albo, podobnie, metody traitów nie mogą być async, a obejście przez crate async_trait jest dość karkołomne. Genericsów nie można umieszczać w typach skojarzonych, więc Haskellowcy i Skalowcy też są trochę rozczarowani. Natknąłem się też na parę miejsc gdzie borrowchecker nie puszczał, a mógłby, albo gdzie dawał trudne do zrozumienia komunikaty. Jest też sporo do zrobienia po stronie bibliotek.
Z dużych rzeczy, wiem że pełną parą idą prace nad backendem do GCC, co powinno otworzyć nowe możliwości jak pisanie części kernela czy kompilowanie na niewspierane obecnie procesory np. ESP8266/ESP32 (tak, akurat to da się obejść, ale trzeba forka LLVM sobie zbudować).
Liczę też na rychłe dodanie GATs (generic associated types), co z kolei otwiera możliwości podobne do HKTs Scali/Haskella.
Natomiast tak poza tym, mimo tych drobnych bolączek okresu młodości, to mnie się w Rust pisze generalnie bardzo dobrze i zdecydowanie częściej brakuje mi mechanizmów Rust w Javie niż na odwrót.
No i Rust ma taką niesamowitą własność, że może i trochę więcej się trzeba nauczyć, ale za to jak już się kod skompiluje, to w 99/100 działa poprawnie.