Skip to content

rust-windowing/winit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1703d04 · Jul 3, 2018
Sep 16, 2017
Jun 2, 2018
Jun 18, 2018
Jul 2, 2018
Apr 21, 2018
Jul 27, 2014
Jul 1, 2018
Sep 11, 2014
Jun 3, 2018
Jul 3, 2018
Jul 3, 2018
Jul 27, 2014
Jun 25, 2018
May 30, 2018

Repository files navigation

winit - Cross-platform window creation and management in Rust

Docs.rs

Build Status Build status

[dependencies]
winit = "0.16"

Usage

Winit is a window creation and management library. It can create windows and lets you handle events (for example: the window being resized, a key being pressed, a mouse movement, etc.) produced by window.

Winit is designed to be a low-level brick in a hierarchy of libraries. Consequently, in order to show something on the window you need to use the platform-specific getters provided by winit, or another library.

extern crate winit;

fn main() {
    let mut events_loop = winit::EventsLoop::new();
    let window = winit::Window::new(&events_loop).unwrap();

    events_loop.run_forever(|event| {
        match event {
            winit::Event::WindowEvent {
              event: winit::WindowEvent::CloseRequested,
              ..
            } => winit::ControlFlow::Break,
            _ => winit::ControlFlow::Continue,
        }
    });
}

Platform-specific usage

Emscripten and WebAssembly

Building a binary will yield a .js file. In order to use it in an HTML file, you need to:

  • Put a <canvas id="my_id"></canvas> element somewhere. A canvas corresponds to a winit "window".
  • Write a Javascript code that creates a global variable named Module. Set Module.canvas to the element of the <canvas> element (in the example you would retrieve it via document.getElementById("my_id")). More information here.
  • Make sure that you insert the .js file generated by Rust after the Module variable is created.