宏编程 #
一、声明宏 #
rust
macro_rules! my_vec {
($($x:expr),*) => {
{
let mut temp_vec = Vec::new();
$(
temp_vec.push($x);
)*
temp_vec
}
};
}
fn main() {
let v = my_vec![1, 2, 3];
println!("{:?}", v);
}
二、过程宏 #
2.1 派生宏 #
rust
use proc_macro::TokenStream;
#[proc_macro_derive(HelloMacro)]
pub fn hello_macro_derive(input: TokenStream) -> TokenStream {
// 实现
TokenStream::new()
}
2.2 属性宏 #
rust
#[proc_macro_attribute]
pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {
item
}
2.3 函数式宏 #
rust
#[proc_macro]
pub fn sql(input: TokenStream) -> TokenStream {
input
}
三、总结 #
本章学习了:
- 声明宏
- 过程宏类型
最后更新:2026-03-27