本文へスキップ

プロジェクト構成

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 はクレートのディレクトリです。

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.config.ts より先に quickgui.toml を読みます。任意のクレート機能は、アプリ設定の extensions ではなく Cargo.toml で有効にします。

#パッケージ

アプリケーションは quickgui クレートに依存します。@quickgui/cli は開発用の依存関係です。任意の terminal、markdown、editor、updater 機能は Cargo の features です。プロジェクトにあるクレートのバージョンはそのままにして、feature を追加します:

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

#ローカル開発

quickgui check
quickgui test
quickgui fmt
quickgui dev
quickgui build

dev はソースの変更に合わせて再ビルドします。