File tree Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Expand file tree Collapse file tree 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> {
654654 !self . is_some ( )
655655 }
656656
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+
657683 /////////////////////////////////////////////////////////////////////////
658684 // Adapter for working with references
659685 /////////////////////////////////////////////////////////////////////////
You can’t perform that action at this time.
0 commit comments