        let mut split = line.split(" => ");
        let lhs = split.next().unwrap();
        let rhs = split.next().unwrap();

        let (name, units) = split_f(rhs);
        let requires: Vec<Chemical> = lhs
            .split(", ")
            .map(split_f)
            .map(|(name, units)| Chemical { name, units })
            .collect();