thin_delegate 0.2.0

Auto implementation of trivial delegation to inner types
Documentation
// thin_delegate allows trait functions to have arguments other than a receiver.

#[thin_delegate::register]
pub trait Hello {
    fn hello(&self, prefix: &str) -> String;
}

impl Hello for String {
    fn hello(&self, prefix: &str) -> String {
        format!("{prefix}{self}")
    }
}

impl Hello for char {
    fn hello(&self, prefix: &str) -> String {
        format!("{prefix}{self}")
    }
}

#[thin_delegate::register]
enum Hoge {
    A(String),
    B(char),
}

#[thin_delegate::fill_delegate]
impl Hello for Hoge {}

fn main() {
    let hoge = Hoge::A("a".to_string());
    assert_eq!(hoge.hello("hello, "), "hello, a");

    let hoge = Hoge::B('b');
    assert_eq!(hoge.hello("hello, "), "hello, b");
}