Thank you for your help bluss.
Here is the final code for others who may encounter this issue:
trait Foo {
fn box_clone(&self) -> Box<Foo>;
}
impl Clone for Box<Foo>
{
fn clone(&self) -> Box<Foo> {
self.box_clone()
}
}
#[derive(Clone)]
struct Bar;
impl Foo for Bar {
fn box_clone(&self) -> Box<Foo> {
Box::new((*self).clone())
}
}
#[test]
fn it_works() {
let baz = Box::new(Bar) as Box<Foo>;
let qux = baz.clone();
}