Open
Description
I'm writing a library that can attempt a few different methods of rendering into an SDL window. I wanted to have the library's user specify the window attributes they want, then pass that partially-complete WindowBuilder
into my create_renderer
function, which clones it for each renderer so that additional flags (e.g. .opengl()
or .vulkan()
) can be set before attempting to build the window in each case. Basically, I would like to be able to write:
pub fn create_renderer(video: &VideoSubsystem, builder: WindowBuilder)
-> Result<Box<dyn Renderer>, somethingsomething...> {
vulkan::create(video, builder.clone())
.or_else(|| gl32::create(video, builder.clone())
.or_else(|| gles::create(video, builder.clone())
.or_else(|| soft::create(video, builder.clone())
}
But as WindowBuilder
doesn't implement Clone
, I must instead use a different pattern, creating a fresh new WindowBuilder
each time.
I had a quick look and it seems that simply adding #[derive(Clone)]
to WindowBuilder
would meet my needs. I didn't see anything that looked like it would break.