ryanmcgrath/cacao: Rust bindings for AppKit (macOS) and UIKit (iOS/tvOS)
μ΄ λΌμ΄λΈλ¬λ¦¬λ macOSμ AppKit(λ² ν νμ§, μλΉν μ¬μ© κ°λ₯) λ° iOS/tvOSμ UIKit(μν νμ§, repo μ°Έμ‘°)μ λν μμ ν λ¬μ€νΈ λ°μΈλ©μ μ 곡ν©λλ€. Swift λλ Objective-Cμμ μ΄μ μ νλ μμν¬μ λν νλ‘κ·Έλλ°μ μνν μ μ΄ μλ€λ©΄ μΉμνκ² λλ μ μλ λ°©μμΌλ‘ κ·Έλ κ² νλ €κ³ ν©λλ€. Rustμμλ μμ λͺ¨λΈ λλ¬Έμ κΉλ€λ‘μ§λ§, λͺλͺ μ°½μμ μΈ μ½λ©κ³Ό κ°μ μ μ°λ¦¬λ₯Ό κ½€ λ©λ¦¬κΉμ§ λ°λ €λ€ μ€ μ μμ΅λλ€.
μ΄κ²μ νλ‘μ νΈκ° λ κ΄λ²μν μ¬μ©μ λ³Ό μ μλλ‘ λΆλΆμ μΌλ‘ crates.io μ μ‘΄μ¬νλ©°, μ΄λ κ°λ°μ μ 보λ₯Ό μ 곡ν μ μμ΅λλ€. μ¦, μ΄ λΌμ΄λΈλ¬λ¦¬λ νμ¬ μ΄κΈ° λ¨κ³μ΄λ©° λ²κ·Έκ° μμ μ μμ΅λλ€. μ΄ λΌμ΄λΈλ¬λ¦¬μ μ¬μ©μ μ¬μ©μμ μ± μμ λλ€. κ·Έλ¬λ κ·μΉ(λ©λͺ¨λ¦¬/μμ κΆ κ΄λ ¨)μ λ°λ₯΄λ©΄ μΌλΆ μ±μμλ μ΄λ―Έ λ¬Έμ κ° μμ΅λλ€. ν΅μ¬ μ μ₯μμλ μμνλ λ° λμμ΄ λλ λ€μν μμ κ° μμ΅λλ€.
use cacao::appkit::{App, AppDelegate};
use cacao::appkit::window::Window;
#[derive(Default)]
struct BasicApp {
window: Window
}
impl AppDelegate for BasicApp {
fn did_finish_launching(&self) {
self.window.set_minimum_content_size(400., 400.);
self.window.set_title("Hello World!");
self.window.show();
}
}
fn main() {
App::new("com.hello.world", BasicApp::default()).run();
}