Cacao (Rust bindings for AppKit)

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();
}