Um tipo usa @derive(T), mas nenhum deriver para T está disponível no
escopo. Zolo não ignora esse caso: um nome digitado incorretamente não pode
produzir um programa parcialmente gerado que só falha em runtime.
@derive(Tabel) // TE218: provavelmente deveria ser `Table`
struct Todo { id: int }Como corrigir¶
Corrija o nome ou importe a função pública que declara o deriver. Derivers de
biblioteca são uma superfície comptime normal e podem ser renomeados no use.
use orm::Model
@derive(Model)
struct Todo { id: int }A biblioteca deve exportar a declaração correspondente:
@derive_for(Model)
pub fn Model(info) -> Syntax<.Items> {
quote items { impl ${info.ref} {} }
}Nomear a exportação pública como a capacidade deixa o contrato explícito:
use orm::Model habilita @derive(Model). Helpers de implementação podem
continuar privados e usar snake_case. O formato antigo — importar uma função
pública chamada derive_model — continua compatível, mas não é a convenção
recomendada para bibliotecas.