Сборка Windows на Rust: руководство для начинающих по созданию графических интерфейсов

Привет! Если вы хотите создать окно в Rust для создания графических пользовательских интерфейсов (GUI), вы попали по адресу. В этой статье блога мы рассмотрим различные методы создания окон в Rust и попутно предоставим примеры кода. Итак, приступим!

Метод 1: использование ящика winit

Крейт winit— популярный выбор для создания окон в Rust. Он предоставляет кроссплатформенный API для создания окон и обработки событий. Вы можете добавить ящик winitв файл Cargo.tomlследующим образом:

[dependencies]
winit = "0.24"

Вот пример фрагмента кода, который создает базовое окно с использованием winit:

use winit::{
    event::{Event, WindowEvent},
    event_loop::{ControlFlow, EventLoop},
    window::WindowBuilder,
};
fn main() {
    let event_loop = EventLoop::new();
    let window = WindowBuilder::new().build(&event_loop).unwrap();
    event_loop.run(move |event, _, control_flow| {
        match event {
            Event::WindowEvent { event, .. } => match event {
                WindowEvent::CloseRequested => *control_flow = ControlFlow::Exit,
                _ => (),
            },
            _ => (),
        }
    });
}

Метод 2: использование ящика gtk-rs

Если вы предпочитаете использовать набор инструментов GTK для создания приложений с графическим интерфейсом, вы можете использовать крейт gtk-rs. Он предоставляет привязки к библиотеке GTK для Rust. Чтобы добавить ящик gtk-rsв свой проект, измените файл Cargo.tomlследующим образом:

[dependencies]
gtk = "0.9"

Вот пример фрагмента кода, который создает окно с помощью gtk-rs:

use gtk::prelude::*;
use gtk::{Button, Window, WindowType};
fn main() {
    gtk::init().expect("Failed to initialize GTK.");
    let window = Window::new(WindowType::Toplevel);
    window.set_title("My Window");
    window.set_default_size(400, 300);
    window.connect_delete_event(|_, _| {
        gtk::main_quit();
        Inhibit(false)
    });
    let button = Button::with_label("Click me!");
    window.add(&button);
    window.show_all();
    gtk::main();
}

Метод 3: использование ящика druid

Другой вариант создания окон в Rust — крейт druid. Он обеспечивает декларативный и управляемый данными подход к созданию пользовательских интерфейсов. Чтобы добавить ящик druidв свой проект, включите в файл Cargo.tomlследующее:

[dependencies]
druid = "0.7"

Вот пример фрагмента кода, который создает окно с использованием druid:

use druid::widget::{Button, Flex, Label};
use druid::{AppLauncher, LocalizedString, Widget, WidgetExt, WindowDesc};
fn build_app() -> impl Widget<()> {
    let label = Label::new("Hello, Rust!");
    let button = Button::new("Click me!");
    let layout = Flex::column().with_child(label).with_child(button);
    layout.center()
}
fn main() {
    let window = WindowDesc::new(build_app)
        .title(LocalizedString::new("My Window"))
        .window_size((400.0, 300.0));
    AppLauncher::with_window(window)
        .launch(())
        .expect("Failed to launch application.");
}

Это всего лишь несколько методов создания окон в Rust, но существует множество других библиотек и фреймворков, доступных в зависимости от ваших конкретных потребностей. Не стесняйтесь исследовать и экспериментировать с различными вариантами!

Надеюсь, эта статья поможет вам начать создавать окна в Rust. Приятного кодирования!