Tag: RUST-MACROS
¿Es posible interpolar una variable macro_rules!, de tipo ident, en una cadena literal en una macro? En otras palabras, ¿es posible “escapar” las comillas dobles de la literal? // <code>trace_macros!</code> requires nightly <h1>![feature(trace_macros)]</h1> trace_macros!(true); macro_rules! export_mod_if_feature { ($system:ident) => { #[cfg(target_os = “$system”)] // <– el problema está aquí pub . . . Read more
¿Es posible exportar una función y una macro con el mismo nombre desde un módulo? Ejemplo lib.rs: mod log; fn foo() { log::info!(“”); log::info(“”); } En log.rs: – Usar pub(crate) use info; tiene conflictos con pub fn info() { .. } Usar `#[macro_export]` y `#[macro_use]` no permite espacios de nombres
Estoy escribiendo una macro de atributo y tratando de analizar los argumentos pasados ahí. Como: #[macro(Arg1, Arg2)] El problema es que no puedo encontrar la estructura correcta para analizarlo. Intenté analizarlo como Meta y MetaList, pero ninguno de ellos parece funcionar. pub fn some_macro(args: TokenStream, item: TokenStream) -> TokenStream { . . . Read more
Me gustaría crear una macro para transformar “count!(5)” en “1+1+1+1+1”. La razón final es usar “count!(N) – 1” en una definición de estructura donde “N” es un genérico constante. macro_rules! count { (1) => {0}; (2) => {1 + count!(1)}; ($n: tt) => {1 + count!($n – 1)}; } struct . . . Read more
Estoy intentando escribir una macro de atributo para un proc-macro que me permita eliminar un campo de una estructura o reemplazar completamente su firma. Algo similar a esto: #[derive(my_macro)] struct OurStruct{ a: i32, #[my_macro(remove)] field_to_remove: i32 } Lo cual debería resultar en: struct OurStruct{ a: i32, } Sé cómo escribir . . . Read more