@@ -87,7 +87,7 @@ use iter::{Iterator, range, AdditiveIterator};
87
87
use option:: { None , Option , Some } ;
88
88
use ptr;
89
89
use from_str:: FromStr ;
90
- use slice:: { OwnedVector , ImmutableVector , MutableVector } ;
90
+ use slice:: { OwnedVector , ImmutableVector , MutableVector , CloneableVector } ;
91
91
use slice:: { Vector } ;
92
92
use vec:: Vec ;
93
93
use default:: Default ;
@@ -674,19 +674,17 @@ pub mod raw {
674
674
use ptr;
675
675
use slice:: { MutableVector , OwnedVector , Vector } ;
676
676
use str:: { is_utf8} ;
677
- use vec:: Vec ;
678
677
679
678
pub use core:: str:: raw:: { from_utf8, c_str_to_static_slice, slice_bytes} ;
680
679
pub use core:: str:: raw:: { slice_unchecked} ;
681
680
682
681
/// Create a Rust string from a *u8 buffer of the given length
683
682
pub unsafe fn from_buf_len ( buf : * u8 , len : uint ) -> ~str {
684
- let mut v = Vec :: with_capacity ( len) ;
685
- ptr:: copy_memory ( v. as_mut_ptr ( ) , buf, len) ;
686
- v. set_len ( len) ;
687
-
688
- assert ! ( is_utf8( v. as_slice( ) ) ) ;
689
- :: cast:: transmute ( v. move_iter ( ) . collect :: < ~[ u8 ] > ( ) )
683
+ let v = Slice { data : buf, len : len } ;
684
+ let bytes: & [ u8 ] = :: cast:: transmute ( v) ;
685
+ assert ! ( is_utf8( bytes) ) ;
686
+ let s: & str = :: cast:: transmute ( bytes) ;
687
+ s. to_owned ( )
690
688
}
691
689
692
690
#[ lang="strdup_uniq" ]
@@ -824,27 +822,21 @@ pub trait StrAllocating: Str {
824
822
/// Copy a slice into a new owned str.
825
823
#[ inline]
826
824
fn to_owned ( & self ) -> ~str {
827
- let me = self . as_slice ( ) ;
828
- let len = me. len ( ) ;
829
825
unsafe {
830
- let mut v = Vec :: with_capacity ( len) ;
831
-
832
- ptr:: copy_memory ( v. as_mut_ptr ( ) , me. as_ptr ( ) , len) ;
833
- v. set_len ( len) ;
834
- :: cast:: transmute ( v. move_iter ( ) . collect :: < ~[ u8 ] > ( ) )
826
+ :: cast:: transmute ( self . as_bytes ( ) . to_owned ( ) )
835
827
}
836
828
}
837
829
838
830
/// Converts to a vector of `u16` encoded as UTF-16.
839
- fn to_utf16 ( & self ) -> ~ [ u16 ] {
831
+ fn to_utf16 ( & self ) -> Vec < u16 > {
840
832
let me = self . as_slice ( ) ;
841
- let mut u = Vec :: new ( ) ; ;
833
+ let mut u = Vec :: new ( ) ;
842
834
for ch in me. chars ( ) {
843
835
let mut buf = [ 0u16 , ..2 ] ;
844
836
let n = ch. encode_utf16 ( buf /* as mut slice! */ ) ;
845
837
u. push_all ( buf. slice_to ( n) ) ;
846
838
}
847
- u. move_iter ( ) . collect ( )
839
+ u
848
840
}
849
841
850
842
/// Given a string, make a new string with repeated copies of it.
@@ -1554,7 +1546,8 @@ mod tests {
1554
1546
assert_eq ! ( a. subslice_offset( c) , 0 ) ;
1555
1547
1556
1548
let string = "a\n b\n c" ;
1557
- let lines: ~[ & str ] = string. lines ( ) . collect ( ) ;
1549
+ let lines: Vec < & str > = string. lines ( ) . collect ( ) ;
1550
+ let lines = lines. as_slice ( ) ;
1558
1551
assert_eq ! ( string. subslice_offset( lines[ 0 ] ) , 0 ) ;
1559
1552
assert_eq ! ( string. subslice_offset( lines[ 1 ] ) , 2 ) ;
1560
1553
assert_eq ! ( string. subslice_offset( lines[ 2 ] ) , 4 ) ;
@@ -1617,21 +1610,21 @@ mod tests {
1617
1610
fn test_utf16 ( ) {
1618
1611
let pairs =
1619
1612
[ ( "𐍅𐌿𐌻𐍆𐌹𐌻𐌰\n " . to_owned ( ) ,
1620
- box [ 0xd800_u16 , 0xdf45_u16 , 0xd800_u16 , 0xdf3f_u16 ,
1613
+ vec ! [ 0xd800_u16 , 0xdf45_u16 , 0xd800_u16 , 0xdf3f_u16 ,
1621
1614
0xd800_u16 , 0xdf3b_u16 , 0xd800_u16 , 0xdf46_u16 ,
1622
1615
0xd800_u16 , 0xdf39_u16 , 0xd800_u16 , 0xdf3b_u16 ,
1623
1616
0xd800_u16 , 0xdf30_u16 , 0x000a_u16 ] ) ,
1624
1617
1625
1618
( "𐐒𐑉𐐮𐑀𐐲𐑋 𐐏𐐲𐑍\n " . to_owned ( ) ,
1626
- box [ 0xd801_u16 , 0xdc12_u16 , 0xd801_u16 ,
1619
+ vec ! [ 0xd801_u16 , 0xdc12_u16 , 0xd801_u16 ,
1627
1620
0xdc49_u16 , 0xd801_u16 , 0xdc2e_u16 , 0xd801_u16 ,
1628
1621
0xdc40_u16 , 0xd801_u16 , 0xdc32_u16 , 0xd801_u16 ,
1629
1622
0xdc4b_u16 , 0x0020_u16 , 0xd801_u16 , 0xdc0f_u16 ,
1630
1623
0xd801_u16 , 0xdc32_u16 , 0xd801_u16 , 0xdc4d_u16 ,
1631
1624
0x000a_u16 ] ) ,
1632
1625
1633
1626
( "𐌀𐌖𐌋𐌄𐌑𐌉·𐌌𐌄𐌕𐌄𐌋𐌉𐌑\n " . to_owned ( ) ,
1634
- box [ 0xd800_u16 , 0xdf00_u16 , 0xd800_u16 , 0xdf16_u16 ,
1627
+ vec ! [ 0xd800_u16 , 0xdf00_u16 , 0xd800_u16 , 0xdf16_u16 ,
1635
1628
0xd800_u16 , 0xdf0b_u16 , 0xd800_u16 , 0xdf04_u16 ,
1636
1629
0xd800_u16 , 0xdf11_u16 , 0xd800_u16 , 0xdf09_u16 ,
1637
1630
0x00b7_u16 , 0xd800_u16 , 0xdf0c_u16 , 0xd800_u16 ,
@@ -1640,7 +1633,7 @@ mod tests {
1640
1633
0xdf09_u16 , 0xd800_u16 , 0xdf11_u16 , 0x000a_u16 ] ) ,
1641
1634
1642
1635
( "𐒋𐒘𐒈𐒑𐒛𐒒 𐒕𐒓 𐒈𐒚𐒍 𐒏𐒜𐒒𐒖𐒆 𐒕𐒆\n " . to_owned ( ) ,
1643
- box [ 0xd801_u16 , 0xdc8b_u16 , 0xd801_u16 , 0xdc98_u16 ,
1636
+ vec ! [ 0xd801_u16 , 0xdc8b_u16 , 0xd801_u16 , 0xdc98_u16 ,
1644
1637
0xd801_u16 , 0xdc88_u16 , 0xd801_u16 , 0xdc91_u16 ,
1645
1638
0xd801_u16 , 0xdc9b_u16 , 0xd801_u16 , 0xdc92_u16 ,
1646
1639
0x0020_u16 , 0xd801_u16 , 0xdc95_u16 , 0xd801_u16 ,
@@ -1653,18 +1646,18 @@ mod tests {
1653
1646
0x000a_u16 ] ) ,
1654
1647
// Issue #12318, even-numbered non-BMP planes
1655
1648
( "\U 00020000" . to_owned ( ) ,
1656
- box [ 0xD840 , 0xDC00 ] ) ] ;
1649
+ vec ! [ 0xD840 , 0xDC00 ] ) ] ;
1657
1650
1658
1651
for p in pairs. iter ( ) {
1659
1652
let ( s, u) = ( * p) . clone ( ) ;
1660
- assert ! ( is_utf16( u) ) ;
1653
+ assert ! ( is_utf16( u. as_slice ( ) ) ) ;
1661
1654
assert_eq ! ( s. to_utf16( ) , u) ;
1662
1655
1663
- assert_eq ! ( from_utf16( u) . unwrap( ) , s) ;
1664
- assert_eq ! ( from_utf16_lossy( u) , s) ;
1656
+ assert_eq ! ( from_utf16( u. as_slice ( ) ) . unwrap( ) , s) ;
1657
+ assert_eq ! ( from_utf16_lossy( u. as_slice ( ) ) , s) ;
1665
1658
1666
- assert_eq ! ( from_utf16( s. to_utf16( ) ) . unwrap( ) , s) ;
1667
- assert_eq ! ( from_utf16( u) . unwrap( ) . to_utf16( ) , u) ;
1659
+ assert_eq ! ( from_utf16( s. to_utf16( ) . as_slice ( ) ) . unwrap( ) , s) ;
1660
+ assert_eq ! ( from_utf16( u. as_slice ( ) ) . unwrap( ) . to_utf16( ) , u) ;
1668
1661
}
1669
1662
}
1670
1663
@@ -1921,105 +1914,105 @@ mod tests {
1921
1914
fn test_split_char_iterator ( ) {
1922
1915
let data = "\n Märy häd ä little lämb\n Little lämb\n " ;
1923
1916
1924
- let split: ~ [ & str ] = data. split ( ' ' ) . collect ( ) ;
1925
- assert_eq ! ( split, box [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1917
+ let split: Vec < & str > = data. split ( ' ' ) . collect ( ) ;
1918
+ assert_eq ! ( split, vec! [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1926
1919
1927
- let mut rsplit: ~ [ & str ] = data. split ( ' ' ) . rev ( ) . collect ( ) ;
1920
+ let mut rsplit: Vec < & str > = data. split ( ' ' ) . rev ( ) . collect ( ) ;
1928
1921
rsplit. reverse ( ) ;
1929
- assert_eq ! ( rsplit, box [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1922
+ assert_eq ! ( rsplit, vec! [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1930
1923
1931
- let split: ~ [ & str ] = data. split ( |c : char | c == ' ' ) . collect ( ) ;
1932
- assert_eq ! ( split, box [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1924
+ let split: Vec < & str > = data. split ( |c : char | c == ' ' ) . collect ( ) ;
1925
+ assert_eq ! ( split, vec! [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1933
1926
1934
- let mut rsplit: ~ [ & str ] = data. split ( |c : char | c == ' ' ) . rev ( ) . collect ( ) ;
1927
+ let mut rsplit: Vec < & str > = data. split ( |c : char | c == ' ' ) . rev ( ) . collect ( ) ;
1935
1928
rsplit. reverse ( ) ;
1936
- assert_eq ! ( rsplit, box [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1929
+ assert_eq ! ( rsplit, vec! [ "\n Märy" , "häd" , "ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1937
1930
1938
1931
// Unicode
1939
- let split: ~ [ & str ] = data. split ( 'ä' ) . collect ( ) ;
1940
- assert_eq ! ( split, box [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1932
+ let split: Vec < & str > = data. split ( 'ä' ) . collect ( ) ;
1933
+ assert_eq ! ( split, vec! [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1941
1934
1942
- let mut rsplit: ~ [ & str ] = data. split ( 'ä' ) . rev ( ) . collect ( ) ;
1935
+ let mut rsplit: Vec < & str > = data. split ( 'ä' ) . rev ( ) . collect ( ) ;
1943
1936
rsplit. reverse ( ) ;
1944
- assert_eq ! ( rsplit, box [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1937
+ assert_eq ! ( rsplit, vec! [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1945
1938
1946
- let split: ~ [ & str ] = data. split ( |c : char | c == 'ä' ) . collect ( ) ;
1947
- assert_eq ! ( split, box [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1939
+ let split: Vec < & str > = data. split ( |c : char | c == 'ä' ) . collect ( ) ;
1940
+ assert_eq ! ( split, vec! [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1948
1941
1949
- let mut rsplit: ~ [ & str ] = data. split ( |c : char | c == 'ä' ) . rev ( ) . collect ( ) ;
1942
+ let mut rsplit: Vec < & str > = data. split ( |c : char | c == 'ä' ) . rev ( ) . collect ( ) ;
1950
1943
rsplit. reverse ( ) ;
1951
- assert_eq ! ( rsplit, box [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1944
+ assert_eq ! ( rsplit, vec! [ "\n M" , "ry h" , "d " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1952
1945
}
1953
1946
1954
1947
#[ test]
1955
1948
fn test_splitn_char_iterator ( ) {
1956
1949
let data = "\n Märy häd ä little lämb\n Little lämb\n " ;
1957
1950
1958
- let split: ~ [ & str ] = data. splitn ( ' ' , 3 ) . collect ( ) ;
1959
- assert_eq ! ( split, box [ "\n Märy" , "häd" , "ä" , "little lämb\n Little lämb\n " ] ) ;
1951
+ let split: Vec < & str > = data. splitn ( ' ' , 3 ) . collect ( ) ;
1952
+ assert_eq ! ( split, vec! [ "\n Märy" , "häd" , "ä" , "little lämb\n Little lämb\n " ] ) ;
1960
1953
1961
- let split: ~ [ & str ] = data. splitn ( |c : char | c == ' ' , 3 ) . collect ( ) ;
1962
- assert_eq ! ( split, box [ "\n Märy" , "häd" , "ä" , "little lämb\n Little lämb\n " ] ) ;
1954
+ let split: Vec < & str > = data. splitn ( |c : char | c == ' ' , 3 ) . collect ( ) ;
1955
+ assert_eq ! ( split, vec! [ "\n Märy" , "häd" , "ä" , "little lämb\n Little lämb\n " ] ) ;
1963
1956
1964
1957
// Unicode
1965
- let split: ~ [ & str ] = data. splitn ( 'ä' , 3 ) . collect ( ) ;
1966
- assert_eq ! ( split, box [ "\n M" , "ry h" , "d " , " little lämb\n Little lämb\n " ] ) ;
1958
+ let split: Vec < & str > = data. splitn ( 'ä' , 3 ) . collect ( ) ;
1959
+ assert_eq ! ( split, vec! [ "\n M" , "ry h" , "d " , " little lämb\n Little lämb\n " ] ) ;
1967
1960
1968
- let split: ~ [ & str ] = data. splitn ( |c : char | c == 'ä' , 3 ) . collect ( ) ;
1969
- assert_eq ! ( split, box [ "\n M" , "ry h" , "d " , " little lämb\n Little lämb\n " ] ) ;
1961
+ let split: Vec < & str > = data. splitn ( |c : char | c == 'ä' , 3 ) . collect ( ) ;
1962
+ assert_eq ! ( split, vec! [ "\n M" , "ry h" , "d " , " little lämb\n Little lämb\n " ] ) ;
1970
1963
}
1971
1964
1972
1965
#[ test]
1973
1966
fn test_rsplitn_char_iterator ( ) {
1974
1967
let data = "\n Märy häd ä little lämb\n Little lämb\n " ;
1975
1968
1976
- let mut split: ~ [ & str ] = data. rsplitn ( ' ' , 3 ) . collect ( ) ;
1969
+ let mut split: Vec < & str > = data. rsplitn ( ' ' , 3 ) . collect ( ) ;
1977
1970
split. reverse ( ) ;
1978
- assert_eq ! ( split, box [ "\n Märy häd ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1971
+ assert_eq ! ( split, vec! [ "\n Märy häd ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1979
1972
1980
- let mut split: ~ [ & str ] = data. rsplitn ( |c : char | c == ' ' , 3 ) . collect ( ) ;
1973
+ let mut split: Vec < & str > = data. rsplitn ( |c : char | c == ' ' , 3 ) . collect ( ) ;
1981
1974
split. reverse ( ) ;
1982
- assert_eq ! ( split, box [ "\n Märy häd ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1975
+ assert_eq ! ( split, vec! [ "\n Märy häd ä" , "little" , "lämb\n Little" , "lämb\n " ] ) ;
1983
1976
1984
1977
// Unicode
1985
- let mut split: ~ [ & str ] = data. rsplitn ( 'ä' , 3 ) . collect ( ) ;
1978
+ let mut split: Vec < & str > = data. rsplitn ( 'ä' , 3 ) . collect ( ) ;
1986
1979
split. reverse ( ) ;
1987
- assert_eq ! ( split, box [ "\n Märy häd " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1980
+ assert_eq ! ( split, vec! [ "\n Märy häd " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1988
1981
1989
- let mut split: ~ [ & str ] = data. rsplitn ( |c : char | c == 'ä' , 3 ) . collect ( ) ;
1982
+ let mut split: Vec < & str > = data. rsplitn ( |c : char | c == 'ä' , 3 ) . collect ( ) ;
1990
1983
split. reverse ( ) ;
1991
- assert_eq ! ( split, box [ "\n Märy häd " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1984
+ assert_eq ! ( split, vec! [ "\n Märy häd " , " little l" , "mb\n Little l" , "mb\n " ] ) ;
1992
1985
}
1993
1986
1994
1987
#[ test]
1995
1988
fn test_split_char_iterator_no_trailing ( ) {
1996
1989
let data = "\n Märy häd ä little lämb\n Little lämb\n " ;
1997
1990
1998
- let split: ~ [ & str ] = data. split ( '\n' ) . collect ( ) ;
1999
- assert_eq ! ( split, box [ "" , "Märy häd ä little lämb" , "Little lämb" , "" ] ) ;
1991
+ let split: Vec < & str > = data. split ( '\n' ) . collect ( ) ;
1992
+ assert_eq ! ( split, vec! [ "" , "Märy häd ä little lämb" , "Little lämb" , "" ] ) ;
2000
1993
2001
- let split: ~ [ & str ] = data. split_terminator ( '\n' ) . collect ( ) ;
2002
- assert_eq ! ( split, box [ "" , "Märy häd ä little lämb" , "Little lämb" ] ) ;
1994
+ let split: Vec < & str > = data. split_terminator ( '\n' ) . collect ( ) ;
1995
+ assert_eq ! ( split, vec! [ "" , "Märy häd ä little lämb" , "Little lämb" ] ) ;
2003
1996
}
2004
1997
2005
1998
#[ test]
2006
1999
fn test_rev_split_char_iterator_no_trailing ( ) {
2007
2000
let data = "\n Märy häd ä little lämb\n Little lämb\n " ;
2008
2001
2009
- let mut split: ~ [ & str ] = data. split ( '\n' ) . rev ( ) . collect ( ) ;
2002
+ let mut split: Vec < & str > = data. split ( '\n' ) . rev ( ) . collect ( ) ;
2010
2003
split. reverse ( ) ;
2011
- assert_eq ! ( split, box [ "" , "Märy häd ä little lämb" , "Little lämb" , "" ] ) ;
2004
+ assert_eq ! ( split, vec! [ "" , "Märy häd ä little lämb" , "Little lämb" , "" ] ) ;
2012
2005
2013
- let mut split: ~ [ & str ] = data. split_terminator ( '\n' ) . rev ( ) . collect ( ) ;
2006
+ let mut split: Vec < & str > = data. split_terminator ( '\n' ) . rev ( ) . collect ( ) ;
2014
2007
split. reverse ( ) ;
2015
- assert_eq ! ( split, box [ "" , "Märy häd ä little lämb" , "Little lämb" ] ) ;
2008
+ assert_eq ! ( split, vec! [ "" , "Märy häd ä little lämb" , "Little lämb" ] ) ;
2016
2009
}
2017
2010
2018
2011
#[ test]
2019
2012
fn test_words ( ) {
2020
2013
let data = "\n \t Märy häd\t ä little lämb\n Little lämb\n " ;
2021
- let words: ~ [ & str ] = data. words ( ) . collect ( ) ;
2022
- assert_eq ! ( words, box [ "Märy" , "häd" , "ä" , "little" , "lämb" , "Little" , "lämb" ] )
2014
+ let words: Vec < & str > = data. words ( ) . collect ( ) ;
2015
+ assert_eq ! ( words, vec! [ "Märy" , "häd" , "ä" , "little" , "lämb" , "Little" , "lämb" ] )
2023
2016
}
2024
2017
2025
2018
#[ test]
@@ -2053,34 +2046,34 @@ mod tests {
2053
2046
#[ test]
2054
2047
fn test_lines ( ) {
2055
2048
let data = "\n Märy häd ä little lämb\n \n Little lämb\n " ;
2056
- let lines: ~ [ & str ] = data. lines ( ) . collect ( ) ;
2057
- assert_eq ! ( lines, box [ "" , "Märy häd ä little lämb" , "" , "Little lämb" ] ) ;
2049
+ let lines: Vec < & str > = data. lines ( ) . collect ( ) ;
2050
+ assert_eq ! ( lines, vec! [ "" , "Märy häd ä little lämb" , "" , "Little lämb" ] ) ;
2058
2051
2059
2052
let data = "\n Märy häd ä little lämb\n \n Little lämb" ; // no trailing \n
2060
- let lines: ~ [ & str ] = data. lines ( ) . collect ( ) ;
2061
- assert_eq ! ( lines, box [ "" , "Märy häd ä little lämb" , "" , "Little lämb" ] ) ;
2053
+ let lines: Vec < & str > = data. lines ( ) . collect ( ) ;
2054
+ assert_eq ! ( lines, vec! [ "" , "Märy häd ä little lämb" , "" , "Little lämb" ] ) ;
2062
2055
}
2063
2056
2064
2057
#[ test]
2065
2058
fn test_split_strator ( ) {
2066
- fn t < ' a > ( s : & str , sep : & ' a str , u : ~ [ & str ] ) {
2067
- let v: ~ [ & str ] = s. split_str ( sep) . collect ( ) ;
2068
- assert_eq ! ( v, u) ;
2059
+ fn t ( s : & str , sep : & str , u : & [ & str ] ) {
2060
+ let v: Vec < & str > = s. split_str ( sep) . collect ( ) ;
2061
+ assert_eq ! ( v. as_slice ( ) , u. as_slice ( ) ) ;
2069
2062
}
2070
- t ( "--1233345--" , "12345" , box [ "--1233345--" ] ) ;
2071
- t ( "abc::hello::there" , "::" , box [ "abc" , "hello" , "there" ] ) ;
2072
- t ( "::hello::there" , "::" , box [ "" , "hello" , "there" ] ) ;
2073
- t ( "hello::there::" , "::" , box [ "hello" , "there" , "" ] ) ;
2074
- t ( "::hello::there::" , "::" , box [ "" , "hello" , "there" , "" ] ) ;
2075
- t ( "ประเทศไทย中华Việt Nam" , "中华" , box [ "ประเทศไทย" , "Việt Nam" ] ) ;
2076
- t ( "zzXXXzzYYYzz" , "zz" , box [ "" , "XXX" , "YYY" , "" ] ) ;
2077
- t ( "zzXXXzYYYz" , "XXX" , box [ "zz" , "zYYYz" ] ) ;
2078
- t ( ".XXX.YYY." , "." , box [ "" , "XXX" , "YYY" , "" ] ) ;
2079
- t ( "" , "." , box [ "" ] ) ;
2080
- t ( "zz" , "zz" , box [ "" , "" ] ) ;
2081
- t ( "ok" , "z" , box [ "ok" ] ) ;
2082
- t ( "zzz" , "zz" , box [ "" , "z" ] ) ;
2083
- t ( "zzzzz" , "zz" , box [ "" , "" , "z" ] ) ;
2063
+ t ( "--1233345--" , "12345" , [ "--1233345--" ] ) ;
2064
+ t ( "abc::hello::there" , "::" , [ "abc" , "hello" , "there" ] ) ;
2065
+ t ( "::hello::there" , "::" , [ "" , "hello" , "there" ] ) ;
2066
+ t ( "hello::there::" , "::" , [ "hello" , "there" , "" ] ) ;
2067
+ t ( "::hello::there::" , "::" , [ "" , "hello" , "there" , "" ] ) ;
2068
+ t ( "ประเทศไทย中华Việt Nam" , "中华" , [ "ประเทศไทย" , "Việt Nam" ] ) ;
2069
+ t ( "zzXXXzzYYYzz" , "zz" , [ "" , "XXX" , "YYY" , "" ] ) ;
2070
+ t ( "zzXXXzYYYz" , "XXX" , [ "zz" , "zYYYz" ] ) ;
2071
+ t ( ".XXX.YYY." , "." , [ "" , "XXX" , "YYY" , "" ] ) ;
2072
+ t ( "" , "." , [ "" ] ) ;
2073
+ t ( "zz" , "zz" , [ "" , "" ] ) ;
2074
+ t ( "ok" , "z" , [ "ok" ] ) ;
2075
+ t ( "zzz" , "zz" , [ "" , "z" ] ) ;
2076
+ t ( "zzzzz" , "zz" , [ "" , "" , "z" ] ) ;
2084
2077
}
2085
2078
2086
2079
#[ test]
0 commit comments