This is where QT/JUCE can help. Although you are limited to c++.
If you are looking for something similar but not limited to C++, you can check Slint out: https://github.com/slint-ui/slint/
It is tricky, but it is not unheard of to write Qt applications as something other than C++.
There are bindings for Go (https://github.com/mappu/miqt) and Zig (https://github.com/rcalixte/libqt6zig) but not for Rust. We need bindings like these for Rust.