Skip to content

Implement trivial clone for WindowBuilder #1201

Open
@SolraBizna

Description

@SolraBizna

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions