File tree 1 file changed +26
-0
lines changed
1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -654,6 +654,32 @@ impl<T> Option<T> {
654
654
!self . is_some ( )
655
655
}
656
656
657
+ /// Returns `true` if the option is a [`None`] or the value inside of it matches a predicate.
658
+ ///
659
+ /// # Examples
660
+ ///
661
+ /// ```
662
+ /// #![feature(is_none_or)]
663
+ ///
664
+ /// let x: Option<u32> = Some(2);
665
+ /// assert_eq!(x.is_none_or(|x| x > 1), true);
666
+ ///
667
+ /// let x: Option<u32> = Some(0);
668
+ /// assert_eq!(x.is_none_or(|x| x > 1), false);
669
+ ///
670
+ /// let x: Option<u32> = None;
671
+ /// assert_eq!(x.is_none_or(|x| x > 1), true);
672
+ /// ```
673
+ #[ must_use]
674
+ #[ inline]
675
+ #[ unstable( feature = "is_none_or" , issue = "none" ) ]
676
+ pub fn is_none_or ( self , f : impl FnOnce ( T ) -> bool ) -> bool {
677
+ match self {
678
+ None => true ,
679
+ Some ( x) => f ( x) ,
680
+ }
681
+ }
682
+
657
683
/////////////////////////////////////////////////////////////////////////
658
684
// Adapter for working with references
659
685
/////////////////////////////////////////////////////////////////////////
You can’t perform that action at this time.
0 commit comments