| ... | ... | |
|---|
| 59 | 59 | fn main () -> iced::Result { |
|---|
| 60 | 60 | iced::run(update, view)? |
|---|
| 61 | 61 | } }}} |
|---|
| 62 | === 비동기 === |
|---|
| 63 | update로직이 너무 오랫동안 실행되면 UI 전채가 멈춰지는 문제가 있다.[* rust의 함수는 기본적으로 블로킹 방식이기 때문이다] 그래서 내장 런타임을 활용하여 IO같은 지연이 오래걸리는 작업을 비동기로 처리해줘야한다. |
|---|
| 64 | {{{#!syntax rust |
|---|
| 65 | fn update(state:&mut State, message:Message) -> iced::Task<Message> { |
|---|
| 66 | match Message { |
|---|
| 67 | Message::SomeAsyncTask => { |
|---|
| 68 | return iced::Task::perform(asyncfunc(), Message::AfterAsyncTask); |
|---|
| 69 | //asyncfunc라는 함수를 실행하고 함수 실행이 완료되면 AfterAsyncTask를 update의 message로 넘긴다는 뜻. |
|---|
| 70 | } |
|---|
| 71 | Message::AfterAsyncTask => { |
|---|
| 72 | println!("비동기 작업 완료! ✌️"); |
|---|
| 73 | Task::none(); //비동기 작업을 실행하지 않는다는 뜻 |
|---|
| 74 | } |
|---|
| 75 | } |
|---|
| 76 | } }}} |
|---|
| 77 | 이런식으로 업데이트 함수를 수정해주면 된다. |
|---|
| 62 | 78 | == 특징 == |
|---|
| 63 | 79 | * 마지막 릴리즈가 ,,25년 9월 기준,,1년 전에 나왔다![* cargo add iced 대신 깃헙 주소를 입력하는 것을 추천한다. 브랜치는 master로] |
|---|
| 64 | 80 | * 비동기 처리를 자체 런타임을 이용해서 하는데 tokio[* 러스트에서 가장 많이쓰는 런타임] 런타임이랑 호환이 안되는듯 하다 |
|---|
| 65 | 81 | == 사용하는 소프트웨어 == |
|---|
| 66 | 82 | * cosmic |
|---|