mirror of
https://github.com/RustyCab/LearnRustEasy.git
synced 2026-02-03 10:13:23 +08:00
Create chapter_3_23_1.md
This commit is contained in:
28
src/chapter_3/chapter_3_23_1.md
Normal file
28
src/chapter_3/chapter_3_23_1.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 3.23.1 声明宏
|
||||
声明宏使用macro_rules!定义,是Rust中最常用的宏形式。下面代码中定义Vec时使用的vec!就是一个声明宏:
|
||||
```Rust
|
||||
fn main() {
|
||||
let _v = vec![1, 2, 3]; // 使用声明宏vec!定义一个Vec
|
||||
}
|
||||
```
|
||||
|
||||
下面的例子演示定义一个声明宏并使用它:
|
||||
```Rust
|
||||
// 定义一个声明宏my_vec
|
||||
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]; // 使用声明宏 my_vec!
|
||||
println!("v: = {:?}", v);
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user