1 use std::collections::HashMap;
2 use winit::{
3 event::{ElementState, Event, KeyboardInput, WindowEvent},
4 event_loop::{ControlFlow, EventLoop},
5 window::Window,
6 };
7
main()8 fn main() {
9 simple_logger::init().unwrap();
10 let event_loop = EventLoop::new();
11
12 let mut windows = HashMap::new();
13 for _ in 0..3 {
14 let window = Window::new(&event_loop).unwrap();
15 windows.insert(window.id(), window);
16 }
17
18 event_loop.run(move |event, event_loop, control_flow| {
19 *control_flow = ControlFlow::Wait;
20
21 match event {
22 Event::WindowEvent { event, window_id } => {
23 match event {
24 WindowEvent::CloseRequested => {
25 println!("Window {:?} has received the signal to close", window_id);
26
27 // This drops the window, causing it to close.
28 windows.remove(&window_id);
29
30 if windows.is_empty() {
31 *control_flow = ControlFlow::Exit;
32 }
33 }
34 WindowEvent::KeyboardInput {
35 input:
36 KeyboardInput {
37 state: ElementState::Pressed,
38 ..
39 },
40 ..
41 } => {
42 let window = Window::new(&event_loop).unwrap();
43 windows.insert(window.id(), window);
44 }
45 _ => (),
46 }
47 }
48 _ => (),
49 }
50 })
51 }
52