1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/// Option<????> -> Option<()> pub trait DropSome { /// Only drop Ok value, no drop Err value. /// # Example /// ``` /// use drop_some::DropSome; /// /// fn some_function() -> Option<()> /// { /// match "something" /// { /// "pattern-x" => some_task1().drop_some()?, /// "pattern-y" => some_task2().drop_some()?, /// "pattern-z" => some_task3()?, /// "pattern-w" => some_task4(), /// _ => () /// } /// Ok(()) /// } /// /// fn some_task1() -> Option<i8 > { Some(1) } /// fn some_task2<'a>() -> Option<&'a str> { Some("abc") } /// fn some_task3() -> Option<() > { Some(()) } /// fn some_task4() { } /// ``` /// See also: <https://github.com/usagi/drop_some/tests/test.rs> fn drop_some(self) -> Option<()>; } impl<V> DropSome for Option<V> { fn drop_some(self) -> Option<()> { self.map(|_| ()) } }