Skip to content

Commit

Permalink
Auto merge of #17296 - mathew-horner:no-clone-target, r=Veykril
Browse files Browse the repository at this point in the history
Avoid clone when constructing runnable label.

I stumbled across this when reading this code. This seems like an unnecessary allocation (though likely small?)
  • Loading branch information
bors committed May 26, 2024
2 parents 8c18cbc + 333bedd commit 71a816a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion crates/ide/src/runnables.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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}"),
Expand Down
4 changes: 2 additions & 2 deletions crates/rust-analyzer/src/lsp/to_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 71a816a

Please sign in to comment.