### What it does Checks for use of `Option>` in function signatures and type definitions ### Why is this bad? `Option<_>` represents an optional value. `Option>` represents an optional optional value which is logically the same thing as an optional value but has an unneeded extra level of wrapping. If you have a case where `Some(Some(_))`, `Some(None)` and `None` are distinct cases, consider a custom `enum` instead, with clear names for each case. ### Example ``` fn get_data() -> Option> { None } ``` Better: ``` pub enum Contents { Data(Vec), // Was Some(Some(Vec)) NotYetFetched, // Was Some(None) None, // Was None } fn get_data() -> Contents { Contents::None } ```