diff --git a/src/lib.rs b/src/lib.rs index 8ae8ad9..be919e2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -274,11 +274,17 @@ impl Dependencies { self.libs.get(name) } - /// An iterator visiting all system dependencies in arbitrary order. + /// A vector listing all system dependencies in sorted (for build reproducibility) order. /// The first element of the tuple is the name of the `toml` key defining the /// dependency in `Cargo.toml`. - pub fn iter(&self) -> impl Iterator { - self.libs.iter().map(|(k, v)| (k.as_str(), v)) + pub fn iter(&self) -> Vec<(&str, &Library)> { + let mut v = self + .libs + .iter() + .map(|(k, v)| (k.as_str(), v)) + .collect::>(); + v.sort_by_key(|x| x.0); + v } fn aggregate_str &Vec>(&self, getter: F) -> Vec<&str> { @@ -384,14 +390,14 @@ impl Dependencies { let mut flags = BuildFlags::new(); let mut include_paths = Vec::new(); - for (name, lib) in self.libs.iter() { + for (name, lib) in self.iter() { include_paths.extend(lib.include_paths.clone()); if lib.source == Source::EnvVariables && lib.libs.is_empty() && lib.frameworks.is_empty() { - return Err(Error::MissingLib(name.clone())); + return Err(Error::MissingLib(name.to_string())); } lib.link_paths diff --git a/src/test.rs b/src/test.rs index d1cc14d..96fde3d 100644 --- a/src/test.rs +++ b/src/test.rs @@ -79,7 +79,7 @@ fn good() { assert_eq!(testdata.version, "4.5.6"); assert!(libraries.get_by_name("testmore").is_none()); - assert_eq!(libraries.iter().count(), 2); + assert_eq!(libraries.iter().len(), 2); assert_flags( flags,