1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! # `void`功能
//! * 🎯以JS的`void XXX`语法,实现「取消函数输出」功能
/// 作为特征的[`Void`]
/// * 🚩只含有一个[`void`](`Void::void`)方法,直接通过`self.void()`语法调用
/// * 🎯后缀对标JavaScript`void XXX`语法
///
/// ## 用例
///
/// ```rust
/// use nar_dev_utils::Void;
/// fn one() -> i32 {
/// 1
/// }
///
/// match 1 {
/// 1 => one().void(),
/// _ => (),
/// }
/// ```
/// 作为函数的`void`方法
/// * 🚩直接内联Rust自带的[`drop`]
/// * 📝对于作为函数的`void`,建议使用Rust自带的`drop`
/// # `void`宏
/// * 🎯简单地在「无需使用返回值」的情况中【取消返回值】
/// * 📄在`match`语句中解决「返回值不一致」的问题
/// * ✅与JavaScript中`void f(x)`等同
/// * ✨可在其中加入任意可执行代码,而不仅仅是单个表达式
/// * 🚩通过「块表达式+末尾分号」实现
///
/// ## 用例
///
/// ```rust
/// use nar_dev_utils::void;
/// fn one() -> i32 {
/// println!("one!");
/// 1
/// }
/// assert_eq!(one(), 1);
/// match 2 {
/// 1 => void!(one()),
/// _ => println!("other!"),
/// }
/// match 1 {
/// 0 => void!({ dbg!("0") }),
/// 1 => void![println!("1"); one()],
/// _ => println!("other!"),
/// }
/// ```