3 Punkte von GN⁺ 2024-08-12 | 1 Kommentare | Auf WhatsApp teilen
  • Rust wurde 8 Jahre lang zur „beliebtesten Programmiersprache“ gewählt, und viele Menschen möchten GUI-Programme in Rust schreiben.
  • Hier wird ein Ansatz mit Flutter und flutter_rust_bridge vorgestellt.
  • Vorteile
    • Flutter ist eine beliebte und ausgereifte Plattform, die von vielen Entwicklern und bekannten Marken genutzt wird, über ein großes Ökosystem verfügt und es leicht macht, gewünschte Funktionen umzusetzen.
    • Dank der Funktion „Hot Reload“ ist die UI-Entwicklung schnell, und durch Cross-Platform-Unterstützung kann dieselbe Codebasis auf mehreren Plattformen ausgeführt werden.
  • Nachteile
    • Dieser Ansatz ist nicht zu 100 % reines Rust.
      • Das ist jedoch ähnlich wie bei vielen anderen Rust-UIs, die Makros verwenden oder eigene DSLs mit anderen Sprachen wie HTML/CSS/Slint schreiben.
    • Es gibt Kritik an der Web-Plattform.
      • Sie eignet sich eher für „Apps“ im Web und auf anderen Plattformen (z. B. Google Earth, der Animationseditor von Rive usw.) als für statische Webseiten.
    • Flutter erfordert viel Boilerplate-Code.

Was ist flutter_rust_bridge?

  • Es erstellt eine Brücke zwischen zwei Sprachen, sodass sie wie eine einzige Sprache zusammenarbeiten.
  • Es konvertiert automatisch verschiedene Typen, &mut, async, Traits, Results, Closures usw.
  • Neben der Umsetzung von Rust-GUIs mit Flutter gibt es vielfältige weitere Anwendungsfälle.
    = Zum Beispiel kann man beliebige Rust-Bibliotheken in Flutter verwenden oder Code wie Algorithmen in Rust schreiben und anderen Code in Flutter verfassen.

1 Kommentare

 
GN⁺ 2024-08-12
Hacker-News-Kommentare
  • Ich habe es über mehrere Jahre hinweg bei der App-Entwicklung verwendet und war insgesamt zufrieden

    • Das Upgrade von v1 auf v2 war nicht schwierig, und v2 brachte mit vielen nützlichen Funktionen, einer verbesserten Erfahrung bei der Code-Generierung und Unterstützung für tokio-Async große Veränderungen
    • Die Business-Logik in Rust zu schreiben und Dart für das Frontend zu verwenden, war sehr effektiv
    • Ich finde Flutter/Dart leichter verständlich als React
    • Vielen Dank an @fzyzcjy für die Arbeit an FRB
  • Ich bin mir nicht ganz sicher, welche Vorteile es hat, die UI in Dart statt in Rust zu schreiben, aber ich bin ein Fan von flutter_rust_bridge

    • Die Arbeit von fzyzcjy und der Community, Rust-Code reibungslos aus Dart heraus aufrufen zu können, ist ein großer Gewinn für Flutter-Apps
    • Ich habe über ein Wochenende hinweg ImageOptim mit Flutter neu aufgebaut und konnte mit Rust-Bildbibliotheken eine leistungsfähigere und schnellere App erstellen
    • Dank der Rust-Integration ist die App fähiger und schneller
  • Eine lobenswerte Anstrengung. Ich verwende derzeit Tauri und bin neugierig auf die jeweiligen Vor- und Nachteile der beiden Ansätze

  • Ich nutze Flutter für die Desktop-UI und Rust für das Backend

    • Statt einer Bridge trenne ich beide Teile über gRPC
    • Ich denke, dieser Ansatz ist sprachunabhängig und bietet ein saubereres Interface, um das Backend vom Frontend aus zu mocken
    • Man kann UI und Backend auf unterschiedlichen Geräten platzieren und so eine echte Client-Server-Architektur umsetzen
    • Der Nachteil ist, dass das Interface ausführlicher werden kann
  • Gut gemacht. Ich habe über rust_flutter_bridge nur Gutes gehört

    • Ich bin neugierig, wie aufgebläht Flutter im Vergleich zu mobilem Native (Java, Swift) ist, also bei der finalen App-Größe, und wie es um die UI-Performance steht
  • Mir gefiel der Ansatz von Flutter zum Aufbau von UIs, aber Dart mochte ich nicht besonders

    • Theoretisch müsste man doch eine Programmiersprache nur für UIs entwickeln können
    • Eine Sprache, die sich mit gängigen Programmiersprachen verbinden lässt und statt wie beim IDL-Format von protobuf Daten zu definieren die Benutzeroberfläche deklariert
    • Dabei fallen mir QT und XAML ein, aber QT ist nicht Open Source, und XAML scheint schon lange nicht mehr wirklich genutzt zu werden
  • Ich finde, Googles Material Design und die Feuerwerk-Effekte sehen nicht gerade am besten aus

  • Ich frage mich, wie es um die Unterstützung für Barrierefreiheit (a11y) steht

    • Ich konnte dazu in der Dokumentation nichts finden, aber ich kann mir nicht vorstellen, dass man 2024 ein GUI-Toolkit ohne Unterstützung für Barrierefreiheit veröffentlicht, daher frage ich mich, warum das nicht erwähnt wurde
  • Viel besser, als sich auf eine Chrome-Shell oder Web-Widgets zu verlassen; großes Lob für die Mühe

  • Interessant. IIUC frage ich mich, ob das mithilfe von Source-to-Source-Übersetzung erreicht wurde

    • Die Dokumentation ist beeindruckend klar und verständlich für die Nutzer geschrieben
    • Ich würde gern mehr über den Ansatz und den Vergleich mit wasm-basierten Rust-Web-Frameworks erfahren
    • Ein Vorteil der Kombination aus Rust und Flutter ist, dass Flutter bereits ein vollständiges Framework ist und man Code sowie Datenstrukturen zwischen Server- und Client-Seite teilen kann