diff options
| author | bors <bors@rust-lang.org> | 2022-07-18 22:19:52 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-07-18 22:19:52 +0000 |
| commit | 567a5e9ef7c753e03d528cbc19110db99e8d6878 (patch) | |
| tree | 7fe93e36bdeacf1a9086356cb0ec1761eae7df0b | |
| parent | dc05192e1106668912dab2800215e39f0aa4b98f (diff) | |
| parent | be30c4daf4d8c54c261a346a4c4750f13b426005 (diff) | |
| download | rust-567a5e9ef7c753e03d528cbc19110db99e8d6878.tar.gz rust-567a5e9ef7c753e03d528cbc19110db99e8d6878.zip | |
Auto merge of #12796 - mmirate:patch-1, r=Veykril
chore: change str_ref_to_string to str_ref_to_owned `ToString` is implemented by many different types than `&str`, and represents a serialization into string data. The fact that said data is returned as owned, is an implementation detail resulting from the lack of a parameter for a pre-allocated buffer. If merely copying borrowed string data to owned string data is all that is desired, `ToOwned` is a much better choice, because if the user later refactors the code such that the input is no longer an `&str`, then they will get a compiler error instead of a mysterious runtime-behavioral change.
| -rw-r--r-- | crates/ide-diagnostics/src/handlers/type_mismatch.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/ide-diagnostics/src/handlers/type_mismatch.rs b/crates/ide-diagnostics/src/handlers/type_mismatch.rs index 22393824722..5826bed3434 100644 --- a/crates/ide-diagnostics/src/handlers/type_mismatch.rs +++ b/crates/ide-diagnostics/src/handlers/type_mismatch.rs @@ -35,7 +35,7 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::TypeMismatch) -> Option<Vec<Assi add_reference(ctx, d, &mut fixes); add_missing_ok_or_some(ctx, d, &mut fixes); remove_semicolon(ctx, d, &mut fixes); - str_ref_to_string(ctx, d, &mut fixes); + str_ref_to_owned(ctx, d, &mut fixes); if fixes.is_empty() { None @@ -135,7 +135,7 @@ fn remove_semicolon( Some(()) } -fn str_ref_to_string( +fn str_ref_to_owned( ctx: &DiagnosticsContext<'_>, d: &hir::TypeMismatch, acc: &mut Vec<Assist>, @@ -151,12 +151,12 @@ fn str_ref_to_string( let expr = d.expr.value.to_node(&root); let expr_range = expr.syntax().text_range(); - let to_string = format!(".to_string()"); + let to_owned = format!(".to_owned()"); - let edit = TextEdit::insert(expr.syntax().text_range().end(), to_string); + let edit = TextEdit::insert(expr.syntax().text_range().end(), to_owned); let source_change = SourceChange::from_text_edit(d.expr.file_id.original_file(ctx.sema.db), edit); - acc.push(fix("str_ref_to_string", "Add .to_string() here", source_change, expr_range)); + acc.push(fix("str_ref_to_owned", "Add .to_owned() here", source_change, expr_range)); Some(()) } @@ -527,7 +527,7 @@ fn foo() -> SomeOtherEnum { 0$0 } } #[test] - fn str_ref_to_string() { + fn str_ref_to_owned() { check_fix( r#" struct String; @@ -540,7 +540,7 @@ fn test() -> String { struct String; fn test() -> String { - "a".to_string() + "a".to_owned() } "#, ); |
