Crates.io | box-self |
lib.rs | box-self |
version | 0.1.5 |
source | src |
created_at | 2022-10-07 16:42:59.573521 |
updated_at | 2023-08-24 09:46:34.823198 |
description | Easy way to duplicate a new function with self: Box |
homepage | |
repository | https://github.com/hoyunliu/box-self/ |
max_upload_size | |
id | 682973 |
size | 33,310 |
Easy way to duplicate a new function with self: Box<Self>
signature.
Sometimes you need both functions fn consume(self)
and fn consume_boxed(self: Box<Self>)
. This macro generates the second one for you.
use box_self::box_self;
trait Animal {
fn consume(self);
fn consume_boxed(self: Box<Self>);
}
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<Box<dyn Animal>>=
vec![Box::new(Dog{}), Box::new(Cat{})];
for anim in animals{
anim.consume_boxed();
}
}
Licensed under either of LICENSE-APACHE or 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