172 похожих чатов

Здравствуйте. Я столкнулся со следующей проблемой. У меня есть процедурный макрос, который

имплементирует трейт на типе. Имплементация этого трейта является требованием в некоторых сигнатурах внутри моего кода. Мой крейт компилируется без ошибок.

Но когда я пытаюсь скомпилировать документацию cargo doc, то Cargodoc по всей видимости игнорирует этот процедурный макрос, и выдает кучу ошибок о том, что трейт не имплементирован для разных типов в коде.

Как это победить?

6 ответов

8 просмотров

Репро минимальное дать

Ilya-Lakhin Автор вопроса
Пух
Репро минимальное дать

Попробую, но это сложно, учитывая, что проц-макрос задействован.

Я с чем-то похожим столкнулся в своем проекте, когда писал свою библиотеку (все еще пишу 😢) В своем проекте я использовал deluxe для парсинга аттрибутов derive-макроса и proc_macro_crate для получения названия родительского крейта Все замечательно работало до того момента, как я начал использовать derive-макрос в doc-тестах После чего я вспомнил, что в tokio в макросе main есть доп аттрибут для ручного именования крейта После чего решил у себя добавить точно такой же функционал на случай, если proc_macro_crate не сможет определить название крейта Прикладываю исходный код на мое решение, чтобы было проще понять, что и где происходит Код для парсинга аттрибутов: https://github.com/toucan-games/stream_ecs/blob/main/crates/stream-ecs-macros/src/component.rs Код использования аттрибута в doc-тестах: https://github.com/toucan-games/stream_ecs/blob/main/crates/stream-ecs/src/component/storage/array/basic.rs#L34-L40

Ilya-Lakhin Автор вопроса
Timur Tugushev
Я с чем-то похожим столкнулся в своем проекте, ког...

Большое спасибо за помощь! Я должен извиниться, у меня ситуация оказалась намного проще, чем то, что я описывал. У меня в крейте есть атрибут, включающий мои собственные макросы, про который я совершенно забыл. И вот он у меня был выставлен в субкрейте, в котором всё благополучно компилировалось, и был не выставлен в основном крейте, в котором, соответственно, всё и не компилировалось(я сначала думал, что только доки не компилируются). Поэтому свою проблему я решил, устарнив собственную невнимательность :) А случай, который вы описали несколько иной, хотя я думаю, с этим полезно ознакомиться. Проблема, похожая на вашу, кстати, у меня была с крейтом linkme, которую я тоже решил примерно как вы описали.

Ilya Lakhin
Большое спасибо за помощь! Я должен извиниться, у...

Недавно с linkme была такая же проблема Но не решил и перешел на inventory

Ilya-Lakhin Автор вопроса
Alexey Sokolovskiy
Недавно с linkme была такая же проблема Но не реши...

В линкми есть секретный недокументированный атрибут #[linkme(crate = <путь к линкми крейту>)]

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта