我正在尝试在Rust中开始使用TDD,我需要编写一个宏,该宏返回枚举类型中的变体数量。我的实现类似于这个:
extern crate proc_macro;
extern crate syn;
#[macro_use]
extern crate quote;
use proc_macro::TokenStream;
#[proc_macro_derive(EnumVariantCount)]
pub fn derive_enum_variant_count(input: TokenStream) -> TokenStream {
let syn_item: syn::DeriveInput = syn::parse(input).unwrap();
let len = match syn_item.data {
syn::Data::Enum(enum_item) => enum_item.variants.len(),
_ => panic!("EnumVariantCount only works on Enums"),
};
let expanded = quote! {
const LENGTH: usize = #len;
};
expanded.into()
}
首先,我想编写一个测试来检查此宏是否仅适用于枚举。这该如何实现?我是否可以在单元测试中检查文件是否编译通过?是否有一些关于测试Rust宏的文档我忽略了?
macrotest
也是一个类似的选择。 - undefined