跳到正文

项目结构

Rust 项目把应用代码放在 Cargo 包里,开发命令放在一个小型 Bun 包里。

#生成的文件

my-app/
├── resources/
│   └── icon.png
├── src/main.rs
├── Cargo.toml
├── Cargo.lock
├── quickgui.config.ts
├── package.json
└── README.md

首次成功构建后请提交 Cargo.lock。较大的应用可以拆成普通的 Rust 模块。

#应用入口

src/main.rs 通过 Application::new().run(...) 启动,并从该回调打开窗口。每个窗口拥有一个 View。配置中的 entry 是 crate 目录。

fn main() -> Result<(), quickgui::AppError> {
    Application::new().run(|cx| {
        cx.open_window(WindowOptions::new("My App").size(760.0, 520.0), App);
    })
}

#配置

import { defineConfig } from "@quickgui/cli";

export default defineConfig({
  language: "rust",
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
  fonts: ["assets/MyFont.ttf"],
});

应用图标来自 resources/icon.png。额外文件可以列在 resources 中。见应用图标和打包资源。TOML 支持相同的键。CLI 会先读 quickgui.toml,再读 quickgui.config.ts。可选的 crate feature 请在 Cargo.toml 中启用,不要在应用配置里设置 extensions。

#软件包

应用依赖 quickgui crate。@quickgui/cli 是开发依赖。可选的 terminal、markdown、editor 和 updater 能力是 Cargo feature。保留项目里已有的 crate 版本,并加上 feature:

[dependencies]
quickgui = { version = "...", features = ["updater"] }

#本地开发

quickgui check
quickgui test
quickgui fmt
quickgui dev
quickgui build

dev 会在源码变化时重新构建。