# Show HN: Flutter를 통한 Rust GUI 라이브러리

> Clean Markdown view of GeekNews topic #16279. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16279](https://news.hada.io/topic?id=16279)
- GeekNews Markdown: [https://news.hada.io/topic/16279.md](https://news.hada.io/topic/16279.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-08-12T09:52:02+09:00
- Updated: 2024-08-12T09:52:02+09:00
- Original source: [cjycode.com](https://cjycode.com/posts/rust-ui-flutter/)
- Points: 3
- Comments: 1

## Topic Body

- Rust는 8년 동안 "가장 원하는 프로그래밍 언어"로 선정되고, 많은 사람들이 Rust로 GUI 프로그램을 작성하고 싶어함.  
- Flutter와 `flutter_rust_bridge`를 활용한 접근 방식을 공유  
- 장점  
  - Flutter는 인기 있고 성숙한 플랫폼으로, 많은 개발자와 유명 브랜드가 사용 중이고, 큰 생태계를 가지고 있어 원하는 기능을 쉽게 구현할 수 있음  
  - "핫 리로드" 기능으로 UI 개발이 빠르고, 크로스 플랫폼을 지원하여 동일한 코드베이스로 여러 플랫폼에서 실행 가능함  
- 단점  
  - 이 접근 방식은 100% 순수 Rust가 아님  
    - 그러나 이것은 매크로를 사용하거나 HTML/CSS/Slint와 같은 다른 언어를 사용하여 사용자 정의 DSL을 작성하는 다른 많은 Rust UI와 유사  
  - 웹 플랫폼에 대한 비판이 있음  
    - 정적인 웹 페이지보다는 웹 및 기타 플랫폼(예: Google 어스, Rive의 애니메이션 편집기 등)의 '앱'에 더 적합  
  - Flutter는 많은 보일러플레이트 코드가 필요함  
  
#### flutter_rust_bridge란?  
- 두 언어 간의 브리지를 만들어 하나의 언어처럼 작동하게 함  
- 다양한 타입, `&mut`, async, 트레이트, 결과, 클로저 등을 자동으로 변환함  
- Rust GUI를 Flutter로 구현하는 것 외에도 다양한 사용 사례가 있음  
  = Flutter에 임의의 Rust 라이브러리를 사용하거나 알고리즘과 같은 코드를 Rust에서 작성하고 다른 코드를 Flutter에서 작성하는 등

## Comments



### Comment 27939

- Author: neo
- Created: 2024-08-12T09:52:02+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41213711) 
- 몇 년 동안 앱을 개발하면서 사용해왔으며, 전반적으로 만족스러웠음
  - v1에서 v2로 업그레이드가 어렵지 않았고, v2는 많은 유용한 기능과 개선된 코드 생성 경험, tokio async 지원 등으로 큰 변화를 줌
  - Rust로 비즈니스 로직을 작성하고 Dart를 프론트엔드로 사용하는 것이 매우 효과적이었음
  - Flutter/Dart가 React보다 더 이해하기 쉽다고 생각함
  - FRB 작업을 한 @fzyzcjy에게 감사의 말을 전함

- UI를 Rust 대신 Dart로 작성하는 것의 장점을 잘 모르겠지만, flutter_rust_bridge의 팬임
  - fzyzcjy와 커뮤니티가 Dart에서 Rust 코드를 원활하게 호출할 수 있게 한 작업이 Flutter 앱에 큰 자산이 됨
  - 주말 동안 Flutter로 ImageOptim을 재구성했으며, Rust 이미지 라이브러리를 사용해 더 강력하고 빠른 앱을 만들 수 있었음
  - Rust 통합 덕분에 앱이 더 능력 있고 빠르게 동작함

- 칭찬할 만한 노력임. 현재 Tauri를 사용 중이며, 두 가지의 장단점에 대해 궁금해함

- 데스크탑 UI를 위해 Flutter를 사용하고 백엔드를 위해 Rust를 사용함
  - 브리지 대신 gRPC를 사용해 두 부분을 분리함
  - 이 접근 방식은 언어에 구애받지 않으며, 프론트엔드에서 백엔드를 모킹하기 위한 더 깔끔한 인터페이스를 제공한다고 생각함
  - UI와 백엔드를 다른 기기에 배치해 진정한 클라이언트/서버 아키텍처를 구현할 수 있음
  - 단점은 인터페이스가 더 장황할 수 있다는 점임

- 잘했음. rust_flutter_bridge에 대해 좋은 이야기만 들었음
  - Flutter가 모바일 네이티브(Java, Swift)와 비교해 얼마나 부피가 큰지(최종 앱 크기)와 UI 성능에 대해 궁금해함

- Flutter의 UI 구축 접근 방식을 즐겼지만, Dart는 별로 좋아하지 않았음
  - 이론적으로 UI 전용 프로그래밍 언어를 만들 수 있지 않을까 생각함
  - 주요 프로그래밍 언어와 인터페이스할 수 있는 언어, 예를 들어 protobuf의 IDL 형식처럼 데이터를 정의하는 대신 사용자 인터페이스를 선언하는 언어
  - QT와 XAML이 떠오르지만, QT는 오픈 소스가 아니며 XAML은 오랫동안 사용되지 않은 것 같음

- Google의 재료 디자인과 폭죽 효과가 가장 좋은 모습은 아니라고 생각함

- 접근성(a11y) 지원에 대해 궁금해함
  - 문서에서 이에 대한 정보를 찾지 못했지만, 2024년에 접근성 지원 없이 GUI 키트를 출시하는 것은 상상할 수 없으므로 왜 언급하지 않았는지 궁금해함

- Chrome 셸이나 웹 위젯에 의존하는 것보다 훨씬 나음, 노력에 찬사를 보냄

- 흥미로움. IIUC 이것이 소스 간 번역을 사용해 이루어졌는지 궁금해함
  - 문서가 사용자에게 명확하게 작성되어 인상적임
  - 접근 방식과 wasm 기반 Rust 웹 프레임워크와의 비교에 대해 알고 싶음
  - Rust와 Flutter를 결합하는 한 가지 장점은 Flutter가 이미 전체 프레임워크이며 서버와 클라이언트 측 간에 코드와 데이터 구조를 공유할 수 있다는 점임
