Skip to content

Instantly share code, notes, and snippets.

@matthewjberger
Last active February 10, 2024 18:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewjberger/cab8801a73770368b698329beb786562 to your computer and use it in GitHub Desktop.
Save matthewjberger/cab8801a73770368b698329beb786562 to your computer and use it in GitHub Desktop.
Create a window in rust (winit 0.29+ anyhow + env_logger)
// [dependencies]
// anyhow = "1.0.40"
// env_logger = "0.11.1"
// winit = "0.29.10"
fn main() -> anyhow::Result<()> {
env_logger::init();
let event_loop = winit::event_loop::EventLoop::new()?;
let _window = winit::window::WindowBuilder::new()
.with_title("My App")
.with_inner_size(winit::dpi::PhysicalSize::new(800, 600))
.build(&event_loop)?;
event_loop.set_control_flow(winit::event_loop::ControlFlow::Poll);
event_loop.run(move |event, elwt| {
match event {
winit::event::Event::WindowEvent {
event:
winit::event::WindowEvent::KeyboardInput {
event:
winit::event::KeyEvent {
physical_key: winit::keyboard::PhysicalKey::Code(key_code),
..
},
..
},
..
} => {
if matches!(key_code, winit::keyboard::KeyCode::Escape) {
elwt.exit();
}
}
winit::event::Event::WindowEvent {
event: winit::event::WindowEvent::CloseRequested,
..
} => {
println!("The close button was pressed; stopping");
elwt.exit();
}
winit::event::Event::AboutToWait => {
// Update
// Draw
}
_ => (),
}
})?;
Ok(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment