# box-self Easy way to duplicate a new function with `self: Box` signature. Sometimes you need both functions `fn consume(self)` and `fn consume_boxed(self: Box)`. This macro generates the second one for you. ## Examples ```rust use box_self::box_self; trait Animal { fn consume(self); fn consume_boxed(self: Box); } struct Dog{} impl Animal for Dog{ #[box_self(_boxed)] fn consume(self) { println!("Bark"); } } struct Cat{} impl Animal for Cat{ #[box_self(_boxed)] fn consume(self) { println!("Jump"); } } fn main(){ let animals:Vec>= vec![Box::new(Dog{}), Box::new(Cat{})]; for anim in animals{ anim.consume_boxed(); } } ```

#### Motivation: - [`How to call a method that consumes self on a boxed trait object?`] [`How to call a method that consumes self on a boxed trait object?`]: https://stackoverflow.com/questions/46620790/how-to-call-a-method-that-consumes-self-on-a-boxed-trait-object
#### License Licensed under either of [LICENSE-APACHE](LICENSE-APACHE) or [LICENSE-MIT](LICENSE-MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. License: MIT OR Apache-2.0