@@ -435,12 +435,14 @@ pub fn slice<'a>(s: &'a str, begin: uint, end: uint) -> &'a str {
435435}
436436
437437/// Splits a string into substrings at each occurrence of a given character
438- pub fn each_split_char ( s : & ' a str , sep : char , it : & fn ( & ' a str ) -> bool ) {
438+ pub fn each_split_char < ' a > ( s : & ' a str , sep : char , it : & fn ( & ' a str ) -> bool ) {
439439 each_split_char_inner ( s, sep, len ( s) , true , true , it)
440440}
441441
442442/// Like `each_split_char`, but a trailing empty string is omitted
443- pub fn each_split_char_no_trailing ( s : & ' a str , sep : char , it : & fn ( & ' a str ) -> bool ) {
443+ pub fn each_split_char_no_trailing < ' a > ( s : & ' a str ,
444+ sep : char ,
445+ it : & fn ( & ' a str ) -> bool ) {
444446 each_split_char_inner ( s, sep, len ( s) , true , false , it)
445447}
446448
@@ -450,17 +452,26 @@ pub fn each_split_char_no_trailing(s: &'a str, sep: char, it: &fn(&'a str) -> bo
450452 *
451453 * The character must be a valid UTF-8/ASCII character
452454 */
453- pub fn each_splitn_char ( s : & ' a str , sep : char , count : uint , it : & fn ( & ' a str ) -> bool ) {
455+ pub fn each_splitn_char < ' a > ( s : & ' a str ,
456+ sep : char ,
457+ count : uint ,
458+ it : & fn ( & ' a str ) -> bool ) {
454459 each_split_char_inner ( s, sep, count, true , true , it)
455460}
456461
457462/// Like `each_split_char`, but omits empty strings
458- pub fn each_split_char_nonempty ( s : & ' a str , sep : char , it : & fn ( & ' a str ) -> bool ) {
463+ pub fn each_split_char_nonempty < ' a > ( s : & ' a str ,
464+ sep : char ,
465+ it : & fn ( & ' a str ) -> bool ) {
459466 each_split_char_inner ( s, sep, len ( s) , false , false , it)
460467}
461468
462- fn each_split_char_inner ( s : & ' a str , sep : char , count : uint , allow_empty : bool ,
463- allow_trailing_empty : bool , it : & fn ( & ' a str ) -> bool ) {
469+ fn each_split_char_inner < ' a > ( s : & ' a str ,
470+ sep : char ,
471+ count : uint ,
472+ allow_empty : bool ,
473+ allow_trailing_empty : bool ,
474+ it : & fn ( & ' a str ) -> bool ) {
464475 if sep < 128 u as char {
465476 let b = sep as u8 , l = len ( s) ;
466477 let mut done = 0 u;
@@ -485,30 +496,43 @@ fn each_split_char_inner(s: &'a str, sep: char, count: uint, allow_empty: bool,
485496}
486497
487498/// Splits a string into substrings using a character function
488- pub fn each_split ( s : & ' a str , sepfn : & fn ( char ) -> bool , it : & fn ( & ' a str ) -> bool ) {
499+ pub fn each_split < ' a > ( s : & ' a str ,
500+ sepfn : & fn ( char ) -> bool ,
501+ it : & fn ( & ' a str ) -> bool ) {
489502 each_split_inner ( s, sepfn, len ( s) , true , true , it)
490503}
491504
492505/// Like `each_split`, but a trailing empty string is omitted
493- pub fn each_split_no_trailing ( s : & ' a str , sepfn : & fn ( char ) -> bool , it : & fn ( & ' a str ) -> bool ) {
506+ pub fn each_split_no_trailing < ' a > ( s : & ' a str ,
507+ sepfn : & fn ( char ) -> bool ,
508+ it : & fn ( & ' a str ) -> bool ) {
494509 each_split_inner ( s, sepfn, len ( s) , true , false , it)
495510}
496511
497512/**
498513 * Splits a string into substrings using a character function, cutting at
499514 * most `count` times.
500515 */
501- pub fn each_splitn ( s : & ' a str , sepfn : & fn ( char ) -> bool , count : uint , it : & fn ( & ' a str ) -> bool ) {
516+ pub fn each_splitn < ' a > ( s : & ' a str ,
517+ sepfn : & fn ( char ) -> bool ,
518+ count : uint ,
519+ it : & fn ( & ' a str ) -> bool ) {
502520 each_split_inner ( s, sepfn, count, true , true , it)
503521}
504522
505523/// Like `each_split`, but omits empty strings
506- pub fn each_split_nonempty ( s : & ' a str , sepfn : & fn ( char ) -> bool , it : & fn ( & ' a str ) -> bool ) {
524+ pub fn each_split_nonempty < ' a > ( s : & ' a str ,
525+ sepfn : & fn ( char ) -> bool ,
526+ it : & fn ( & ' a str ) -> bool ) {
507527 each_split_inner ( s, sepfn, len ( s) , false , false , it)
508528}
509529
510- fn each_split_inner ( s : & ' a str , sepfn : & fn ( cc : char ) -> bool , count : uint ,
511- allow_empty : bool , allow_trailing_empty : bool , it : & fn ( & ' a str ) -> bool ) {
530+ fn each_split_inner < ' a > ( s : & ' a str ,
531+ sepfn : & fn ( cc : char ) -> bool ,
532+ count : uint ,
533+ allow_empty : bool ,
534+ allow_trailing_empty : bool ,
535+ it : & fn ( & ' a str ) -> bool ) {
512536 let l = len ( s) ;
513537 let mut i = 0 u, start = 0 u, done = 0 u;
514538 while i < l && done < count {
@@ -632,15 +656,15 @@ pub fn levdistance(s: &str, t: &str) -> uint {
632656/**
633657 * Splits a string into substrings separated by LF ('\n').
634658 */
635- pub fn each_line ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
659+ pub fn each_line < ' a > ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
636660 each_split_char_no_trailing ( s, '\n' , it)
637661}
638662
639663/**
640664 * Splits a string into substrings separated by LF ('\n')
641665 * and/or CR LF ("\r\n")
642666 */
643- pub fn each_line_any ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
667+ pub fn each_line_any < ' a > ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
644668 for each_line( s) |s| {
645669 let l = s. len ( ) ;
646670 if l > 0 u && s[ l - 1 u] == '\r' as u8 {
@@ -652,7 +676,7 @@ pub fn each_line_any(s: &'a str, it: &fn(&'a str) -> bool) {
652676}
653677
654678/// Splits a string into substrings separated by whitespace
655- pub fn each_word ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
679+ pub fn each_word < ' a > ( s : & ' a str , it : & fn ( & ' a str ) -> bool ) {
656680 each_split_nonempty ( s, char:: is_whitespace, it)
657681}
658682
@@ -665,7 +689,9 @@ pub fn each_word(s: &'a str, it: &fn(&'a str) -> bool) {
665689 * Fails during iteration if the string contains a non-whitespace
666690 * sequence longer than the limit.
667691 */
668- pub fn each_split_within( ss : & ' a str , lim : uint , it : & fn ( & ' a str ) -> bool ) {
692+ pub fn each_split_within< ' a > ( ss : & ' a str ,
693+ lim : uint ,
694+ it : & fn ( & ' a str ) -> bool ) {
669695 // Just for fun, let's write this as an state machine:
670696
671697 enum SplitWithinState {
0 commit comments