下記の様にfor文を使わずに記述したいと考えていますがエラーが出てしまいます。
正直for_eachとmapの違いがいまいちわからず、
下記のコードもmapなのかfor_eachなのか悩んでいます。
どの様に記述するのが良いでしょうか?

use scraper::{Selector, Html};
fn main(){
    let html = r#"
    <!DOCTYPE html>
    <body>
    <div>
    <ul>
        <li>Foo1</li>
        <li>Foo2</li>
        <li>Foo3</li>
    </ul>
    </div>
    <div>
    <ul>
        <li>Foo4</li>
        <li>Foo5</li>
        <li>Foo6</li>
    </ul>
    </div>
    </body>
"#;
    let document = Html::parse_document(html);
    let selector = Selector::parse("div").unwrap();
    let ul  = Selector::parse("ul").unwrap();
    let li  = Selector::parse("li").unwrap();

   let v :Vec<_> = document.select(&selector)
        .for_each(|item| item.select(&ul))
        .for_each(|item| item.select(&li))
        .for_each(|item| item.inner_html())
        .collect();
    println!("{:?}",v);

}

error

error[E0308]: mismatched types
  --> src/main.rs:28:26
   |
28 |         .for_each(|item| item.select(&ul))
   |                          ^^^^^^^^^^^^^^^^ expected (), found struct `scraper::element_ref::Select`
   |
   = note: expected type `()`
              found type `scraper::element_ref::Select<'_, '_>`

error[E0599]: no method named `for_each` found for type `()` in the current scope
  --> src/main.rs:29:10
   |
29 |         .for_each(|item| item.select(&li))
   |          ^^^^^^^^
   |
   = note: the method `for_each` exists but the following trait bounds were not satisfied:
           `&mut () : std::iter::Iterator`