【发布时间】:2018-08-02 00:12:30
【问题描述】:
在进行一些过滤后,我将正则表达式转换为 HashSet。我正在尝试将它与 Rayon 一起使用,但我无法弄清楚如何在不先将 Rayon 转换为向量的情况下使 Rayon 与现有迭代器一起使用。这可能吗?
let re = Regex::new("url=\"(?P<url>.+?)\"").unwrap();
let urls: HashSet<String> = re.captures_iter(&contents)
.map(|m| Url::parse(m.name("url").unwrap().as_str()))
.filter(|parsed_url| parsed_url.is_ok())
.map(|parsed_url| parsed_url.unwrap())
.filter(|parsed_url| parsed_url.has_host())
.map(|parsed_url| parsed_url.into_string())
.collect();
【问题讨论】:
-
par_iter如文档中所述? -
我试过了,但是得到了以下错误:error[E0599]: no method named
par_iterfound for typeregex::CaptureMatches<'_, '_>in the current scope --> src/main.rs:24:58 | 24 |让网址: HashSet= re.captures_iter(&contents).par_iter() | ^^^^^^^^ | = 注意:方法 par_iter存在,但不满足以下特征界限:regex::CaptureMatches<'_, '_> : rayon::iter::IntoParallelRefIterator