Rust eguiの基本

RustのフレームワークにはTauri, Druid, egiなどがある

### eguiを準備
Cargo.tomlのdependenciesを修正
eframeとeguiの2つのパッケージをインストールする
eframeはアプリケーション開発の基本機能を提供、eguiはguiライブラリ

[dependencies]
eframe = "0.21.0"
egui = "0.21.0"

アプリケーションの実行はeframeのrun_nativeを使う
eframe::run_native(name, , )
nativeOptionsはオプション設定などの情報管理
AppCreatorは構造体
AppCreatorのBox生成

### アプリの実行

fn main() {
    let native_options = eframe::NativeOptions::default();
    let _ = eframe::run_native("My egui App", native_options,
    	Box::new(|cc| Box::new(MyEguiApp::new(cc))));
}

#[derive(Default)]
struct MyEguiApp {}

impl MyEguiApp {
	fn new(_cc: &eframe::CreationContext<'_>)-> Self {
		Self::default()
	}
}

impl eframe::App for MyEguiApp {
	fn update(&mut self, _ctx: &egui::Context, _frame: &mut eframe::Frame){}
}
impl eframe::App for MyEguiApp {
	fn update(&mut self, _ctx: &egui::Context, _frame: &mut eframe::Frame){
		egui::CentralPanel::default().show(ctx, |ui|{
			ui.heading("Hello World!");
		})
	}
}

テーマを変える

fn main() {
    let native_options = eframe::NativeOptions::default();
    native_options.default_theme = eframe::Theme::Light;
    let _ = eframe::run_native("My egui App", native_options,
    	Box::new(|cc| Box::new(MyEguiApp::new(cc))));
}

ラベルのテキストサイズを変更

impl eframe::App for MyEguiApp {
	fn update(&mut self, _ctx: &egui::Context, _frame: &mut eframe::Frame){
		egui::CentralPanel::default().show(ctx, |ui|{
			ui.heading("Hello World!");
			let label_txt = egui::RichText::new("This is sample message.")
				.font(egui::FontId::proportional(32.0));
			let label = egui::Label::new(label_text);
			ui.add(label);
		});
	}
}
impl eframe::App for MyEguiApp {
	fn update(&mut self, _ctx: &egui::Context, _frame: &mut eframe::Frame){
		egui::CentralPanel::default().show(ctx, |ui|{
			ui.heading("Hello World!");
			let label_txt = egui::RichText::new("This is sample message.")
				.size(32.0)
				.color(egui::Color32::from_rgba_premultiplied(255,0,0,100))
				.italics();
			let label = egui::Label::new(label_text);
			ui.add(label);
		});
	}
}