From 21eca1739e3008a8819d4725364b9077fa50f4bc Mon Sep 17 00:00:00 2001 From: Kyosuke Fujimoto Date: Wed, 11 Feb 2026 17:57:20 +0900 Subject: [PATCH] Explicitly specifying the package --- src/cargo.rs | 9 +++++++-- src/main.rs | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cargo.rs b/src/cargo.rs index 5d94272..09f4446 100644 --- a/src/cargo.rs +++ b/src/cargo.rs @@ -11,9 +11,10 @@ use crate::{Action, Target, TargetKind}; fn convert(metadata: CargoMetadata, current_dir: &Path) -> Vec { let mut targets = Vec::new(); for p in &metadata.packages { + let package_name = p.name.as_str(); for t in &p.targets { if is_select_target(t) { - targets.push(build_target(t, current_dir)); + targets.push(build_target(t, package_name, current_dir)); } } } @@ -24,8 +25,9 @@ fn is_select_target(t: &CargoTarget) -> bool { t.is_bin() || t.is_example() } -fn build_target(t: &CargoTarget, current_dir: &Path) -> Target { +fn build_target(t: &CargoTarget, package_name: &str, current_dir: &Path) -> Target { let name = t.name.to_owned(); + let package = package_name.to_owned(); let kind = if t.is_bin() { TargetKind::Bin } else { @@ -40,6 +42,7 @@ fn build_target(t: &CargoTarget, current_dir: &Path) -> Target { Target { name, + package, kind, path, required_features, @@ -77,6 +80,8 @@ pub fn exec_cargo_run( let mut cmd = Command::new("cargo"); cmd.arg(action).arg(kind).arg(name); + cmd.arg("--package").arg(&target.package); + let require_features = !target.required_features.is_empty(); if require_features { diff --git a/src/main.rs b/src/main.rs index 7ce967a..2b73bb1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,6 +64,7 @@ struct SelectorArgs { #[derive(Debug, Clone)] pub struct Target { name: String, + package: String, kind: TargetKind, path: String, required_features: Vec,