Получить имя признака и общие параметры для ItemImpl с помощью syn

#rust #rust-macros

#Ржавчина #rust-макросы

Вопрос:

У меня есть такой код:

 #[my_attribute]
impl<T> Foo<T> for Bar where T: Baz { ... }
 

Как получить Foo<T> деталь из ItemImpl ?

Ответ №1:

trait_ Поле ItemImpl содержит интересующую вас информацию

 trait_: Option<(Option<Bang>, Path, For)>
 

Это Option так, как блоки impl не должны реализовывать признак (например impl Baz { } ). Из внутреннего трехкорпуса вас интересует второй элемент, the Path . Который содержит ваш Foo<T> .

Комментарии:

1. Спасибо, уже нашел. Если кому-то интересно, код выглядит примерно так: amp;trait_def.trait_.as_ref().unwrap().1