@@ -124,6 +124,7 @@ fn generate_enum_projection_method(
124
124
happy_case,
125
125
sad_case,
126
126
} = props;
127
+
127
128
let variant = ctx. find_node_at_offset :: < ast:: Variant > ( ) ?;
128
129
let variant_name = variant. name ( ) ?;
129
130
let parent_enum = ast:: Adt :: Enum ( variant. parent_enum ( ) ) ;
@@ -144,7 +145,7 @@ fn generate_enum_projection_method(
144
145
ast:: StructKind :: Unit => return None ,
145
146
} ;
146
147
147
- let fn_name = format ! ( "{}_{}" , fn_name_prefix , & to_lower_snake_case( & variant_name. text( ) ) ) ;
148
+ let fn_name = format ! ( "{fn_name_prefix }_{}" , & to_lower_snake_case( & variant_name. text( ) ) ) ;
148
149
149
150
// Return early if we've found an existing new fn
150
151
let impl_def = find_struct_impl ( ctx, & parent_enum, & fn_name) ?;
@@ -156,15 +157,31 @@ fn generate_enum_projection_method(
156
157
assist_description,
157
158
target,
158
159
|builder| {
159
- let vis = parent_enum. visibility ( ) . map_or ( String :: new ( ) , |v| format ! ( "{v} " ) ) ;
160
- let method = format ! (
161
- " {vis}fn {fn_name}({self_param}) -> {return_prefix}{field_type}{return_suffix} {{
160
+ let vis = parent_enum. visibility ( ) . map_or ( String :: new ( ) , |v| format ! ( "{} " , v) ) ;
161
+
162
+ let field_type_syntax = field_type. syntax ( ) ;
163
+
164
+ let method = if ctx. config . assist_emit_must_use
165
+ {
166
+ format ! (
167
+ " #[must_use]
168
+ {vis}fn {fn_name}({self_param}) -> {return_prefix}{field_type_syntax}{return_suffix} {{
169
+ if let Self::{variant_name}{pattern_suffix} = self {{
170
+ {happy_case}({bound_name})
171
+ }} else {{
172
+ {sad_case}
173
+ }}
174
+ }}" )
175
+ } else {
176
+ format ! (
177
+ " {vis}fn {fn_name}({self_param}) -> {return_prefix}{field_type_syntax}{return_suffix} {{
162
178
if let Self::{variant_name}{pattern_suffix} = self {{
163
179
{happy_case}({bound_name})
164
180
}} else {{
165
181
{sad_case}
166
182
}}
167
- }}" ) ;
183
+ }}" )
184
+ } ;
168
185
169
186
add_method_to_adt ( builder, & parent_enum, impl_def, & method) ;
170
187
} ,
0 commit comments