use super::Options;
impl ExternEntry {
- fn new_public(location: Option<String>) -> ExternEntry {
- let mut locations = BTreeSet::new();
- locations.insert(location);
+ fn new_public<S: Into<String>,
+ I: IntoIterator<Item = Option<S>>>(locations: I) -> ExternEntry {
+ let locations: BTreeSet<_> = locations.into_iter().map(|o| o.map(|s| s.into()))
+ .collect();
+
ExternEntry {
locations,
is_private_dep: false
BTreeMap::from_iter(entries.into_iter())
}
- fn mk_set<V: Ord>(entries: Vec<V>) -> BTreeSet<V> {
- BTreeSet::from_iter(entries.into_iter())
- }
-
// When the user supplies --test we should implicitly supply --cfg test
#[test]
fn test_switch_implies_cfg_test() {
v1.externs = Externs::new(mk_map(vec![
(
String::from("a"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("b"))),
- ExternEntry::new_public(Some(String::from("c")))
- ]),
+ ExternEntry::new_public(vec![Some("b"), Some("c")])
),
(
String::from("d"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("e"))),
- ExternEntry::new_public(Some(String::from("f")))
- ]),
+ ExternEntry::new_public(vec![Some("e"), Some("f")])
),
]));
v2.externs = Externs::new(mk_map(vec![
(
String::from("d"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("e"))),
- ExternEntry::new_public(Some(String::from("f")))
- ]),
+ ExternEntry::new_public(vec![Some("e"), Some("f")])
),
(
String::from("a"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("b"))),
- ExternEntry::new_public(Some(String::from("c")))
- ]),
+ ExternEntry::new_public(vec![Some("b"), Some("c")])
),
]));
v3.externs = Externs::new(mk_map(vec![
(
String::from("a"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("b"))),
- ExternEntry::new_public(Some(String::from("c")))
- ]),
+ ExternEntry::new_public(vec![Some("b"), Some("c")])
),
(
String::from("d"),
- mk_set(vec![ExternEntry::new_public(Some(String::from("f"))),
- ExternEntry::new_public(Some(String::from("e")))
- ]),
+ ExternEntry::new_public(vec![Some("f"), Some("e")])
),
]));