diff options
| author | bors <bors@rust-lang.org> | 2024-05-26 09:11:55 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-05-26 09:11:55 +0000 |
| commit | f7ca8a6d66a021b6748108c7c0cf8cce4d78b534 (patch) | |
| tree | eaed29f2e3f3d0f6e00e106669d9481aab749791 | |
| parent | bd9cc02d1073537ca50f6d2ff8802b4baf5fcd45 (diff) | |
| parent | afa8dfc51faa9304e03cb79c84c7e99bd7cf2f42 (diff) | |
| download | rust-f7ca8a6d66a021b6748108c7c0cf8cce4d78b534.tar.gz rust-f7ca8a6d66a021b6748108c7c0cf8cce4d78b534.zip | |
Auto merge of #17296 - mathew-horner:no-clone-target, r=Veykril
Avoid clone when constructing runnable label. I stumbled across this when reading this code. This seems like an unnecessary allocation (though likely small?)
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide/src/runnables.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/ide/src/runnables.rs b/src/tools/rust-analyzer/crates/ide/src/runnables.rs index 64ffa591017..2feea09840f 100644 --- a/src/tools/rust-analyzer/crates/ide/src/runnables.rs +++ b/src/tools/rust-analyzer/crates/ide/src/runnables.rs @@ -79,7 +79,7 @@ impl RunnableKind { impl Runnable { // test package::module::testname - pub fn label(&self, target: Option<String>) -> String { + pub fn label(&self, target: Option<&str>) -> String { match &self.kind { RunnableKind::Test { test_id, .. } => format!("test {test_id}"), RunnableKind::TestMod { path } => format!("test-mod {path}"), diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs index 1d7062c9897..86368c9eea8 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs @@ -1364,10 +1364,10 @@ pub(crate) fn runnable( ide::RunnableKind::Bin { .. } => workspace_root.clone().map(|it| it.into()), _ => spec.as_ref().map(|it| it.cargo_toml.parent().into()), }; - let target = spec.as_ref().map(|s| s.target.clone()); + let target = spec.as_ref().map(|s| s.target.as_str()); + let label = runnable.label(target); let (cargo_args, executable_args) = CargoTargetSpec::runnable_args(snap, spec, &runnable.kind, &runnable.cfg); - let label = runnable.label(target); let location = location_link(snap, None, runnable.nav)?; Ok(lsp_ext::Runnable { |
