error: called `map(f)` on an `Option` value where `f` is a function that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:38:5
   |
LL |     x.field.map(do_nothing);
   |     ^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(x_field) = x.field { do_nothing(x_field) }`
   |
   = note: `-D clippy::option-map-unit-fn` implied by `-D warnings`

error: called `map(f)` on an `Option` value where `f` is a function that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:40:5
   |
LL |     x.field.map(do_nothing);
   |     ^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(x_field) = x.field { do_nothing(x_field) }`

error: called `map(f)` on an `Option` value where `f` is a function that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:42:5
   |
LL |     x.field.map(diverge);
   |     ^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(x_field) = x.field { diverge(x_field) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:48:5
   |
LL |     x.field.map(|value| x.do_option_nothing(value + captured));
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { x.do_option_nothing(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:50:5
   |
LL |     x.field.map(|value| { x.do_option_plus_one(value + captured); });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { x.do_option_plus_one(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:53:5
   |
LL |     x.field.map(|value| do_nothing(value + captured));
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { do_nothing(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:55:5
   |
LL |     x.field.map(|value| { do_nothing(value + captured) });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { do_nothing(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:57:5
   |
LL |     x.field.map(|value| { do_nothing(value + captured); });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { do_nothing(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:59:5
   |
LL |     x.field.map(|value| { { do_nothing(value + captured); } });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { do_nothing(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:62:5
   |
LL |     x.field.map(|value| diverge(value + captured));
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { diverge(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:64:5
   |
LL |     x.field.map(|value| { diverge(value + captured) });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { diverge(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:66:5
   |
LL |     x.field.map(|value| { diverge(value + captured); });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { diverge(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:68:5
   |
LL |     x.field.map(|value| { { diverge(value + captured); } });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { diverge(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:73:5
   |
LL |     x.field.map(|value| { let y = plus_one(value + captured); });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { let y = plus_one(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:75:5
   |
LL |     x.field.map(|value| { plus_one(value + captured); });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { plus_one(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:77:5
   |
LL |     x.field.map(|value| { { plus_one(value + captured); } });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = x.field { plus_one(value + captured); }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:80:5
   |
LL |     x.field.map(|ref value| { do_nothing(value + captured) });
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(ref value) = x.field { do_nothing(value + captured) }`

error: called `map(f)` on an `Option` value where `f` is a function that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:82:5
   |
LL |     option().map(do_nothing);
   |     ^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(a) = option() { do_nothing(a) }`

error: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()`
  --> $DIR/option_map_unit_fn_fixable.rs:84:5
   |
LL |     option().map(|value| println!("{:?}", value));
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
   |     |
   |     help: try this: `if let Some(value) = option() { println!("{:?}", value) }`

error: aborting due to 19 previous errors

