diff --git a/src/main.rs b/src/main.rs index 8c9220c7fc2..db0c6613f3f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -126,11 +126,14 @@ pub fn main() { assert_eq!(metadata.version, 1); for target in metadata.packages.remove(0).targets { let args = std::env::args().skip(2); - assert!(!target.kind.is_empty()); - if target.kind.len() > 1 || target.kind[0].ends_with("lib") { - process(std::iter::once("--lib".to_owned()).chain(args), &dep_path, &sys_root); - } else if target.kind[0] == "bin" { - process(vec!["--bin".to_owned(), target.name].into_iter().chain(args), &dep_path, &sys_root); + if let Some(first) = target.kind.get(0) { + if target.kind.len() > 1 || first.ends_with("lib") { + process(std::iter::once("--lib".to_owned()).chain(args), &dep_path, &sys_root); + } else if first == "bin" { + process(vec!["--bin".to_owned(), target.name].into_iter().chain(args), &dep_path, &sys_root); + } + } else { + panic!("badly formatted cargo metadata: target::kind is an empty array"); } } } else {