impl_type_path!() { /* proc-macro */ }
Expand description
A replacement for deriving TypePath
for use on foreign types.
Since (unlike the derive) this macro may be invoked in a different module to where the type is defined, it requires an ‘absolute’ path definition.
Specifically, a leading ::
denoting a global path must be specified
or a preceding (in my_crate::foo)
to specify the custom path must be used.
§Examples
Implementing TypePath
on a foreign type:
ⓘ
impl_type_path!(::foreign_crate::foo::bar::Baz);
On a generic type (this can also accept trait bounds):
ⓘ
impl_type_path!(::foreign_crate::Foo<T>);
impl_type_path!(::foreign_crate::Goo<T: ?Sized>);
On a primitive (note this will not compile for a non-primitive type):
ⓘ
impl_type_path!(bool);
With a custom type path:
ⓘ
impl_type_path!((in other_crate::foo::bar) Baz);
With a custom type path and a custom type name:
ⓘ
impl_type_path!((in other_crate::foo as Baz) Bar);