Я хотел бы преобразовать Find
-тератор Select.rs в район ParallelIterator
.Я не смог этого сделать, просто взломав API.Я подозреваю, что мне придется реализовать или расширить черту, но я понятия не имею, как это сделать.
Я пытался собрать итератор и использовать into_iter
, но безрезультатно.
use reqwest;
use rayon::prelude::*;
use select::document::Document;
use select::predicate::{Class};
fn main() {
println!("Hello, world!");
let url = "https://pitchfork.com/reviews/albums/";
let response = reqwest::get(url).unwrap();
if response.status().is_success() {
let document = Document::from_read(response).unwrap();
let albums = document.find(Class("review"));
let albums : Vec<String> = albums.par_iter()
.map(|album| album.text()).collect();
}
}
Это приводит к ошибке
error[E0599]: no method named `par_iter` found for type `select::document::Find<'_, select::predicate::Class<&str>>` in the current scope
--> src/main.rs:16:40
|
16 | let albums : Vec<String> = albums.par_iter()
| ^^^^^^^^
|
= note: the method `par_iter` exists but the following trait bounds were not satisfied:
`select::document::Find<'_, select::predicate::Class<&str>> : rayon::iter::IntoParallelRefIterator`
Я вижу, что метод par_iter
не существует, но, похоже, метод iter
тоже не существует.
Я предполагаю, что есть способ выполнить это без необходимости создания запроса на выборку для select.rs - в любом случае, помощь будет принята.