@@ -14,13 +14,17 @@ use crate::{
14
14
15
15
use super :: { get_buildin_type_map_type_id, FindMembersResult , LuaMemberInfo } ;
16
16
17
- /// 搜索成员的过滤条件
18
17
#[ derive( Debug , Clone ) ]
19
18
pub enum FindMemberFilter {
20
19
/// 寻找所有成员
21
20
All ,
22
- /// 根据指定的key寻找成员, 是否寻找所有成员
23
- ByKey ( LuaMemberKey , bool ) ,
21
+ /// 根据指定的key寻找成员
22
+ ByKey {
23
+ /// 要搜索的成员key
24
+ member_key : LuaMemberKey ,
25
+ /// 是否寻找所有匹配的成员,为`false`时,找到第一个匹配的成员后停止
26
+ find_all : bool ,
27
+ } ,
24
28
}
25
29
26
30
pub fn find_members ( db : & DbIndex , prefix_type : & LuaType ) -> FindMembersResult {
@@ -42,7 +46,10 @@ pub fn find_members_with_key(
42
46
db,
43
47
prefix_type,
44
48
& mut InferGuard :: new ( ) ,
45
- & FindMemberFilter :: ByKey ( member_key, find_all) ,
49
+ & FindMemberFilter :: ByKey {
50
+ member_key,
51
+ find_all,
52
+ } ,
46
53
)
47
54
}
48
55
@@ -86,18 +93,18 @@ fn find_members_guard(
86
93
}
87
94
88
95
/// 检查成员是否应该被包含
89
- fn should_include_member ( member_key : & LuaMemberKey , filter : & FindMemberFilter ) -> bool {
96
+ fn should_include_member ( key : & LuaMemberKey , filter : & FindMemberFilter ) -> bool {
90
97
match filter {
91
98
FindMemberFilter :: All => true ,
92
- FindMemberFilter :: ByKey ( target_key , _ ) => member_key == target_key ,
99
+ FindMemberFilter :: ByKey { member_key , .. } => member_key == key ,
93
100
}
94
101
}
95
102
96
103
/// 检查是否应该停止收集更多成员
97
104
fn should_stop_collecting ( current_count : usize , filter : & FindMemberFilter ) -> bool {
98
105
match filter {
99
- FindMemberFilter :: All => false ,
100
- FindMemberFilter :: ByKey ( _ , find_all ) => !find_all && current_count > 0 ,
106
+ FindMemberFilter :: ByKey { find_all , .. } => !find_all && current_count > 0 ,
107
+ _ => false ,
101
108
}
102
109
}
103
110
0 commit comments