@@ -608,6 +608,13 @@ where
608
608
}
609
609
}
610
610
611
+ impl < const N : usize > MultiCharEq for [ char ; N ] {
612
+ #[ inline]
613
+ fn matches ( & mut self , c : char ) -> bool {
614
+ self . iter ( ) . any ( |& m| m == c)
615
+ }
616
+ }
617
+
611
618
impl < const N : usize > MultiCharEq for & [ char ; N ] {
612
619
#[ inline]
613
620
fn matches ( & mut self , c : char ) -> bool {
@@ -768,10 +775,36 @@ macro_rules! searcher_methods {
768
775
769
776
/// Associated type for `<[char; N] as Pattern<'a>>::Searcher`.
770
777
#[ derive( Clone , Debug ) ]
771
- pub struct CharArraySearcher < ' a , ' b , const N : usize > (
778
+ pub struct CharArraySearcher < ' a , const N : usize > (
779
+ <MultiCharEqPattern < [ char ; N ] > as Pattern < ' a > >:: Searcher ,
780
+ ) ;
781
+
782
+ /// Associated type for `<&[char; N] as Pattern<'a>>::Searcher`.
783
+ #[ derive( Clone , Debug ) ]
784
+ pub struct CharArrayRefSearcher < ' a , ' b , const N : usize > (
772
785
<MultiCharEqPattern < & ' b [ char ; N ] > as Pattern < ' a > >:: Searcher ,
773
786
) ;
774
787
788
+ /// Searches for chars that are equal to any of the [`char`]s in the array.
789
+ ///
790
+ /// # Examples
791
+ ///
792
+ /// ```
793
+ /// assert_eq!("Hello world".find(['l', 'l']), Some(2));
794
+ /// assert_eq!("Hello world".find(['l', 'l']), Some(2));
795
+ /// ```
796
+ impl < ' a , const N : usize > Pattern < ' a > for [ char ; N ] {
797
+ pattern_methods ! ( CharArraySearcher <' a, N >, MultiCharEqPattern , CharArraySearcher ) ;
798
+ }
799
+
800
+ unsafe impl < ' a , const N : usize > Searcher < ' a > for CharArraySearcher < ' a , N > {
801
+ searcher_methods ! ( forward) ;
802
+ }
803
+
804
+ unsafe impl < ' a , const N : usize > ReverseSearcher < ' a > for CharArraySearcher < ' a , N > {
805
+ searcher_methods ! ( reverse) ;
806
+ }
807
+
775
808
/// Searches for chars that are equal to any of the [`char`]s in the array.
776
809
///
777
810
/// # Examples
@@ -781,14 +814,14 @@ pub struct CharArraySearcher<'a, 'b, const N: usize>(
781
814
/// assert_eq!("Hello world".find(&['l', 'l']), Some(2));
782
815
/// ```
783
816
impl < ' a , ' b , const N : usize > Pattern < ' a > for & ' b [ char ; N ] {
784
- pattern_methods ! ( CharArraySearcher <' a, ' b, N >, MultiCharEqPattern , CharArraySearcher ) ;
817
+ pattern_methods ! ( CharArrayRefSearcher <' a, ' b, N >, MultiCharEqPattern , CharArrayRefSearcher ) ;
785
818
}
786
819
787
- unsafe impl < ' a , ' b , const N : usize > Searcher < ' a > for CharArraySearcher < ' a , ' b , N > {
820
+ unsafe impl < ' a , ' b , const N : usize > Searcher < ' a > for CharArrayRefSearcher < ' a , ' b , N > {
788
821
searcher_methods ! ( forward) ;
789
822
}
790
823
791
- unsafe impl < ' a , ' b , const N : usize > ReverseSearcher < ' a > for CharArraySearcher < ' a , ' b , N > {
824
+ unsafe impl < ' a , ' b , const N : usize > ReverseSearcher < ' a > for CharArrayRefSearcher < ' a , ' b , N > {
792
825
searcher_methods ! ( reverse) ;
793
826
}
794
827
0 commit comments