6个版本
0.1.5 | 2023年8月24日 |
---|---|
0.1.4 | 2023年8月24日 |
0.1.3 | 2022年10月7日 |
#548 in 过程宏
11KB
72 代码行
box-self
轻松复制具有self: Box<Self>
签名的函数。
有时你需要同时使用函数fn consume(self)
和fn consume_boxed(self: Box<Self>)
。此宏为你生成第二个。
示例
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();
}
}
动机
许可证
在LICENSE-APACHE或LICENSE-MIT中选择一个许可证。
除非你明确指出,否则根据Apache-2.0许可证,你提交给此crate的任何有意贡献都将双重许可,如上所述,没有其他条款或条件。
许可证:MIT OR Apache-2.0
依赖项
~3.5–10MB
~93K SLoC