<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          vgtkRust 實(shí)現(xiàn)的桌面 UI 框架

          聯(lián)合創(chuàng)作 · 2023-09-28 06:08

          vgtk 是 Rust 編寫的聲明式桌面 UI 框架,內(nèi)置了 GTK 和 Gtk-rs。

          示例

          use vgtk::{ext::*, gtk, run, Component, UpdateAction, VNode};
          use vgtk::lib::{gtk::*, gio::ApplicationFlags};
          
          #[derive(Clone, Default, Debug)]
          struct Model {
              counter: usize,
          }
          
          #[derive(Clone, Debug)]
          enum Message {
             Inc,
             Exit,
          }
          
          impl Component for Model {
             type Message = Message;
             type Properties = ();
          
             fn update(&mut self, message: Message) -> UpdateAction<Self> {
                 match message {
                     Message::Inc => {
                         self.counter += 1;
                         UpdateAction::Render
                     }
                     Message::Exit => {
                         vgtk::quit();
                         UpdateAction::None
                     }
                 }
             }
          
             fn view(&self) -> VNode<Model> {
                 gtk! {
                     <Application::new_unwrap(None, ApplicationFlags::empty())>
                         <Window border_width=20 on destroy=|_| Message::Exit>
                             <HeaderBar title="inc!" show_close_button=true />
                             <Box spacing=10 halign=Align::Center>
                                 <Label label=self.counter.to_string() />
                                 <Button label="inc!" image="add" always_show_image=true
                                         on clicked=|_| Message::Inc />
                             </Box>
                         </Window>
                     </Application>
                 }
             }
          }
          
          fn main() {
             std::process::exit(run::<Model>());
          }

          特性

          •  Elm 架構(gòu)、Redux 和 Yew 啟發(fā),采用了簡潔、實(shí)用的組件模型 
          • 采用了一種聲明式 DSL,用于組合受 React 和 JSX 啟發(fā)的 GTK 小部件,使用虛擬“DOM”差異進(jìn)行有效更新
          • 完全跨平臺(tái),具有適用于 Linux、Windows 和 macOS 的原生外觀
          • 無需依賴嵌入式瀏覽器引擎
          • 基于 Rust 的Future構(gòu)建,使用 GLib 的事件循環(huán),提供了與 GTK 事件模型干凈集成的 async/await
          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线成人网超逼视频 | 青青草黄色成人视频 | 国产探花视频在线观看 | 天天干天天操天天射 | 逼久久久 |