dtolnay / reflect

Compile-time reflection API for developing robust procedural macros (proof of concept)

Home Page:https://docs.rs/reflect

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implement auto-ref

dtolnay opened this issue · comments

If a library method is declared to take self by reference or mut reference and the user's macro invokes the method with a receiver that is not a reference, it would be good to mirror rustc's rules around automatically taking a reference to the receiver.

library! {
    extern crate krate {
        type Struct;

        impl Struct {
            fn method(&self);
        }
    }
}

let receiver = /* ... by value */;
RUNTIME::krate::Struct::method.INVOKE(receiver.reference()); // should not require reference()