From be30c4daf4d8c54c261a346a4c4750f13b426005 Mon Sep 17 00:00:00 2001 From: Milo Mirate Date: Mon, 18 Jul 2022 08:38:14 -0400 Subject: [PATCH] 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. 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 change-in-behavior. --- .../ide-diagnostics/src/handlers/type_mismatch.rs | 14 +++++++------- 1 file 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 2239382472..5826bed343 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, d: &hir::TypeMismatch, acc: &mut Vec, @@ -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() } "#, );