[dependencies]winit="0.22.2"
For featureswithin the scope of winit, seeFEATURES.md.
For featuresoutside the scope of winit, seeMissing features provided by other crates in the wiki.
Join us in any of these:
Winit is a window creation and management library. It can create windows and lets you handleevents (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 toshow something on the window you need to use the platform-specific getters provided by winit, oranother library.
usewinit::{event::{Event, WindowEvent},event_loop::{ControlFlow, EventLoop},window::WindowBuilder,};fnmain(){let event_loop=EventLoop::new();let window=WindowBuilder::new().build(&event_loop).unwrap(); event_loop.run(move|event,_, control_flow|{*control_flow=ControlFlow::Wait;match event{Event::WindowEvent{ event:WindowEvent::CloseRequested, window_id,}if window_id== window.id()=>*control_flow=ControlFlow::Exit,_=>(),}});}
Winit is only officially supported on the latest stable version of the Rust compiler.
Winit provides the following features, which can be enabled in yourCargo.toml
file:
serde
: Enables serialization/deserialization of certain types withSerde.Building a binary will yield a.js
file. In order to use it in an HTML file, you need to:
<canvas id="my_id"></canvas>
element somewhere. A canvas corresponds to a winit "window".Module
. SetModule.canvas
tothe element of the<canvas>
element (in the example you would retrieve it viadocument.getElementById("my_id")
).More informationhere..js
file generated by Rust after theModule
variable is created.This library makes use of thendk-rs crates, refer to that repo for more documentation.
Running on an Android device needs a dynamic system library, add this to Cargo.toml:
[[example]]name="request_redraw_threaded"crate-type=["cdylib"]
And add this to the example file to add the native activity glue:
#[cfg(target_os="android")]ndk_glue::ndk_glue!(main);
And run the application withcargo apk run --example request_redraw_threaded