| ... | ... | |
|---|
| 14 | 14 | enum Message { |
|---|
| 15 | 15 | Hello, |
|---|
| 16 | 16 | Bye |
|---|
| 17 | | }}}} |
|---|
| 17 | } }}} |
|---|
| 18 | 18 | 그리고 데이터를 담을 state 구조체를 만들자 |
|---|
| 19 | 19 | {{{#!syntax rust |
|---|
| 20 | 20 | #[derive(Default)] |
|---|
| 21 | 21 | struct State { |
|---|
| 22 | 22 | say:String |
|---|
| 23 | | }}}} |
|---|
| 23 | } }}} |
|---|
| 24 | 24 | say의 기본값을 "hello"로 지정해주고 싶으면 derive 메크로를 제거하고 |
|---|
| 25 | 25 | {{{#!syntax rust |
|---|
| 26 | 26 | impl Default for State { |
|---|
| ... | ... | |
|---|
| 29 | 29 | say:String::from("hello"); |
|---|
| 30 | 30 | } |
|---|
| 31 | 31 | } |
|---|
| 32 | | }}}}를 추가해주자.[* 사실 iced::application이라는 대응 함수도 있는데 부실한 문서화때문에 사용하기 어렵다] |
|---|
| 32 | } }}}를 추가해주자.[* 사실 iced::application이라는 대응 함수도 있는데 부실한 문서화때문에 사용하기 어렵다] |
|---|
| 33 | 33 | 그리고 상호작용을 할 때 실행될 update 함수를 만들자 |
|---|
| 34 | 34 | {{{#!syntax rust |
|---|
| 35 | 35 | fn update(state:&mut State, message:Message) { |
|---|
| ... | ... | |
|---|
| 41 | 41 | state.say = String::from("Bye"); |
|---|
| 42 | 42 | } |
|---|
| 43 | 43 | } |
|---|
| 44 | | }}}} |
|---|
| 44 | } }}} |
|---|
| 45 | 45 | 마지막으로 UI를 담당할 view 함수를 만들고 |
|---|
| 46 | 46 | {{{#!syntax rust |
|---|
| 47 | 47 | use iced::Element; |
|---|
| ... | ... | |
|---|
| 53 | 53 | button("say hello").on_press(Message::Hello), |
|---|
| 54 | 54 | button("say bye").on_press(Message::Bye) |
|---|
| 55 | 55 | ].into() |
|---|
| 56 | | }}}} |
|---|
| 56 | } }}} |
|---|
| 57 | 57 | iced::run으로 실행하자 |
|---|
| 58 | 58 | {{{#!syntax rust |
|---|
| 59 | 59 | fn main () -> iced::Result { |
|---|
| 60 | 60 | iced::run(update, view)? |
|---|
| 61 | | }}}} |
|---|
| 61 | } }}} |
|---|
| 62 | 62 | == 특징 == |
|---|
| 63 | 63 | * 마지막 릴리즈가 ,,25년 9월 기준,,1년 전에 나왔다![* cargo add iced 대신 깃헙 주소를 입력하는 것을 추천한다. 브랜치는 master로] |
|---|
| 64 | 64 | * 비동기 처리를 자체 런타임을 이용해서 하는데 tokio[* 러스트에서 가장 많이쓰는 런타임] 런타임이랑 호환이 안되는듯 하다 |
|---|
| 65 | 65 | == 사용하는 소프트웨어 == |
|---|
| 66 | 66 | * cosmic |
|---|