extern crate sdl2; use sdl2::pixels::Color; use sdl2::event::Event; use sdl2::keyboard::Keycode; pub fn main() -> Result<(), String> { let sdl_context = sdl2::init()?; let video_subsystem = sdl_context.video()?; let window = video_subsystem .window("rust-sdl2 demo: Window", 800, 600) .resizable() .build() .map_err(|e| e.to_string())?; let mut canvas = window.into_canvas().present_vsync().build().map_err(|e| e.to_string())?; let mut tick = 0; let mut event_pump = sdl_context.event_pump().map_err(|e| e.to_string())?; 'running: loop { for event in event_pump.poll_iter() { match event { Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => break 'running, _ => {} } } { // Update the window title. let window = canvas.window_mut(); let position = window.position(); let size = window.size(); let title = format!("Window - pos({}x{}), size({}x{}): {}", position.0, position.1, size.0, size.1, tick); window.set_title(&title).map_err(|e| e.to_string())?; tick += 1; } canvas.set_draw_color(Color::RGB(0, 0, 0)); canvas.clear(); canvas.present(); } Ok(()) }