Rust · Avançado · Inglês · Técnico
procedural macro
Macro escrita como função Rust que recebe e devolve um fluxo de tokens, executada na compilação. Pode ser derive, atributo ou função, e vive numa crate proc-macro.
Onde usar
Aparece em #[derive(Serialize)] e em atributos como #[tokio::main]. Costuma-se usar as crates syn e quote para analisar e gerar código.
Em código
// crate com proc-macro = true no Cargo.toml
use proc_macro::TokenStream;
#[proc_macro_derive(Oi)]
pub fn deriva_oi(_i: TokenStream)
-> TokenStream {
TokenStream::new()
}Exemplos
The derive is a procedural macro.
O derive é uma procedural macro.
Use syn and quote to write the procedural macro.
Use syn e quote para escrever a procedural macro.
Cuidado
Precisa ficar em uma crate própria, separada, e essa crate só pode exportar macros.
Sinônimos
proc macro
Antônimos
macro_rules