@@ -84,8 +84,8 @@ impl FunctionSignature {
84
84
let ty = field. signature_ty ( db) ;
85
85
let raw_param = format ! ( "{}" , ty. display( db) ) ;
86
86
87
- if let Some ( param_type) = raw_param. split ( ':' ) . nth ( 1 ) {
88
- parameter_types. push ( param_type[ 1 .. ] . to_string ( ) ) ;
87
+ if let Some ( param_type) = raw_param. split ( ':' ) . nth ( 1 ) . and_then ( |it| it . get ( 1 .. ) ) {
88
+ parameter_types. push ( param_type. to_string ( ) ) ;
89
89
} else {
90
90
// useful when you have tuple struct
91
91
parameter_types. push ( raw_param. clone ( ) ) ;
@@ -129,8 +129,8 @@ impl FunctionSignature {
129
129
for field in variant. fields ( db) . into_iter ( ) {
130
130
let ty = field. signature_ty ( db) ;
131
131
let raw_param = format ! ( "{}" , ty. display( db) ) ;
132
- if let Some ( param_type) = raw_param. split ( ':' ) . nth ( 1 ) {
133
- parameter_types. push ( param_type[ 1 .. ] . to_string ( ) ) ;
132
+ if let Some ( param_type) = raw_param. split ( ':' ) . nth ( 1 ) . and_then ( |it| it . get ( 1 .. ) ) {
133
+ parameter_types. push ( param_type. to_string ( ) ) ;
134
134
} else {
135
135
// The unwrap_or_else is useful when you have tuple
136
136
parameter_types. push ( raw_param) ;
@@ -197,16 +197,21 @@ impl From<&'_ ast::FnDef> for FunctionSignature {
197
197
let raw_param = self_param. syntax ( ) . text ( ) . to_string ( ) ;
198
198
199
199
res_types. push (
200
- raw_param. split ( ':' ) . nth ( 1 ) . unwrap_or_else ( || " Self" ) [ 1 ..] . to_string ( ) ,
200
+ raw_param
201
+ . split ( ':' )
202
+ . nth ( 1 )
203
+ . and_then ( |it| it. get ( 1 ..) )
204
+ . unwrap_or_else ( || "Self" )
205
+ . to_string ( ) ,
201
206
) ;
202
207
res. push ( raw_param) ;
203
208
}
204
209
205
210
res. extend ( param_list. params ( ) . map ( |param| param. syntax ( ) . text ( ) . to_string ( ) ) ) ;
206
211
res_types. extend ( param_list. params ( ) . map ( |param| {
207
212
let param_text = param. syntax ( ) . text ( ) . to_string ( ) ;
208
- match param_text. split ( ':' ) . nth ( 1 ) {
209
- Some ( it) => it[ 1 .. ] . to_string ( ) ,
213
+ match param_text. split ( ':' ) . nth ( 1 ) . and_then ( |it| it . get ( 1 .. ) ) {
214
+ Some ( it) => it. to_string ( ) ,
210
215
None => param_text,
211
216
}
212
217
} ) ) ;
0 commit comments