@@ -345,16 +345,6 @@ impl Wtf8 {
345
345
pub fn eq_ignore_ascii_case ( & self , other : & Self ) -> bool {
346
346
self . bytes . eq_ignore_ascii_case ( & other. bytes )
347
347
}
348
-
349
- #[ inline]
350
- pub fn is_code_point_boundary ( & self , index : usize ) -> bool {
351
- is_code_point_boundary ( self , index)
352
- }
353
-
354
- #[ inline]
355
- pub fn check_utf8_boundary ( & self , index : usize ) {
356
- check_utf8_boundary ( self , index)
357
- }
358
348
}
359
349
360
350
/// Returns a slice of the given string for the byte range \[`begin`..`end`).
@@ -435,44 +425,44 @@ fn decode_surrogate(second_byte: u8, third_byte: u8) -> u16 {
435
425
0xD800 | ( second_byte as u16 & 0x3F ) << 6 | third_byte as u16 & 0x3F
436
426
}
437
427
438
- // helps diff to be unindented
439
-
440
- /// Copied from str::is_char_boundary
441
- # [ inline ]
442
- pub fn is_code_point_boundary ( slice : & Wtf8 , index : usize ) -> bool {
443
- if index == 0 {
444
- return true ;
445
- }
446
- match slice . bytes . get ( index ) {
447
- None => index == slice . len ( ) ,
448
- Some ( & b ) => ( b as i8 ) >= - 0x40 ,
428
+ impl Wtf8 {
429
+ /// Copied from str::is_char_boundary
430
+ # [ inline ]
431
+ pub fn is_code_point_boundary ( & self , index : usize ) -> bool {
432
+ if index == 0 {
433
+ return true ;
434
+ }
435
+ match self . bytes . get ( index ) {
436
+ None => index == self . len ( ) ,
437
+ Some ( & b ) => ( b as i8 ) >= - 0x40 ,
438
+ }
449
439
}
450
- }
451
440
452
- /// Verify that `index` is at the edge of either a valid UTF-8 codepoint
453
- /// (i.e. a codepoint that's not a surrogate) or of the whole string.
454
- ///
455
- /// These are the cases currently permitted by `OsStr::slice_encoded_bytes`.
456
- /// Splitting between surrogates is valid as far as WTF-8 is concerned, but
457
- /// we do not permit it in the public API because WTF-8 is considered an
458
- /// implementation detail.
459
- #[ track_caller]
460
- #[ inline]
461
- pub fn check_utf8_boundary ( slice : & Wtf8 , index : usize ) {
462
- if index == 0 {
463
- return ;
464
- }
465
- match slice. bytes . get ( index) {
466
- Some ( 0xED ) => ( ) , // Might be a surrogate
467
- Some ( & b) if ( b as i8 ) >= -0x40 => return ,
468
- Some ( _) => panic ! ( "byte index {index} is not a codepoint boundary" ) ,
469
- None if index == slice. len ( ) => return ,
470
- None => panic ! ( "byte index {index} is out of bounds" ) ,
471
- }
472
- if slice. bytes [ index + 1 ] >= 0xA0 {
473
- // There's a surrogate after index. Now check before index.
474
- if index >= 3 && slice. bytes [ index - 3 ] == 0xED && slice. bytes [ index - 2 ] >= 0xA0 {
475
- panic ! ( "byte index {index} lies between surrogate codepoints" ) ;
441
+ /// Verify that `index` is at the edge of either a valid UTF-8 codepoint
442
+ /// (i.e. a codepoint that's not a surrogate) or of the whole string.
443
+ ///
444
+ /// These are the cases currently permitted by `OsStr::self_encoded_bytes`.
445
+ /// Splitting between surrogates is valid as far as WTF-8 is concerned, but
446
+ /// we do not permit it in the public API because WTF-8 is considered an
447
+ /// implementation detail.
448
+ #[ track_caller]
449
+ #[ inline]
450
+ pub fn check_utf8_boundary ( & self , index : usize ) {
451
+ if index == 0 {
452
+ return ;
453
+ }
454
+ match self . bytes . get ( index) {
455
+ Some ( 0xED ) => ( ) , // Might be a surrogate
456
+ Some ( & b) if ( b as i8 ) >= -0x40 => return ,
457
+ Some ( _) => panic ! ( "byte index {index} is not a codepoint boundary" ) ,
458
+ None if index == self . len ( ) => return ,
459
+ None => panic ! ( "byte index {index} is out of bounds" ) ,
460
+ }
461
+ if self . bytes [ index + 1 ] >= 0xA0 {
462
+ // There's a surrogate after index. Now check before index.
463
+ if index >= 3 && self . bytes [ index - 3 ] == 0xED && self . bytes [ index - 2 ] >= 0xA0 {
464
+ panic ! ( "byte index {index} lies between surrogate codepoints" ) ;
465
+ }
476
466
}
477
467
}
478
468
}
0 commit comments