diff --git a/src/bin/cargo-verify-project.rs b/src/bin/cargo-verify-project.rs index ff2c5e7fbb0..44091951824 100755 --- a/src/bin/cargo-verify-project.rs +++ b/src/bin/cargo-verify-project.rs @@ -26,12 +26,13 @@ fn main() { } }; - if !matches.opt_present("m") { - fail("missing-argument", "manifest"); - return; - } - - let manifest = matches.opt_str("m").unwrap(); + let manifest = match matches.opt_str("m") { + Some(m) => m, + None => { + fail("missing-argument", "manifest"); + return; + } + }; let file = Path::new(manifest); let contents = match File::open(&file).read_to_str() { Ok(s) => s, diff --git a/src/cargo/core/package.rs b/src/cargo/core/package.rs index b9cc31921ad..8feae143c29 100644 --- a/src/cargo/core/package.rs +++ b/src/cargo/core/package.rs @@ -155,12 +155,13 @@ impl PackageSet { } pub fn pop(&mut self) -> Package { - self.packages.pop().unwrap() + self.packages.pop().expect("PackageSet.pop: empty set") } /// Get a package by name out of the set pub fn get<'a>(&'a self, name: &str) -> &'a Package { - self.packages.iter().find(|pkg| name == pkg.get_name()).unwrap() + self.packages.iter().find(|pkg| name == pkg.get_name()) + .expect("PackageSet.get: empty set") } pub fn get_all<'a>(&'a self, names: &[&str]) -> Vec<&'a Package> { diff --git a/src/cargo/ops/cargo_rustc.rs b/src/cargo/ops/cargo_rustc.rs index 3411f5306f2..9b4489d79d6 100644 --- a/src/cargo/ops/cargo_rustc.rs +++ b/src/cargo/ops/cargo_rustc.rs @@ -168,9 +168,9 @@ fn compile_custom(pkg: &Package, cmd: &str, cx: &Context) -> CargoResult<()> { let mut cmd = cmd.split(' '); let mut p = util::process(cmd.next().unwrap()) .cwd(pkg.get_root()) - .env("OUT_DIR", Some(cx.dest.as_str().unwrap())) + .env("OUT_DIR", Some(cx.dest.as_str().expect("non-UTF8 dest path"))) .env("DEPS_DIR", Some(cx.dest.join(cx.deps_dir) - .as_str().unwrap())); + .as_str().expect("non-UTF8 deps path"))); for arg in cmd { p = p.arg(arg); } diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index 7c0ac0a140e..898d025b541 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -1,4 +1,4 @@ -use std::{io,fmt,os}; +use std::{io,fmt,os, result}; use std::collections::HashMap; use serialize::{Encodable,Encoder}; use toml; @@ -231,17 +231,15 @@ fn merge_array(existing: &mut ConfigValue, val: &[toml::Value], match existing.value { String(_) => Err(internal("should be an Array, but it was a String")), List(ref mut list) => { - let new_list: Vec> = - val.iter().map(toml_string).collect(); - if new_list.iter().any(|v| v.is_err()) { - return Err(internal("should be an Array of Strings, but \ - was an Array of other values")); - } else { - let new_list: Vec = - new_list.move_iter().map(|v| v.unwrap()).collect(); - list.push_all(new_list.as_slice()); - existing.path.push(path.clone()); - Ok(()) + let r: CargoResult> = result::collect(val.iter().map(toml_string)); + match r { + Err(_) => Err(internal("should be an Array of Strings, but \ + was an Array of other values")), + Ok(new_list) => { + list.push_all(new_list.as_slice()); + existing.path.push(path.clone()); + Ok(()) + } } } }