É possível escrever uma macro Rust que será expandida para uma assinatura de função / método?

Gostaria muito de poder algo como o seguinte:

macro_rules! impl_a_method(
    ($obj:ident, $body:block) => (
        fn a_method(foo: Foo, bar: Bar, baz: Baz) -> $obj $body
    )
)

// Implementation would look like:

impl_a_method!(MyType, {
    MyType {
        foo: foo.blah(),
        bar: bar.bloo(),
        baz: baz.floozy(),
    }
})

Meu exemplo do mundo real apresenta métodos com assinaturas muito maiores que eu tenho que implementar de maneiras únicas para mais de 30 tipos diferentes.

Eu tentei algo semelhante à macro acima, no entanto, encontro erros onde a rustc considerafoo, bar ebaz nomes não resolvidos no site de expansão (mesmo que eu tenha certeza de que a declaração da macro precede lexicamente o uso).

É possível fazer algo assim?

Caso contrário, você pode recomendar uma abordagem que atinja algo semelhante?

questionAnswers(1)

yourAnswerToTheQuestion