You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过结构体成员委托实现Trait,是否有现成Rust宏 crate?

可用的Rust委托宏Crates
  • delegate:这是专门处理trait方法委托的常用过程宏crate,能自动生成结构体的trait实现并将所有方法委托给指定成员。

针对你的SectoredStream结构体实现Read trait的示例:

use delegate::delegate;
use std::io::{Read, Result};

struct SectoredStream<T> {
    sector_sz: usize,
    inner: T,
}

delegate! {
    impl<T: Read> Read for SectoredStream<T> {
        // 只需声明要委托的trait方法,宏会自动生成委托实现
        fn read(&mut self, buf: &mut [u8]) -> Result<usize>;
        // Read的其他方法(如read_to_end、read_exact等)也会被自动委托,无需逐个声明
    }
}
  • derive_delegate:另一个可选crate,通过derive属性实现委托,写法更简洁:
use derive_delegate::Delegate;
use std::io::Read;

#[derive(Delegate)]
#[delegate(Read)]
struct SectoredStream<T> {
    sector_sz: usize,
    // 指定该成员为委托目标
    #[delegate(target)]
    inner: T,
}

这两个crate都能处理复杂trait的委托场景,彻底省去手动编写样板代码的麻烦。

内容的提问来源于stack exchange,提问作者UserSpaceMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:15:36