Skip to content

Instantly share code, notes, and snippets.

@matthewjberger
Created February 10, 2024 17:42
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/90ee56bc3e14d43b9e7f3002b705963e to your computer and use it in GitHub Desktop.
Save matthewjberger/90ee56bc3e14d43b9e7f3002b705963e to your computer and use it in GitHub Desktop.
Rust window (winit 0.28.7 + anyhow + env_logger)
// [dependencies]
// anyhow = "1.0.40"
// env_logger = "0.11.1"
// winit = "0.28.7"
use anyhow::Result;
fn main() -> Result<()> {
env_logger::init();
let event_loop = winit::event_loop::EventLoop::new();
let _window = winit::window::WindowBuilder::new()
.with_title("A fantastic window!")
.with_inner_size(winit::dpi::PhysicalSize::new(800, 600))
.build(&event_loop)?;
event_loop.run(move |event, _, control_flow| {
*control_flow = winit::event_loop::ControlFlow::Poll;
match event {
winit::event::Event::NewEvents(..) => {
// Handle events
// Update
}
winit::event::Event::WindowEvent {
event: winit::event::WindowEvent::CloseRequested,
..
} => {
*control_flow = winit::event_loop::ControlFlow::Exit;
}
winit::event::Event::MainEventsCleared => {
// Draw
}
winit::event::Event::WindowEvent {
event:
winit::event::WindowEvent::KeyboardInput {
input:
winit::event::KeyboardInput {
virtual_keycode: Some(keycode),
state,
..
},
..
},
..
} => {
if let (winit::event::VirtualKeyCode::Escape, winit::event::ElementState::Pressed) =
(keycode, state)
{
*control_flow = winit::event_loop::ControlFlow::Exit;
}
}
_ => {}
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment