1 extern crate sdl2; 2 3 use sdl2::pixels::Color; 4 use sdl2::event::Event; 5 use sdl2::keyboard::Keycode; 6 use std::time::Duration; 7 main() -> Result<(), String>8pub fn main() -> Result<(), String> { 9 let sdl_context = sdl2::init()?; 10 let video_subsystem = sdl_context.video()?; 11 12 let window = video_subsystem.window("rust-sdl2 demo: Video", 800, 600) 13 .position_centered() 14 .opengl() 15 .build() 16 .map_err(|e| e.to_string())?; 17 18 let mut canvas = window.into_canvas().build().map_err(|e| e.to_string())?; 19 20 canvas.set_draw_color(Color::RGB(255, 0, 0)); 21 canvas.clear(); 22 canvas.present(); 23 let mut event_pump = sdl_context.event_pump()?; 24 25 'running: loop { 26 for event in event_pump.poll_iter() { 27 match event { 28 Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { 29 break 'running 30 }, 31 _ => {} 32 } 33 } 34 ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60)); 35 // The rest of the game loop goes here... 36 } 37 38 Ok(()) 39 } 40