I have a struct which looks something like this:
pub struct MyStruct
where
F: Fn(usize) -> f64,
{
field: usize,
mapper: F,
// fie
You can't Clone
closures. The only one in a position to implement Clone
for a closure is the compiler... and it doesn't. So, you're kinda stuck.
There is one way around this, though: if you have a closure with no captured variables, you can force a copy via unsafe
code. That said, a simpler approach at that point is to accept a fn(usize) -> f64
instead, since they don't have a captured environment (any zero-sized closure can be rewritten as a function), and are Copy
.