Macro objekt::clone_trait_object [−][src]
macro_rules! clone_trait_object { ($($path:tt)+) => { ... }; }
Implement the standard library Clone
for a trait object that has
objekt::Clone
as a supertrait.
#[macro_use] extern crate objekt; trait MyTrait: objekt::Clone { /* ... */ } clone_trait_object!(MyTrait); // Now data structures containing Box<MyTrait> can derive Clone. #[derive(Clone)] struct Container { trait_object: Box<MyTrait>, }
The macro supports traits that have type parameters and/or where
clauses.
use std::io::Read; trait Difficult<R>: objekt::Clone where R: Read { /* ... */ } clone_trait_object!(<R> Difficult<R> where R: Read);