@@ -124,6 +124,7 @@ fn generate_enum_projection_method(
124124 happy_case,
125125 sad_case,
126126 } = props;
127+
127128 let variant = ctx. find_node_at_offset :: < ast:: Variant > ( ) ?;
128129 let variant_name = variant. name ( ) ?;
129130 let parent_enum = ast:: Adt :: Enum ( variant. parent_enum ( ) ) ;
@@ -144,7 +145,7 @@ fn generate_enum_projection_method(
144145 ast:: StructKind :: Unit => return None ,
145146 } ;
146147
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( ) ) ) ;
148149
149150 // Return early if we've found an existing new fn
150151 let impl_def = find_struct_impl ( ctx, & parent_enum, & fn_name) ?;
@@ -156,15 +157,31 @@ fn generate_enum_projection_method(
156157 assist_description,
157158 target,
158159 |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_generate_enum_projection_method_insert_must_use_macro
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} {{
162178 if let Self::{variant_name}{pattern_suffix} = self {{
163179 {happy_case}({bound_name})
164180 }} else {{
165181 {sad_case}
166182 }}
167- }}" ) ;
183+ }}" )
184+ } ;
168185
169186 add_method_to_adt ( builder, & parent_enum, impl_def, & method) ;
170187 } ,
0 commit comments