#box #traits #macro #forwarding #macro-derive

box-dyn

宏,用于为 Box 推导 Trait 的实现

4 个版本

0.0.8 2024 年 5 月 24 日
0.0.7 2024 年 5 月 24 日
0.0.6 2024 年 5 月 24 日
0.0.5 2024 年 5 月 24 日

Rust 模式 中排名 #1018

每月下载量 31

自定义许可证

10KB
111 行代码(不包括注释)

box-dyn

build status test status crates.io docs.rs

一个简单的宏,以下是使用方法

#[box_dyn::box_dyn]
trait MyTrait {
    fn method_a(&self, param: usize) -> String;
    fn method_b(&mut self);
}

这将自动为 MyTrait 实现 Box<T: MyTrait>

impl<T> MyTrait for Box<T> where T: MyTrait {
    fn method_a(&self, param: usize) -> String {
        MyTrait::method_a(self.as_ref(), param)
    }
    fn method_b(&mut self) {
        MyTrait::method_b(self.as_mut())
    }
}

依赖

~0.5–1MB
~22K SLoC