День добрый.
Добрался до изучения процедурных макросов и сразу столкнулся с проблемой организации кода. Из доков понял что проц.макросы должны описываться в отдельных ящиках.
Как организовываются ящики внутри ящиков ?
Создал пакет в нём автоматом создался основной ящик в папке src, теперь в папке srs/bin создаём файлы и они уже будут не модулями а отдельными ящиками?
Господа, как и в какую структуру парсить вот такую строку a,b,c,d (формируется отдельной функцией)
чтобы потом вставить в шаблоне в пару мест. syn::parse_str::<Expr> паникует с такой строкой
#type_str = A, B, C, D
let body_part = syn::parse_str::<Expr>(&body_str).unwrap();
let gen = quote! {
impl<'a, Ot, #type_str> Alt<'a, Ot> for (#type_str)
{
fn choice(&self, input: &'a str) -> ParseResult<'a, Ot> {
#body_part
}
}
};
а как паникует?
выхлоп макроса можно посмотреть через cargo expand - это команда дополнительная для cargo.
Через нее можно увидеть что сформировалось в итоге.