Usage:

```rust use wgpuplayground::winit::{ event::WindowEvent, eventloop::ControlFlow, eventloop::EventLoop, window::Window, }; use wgpuplayground::{wgpu, Spawner};

fn main() { let eventloop = EventLoop::new(); let window = Window::new(&eventloop).unwrap(); wgpuplayground::run::(window, eventloop) }

struct App {}

impl wgpu_playground::Playground for App { fn init( config: &wgpu::SurfaceConfiguration, adapter: &wgpu::Adapter, device: &wgpu::Device, queue: &wgpu::Queue, ) -> Self { Self {} }

fn resize(
    &mut self,
    config: &wgpu::SurfaceConfiguration,
    device: &wgpu::Device,
    queue: &wgpu::Queue,
) {
    // ...
}

fn update(&mut self, event: WindowEvent, control_flow: &mut ControlFlow) {
    if let WindowEvent::CloseRequested = event {
        *control_flow = ControlFlow::Exit;
    }
    // ...
}

fn render(
    &mut self,
    view: &wgpu::TextureView,
    device: &wgpu::Device,
    queue: &wgpu::Queue,
    spawner: &Spawner,
) {
    // ...
}

} ```