#![allow(dead_code)] | |
use std::ops::Add; | |
use darling::{FromDeriveInput, FromMeta}; | |
#[derive(Debug, Clone, FromMeta)] | |
#[darling(bound = "T: FromMeta + Add")] | |
struct Wrapper<T>(pub T); | |
impl<T: Add> Add for Wrapper<T> { | |
type Output = Wrapper<<T as Add>::Output>; | |
fn add(self, rhs: Self) -> Wrapper<<T as Add>::Output> { | |
Wrapper(self.0 + rhs.0) | |
} | |
} | |
#[derive(Debug, FromDeriveInput)] | |
#[darling(attributes(hello), bound = "Wrapper<T>: Add, T: FromMeta")] | |
struct Foo<T> { | |
lorem: Wrapper<T>, | |
} | |
#[test] | |
fn expansion() {} |