crates.io / memchr / 2.8.3

memchr 2.8.3

Source
https://github.com/BurntSushi/memchr
Tag scanned
2.8.3
Compared with
2.8.2 (0 signals introduced since)
Files
108 scanned, 51 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 174 info
Scan time
13.3 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 16 of 16 warn and critical signals; 16 demoted to info.
Disclude version
4.1.0
Scanned (UTC)
2026-10-22 22:15

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_iterator(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
    
        b.iter(|| s.chars().count());
  2. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_iterator_for(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
    
        b.iter(|| {
  3. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_iterator_rev(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
    
        b.iter(|| s.chars().rev().count());
  4. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_iterator_rev_for(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
    
        b.iter(|| {
  5. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_indicesator(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
        let len = s.chars().count();
  6. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn char_indicesator_rev(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
        let len = s.chars().count();
  7. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn split_unicode_ascii(b: &mut Bencher) {
        let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam";
    
        b.iter(|| assert_eq!(s.split('V').count(), 3));
  8. identifier `Namประเทศไทย中华Việt` mixes scripts: Latin + Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn split_unicode_ascii(b: &mut Bencher) {
        let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam";
    
        b.iter(|| assert_eq!(s.split('V').count(), 3));
  9. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn bench_join(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
        let sep = "→";
        let v = vec![s, s, s, s, s, s, s, s, s, s];
  10. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

                make_test_inner!($s, $code, short_mixed,
                    "ศไทย中华Việt Nam; Mary had a little lamb, Little lam!", $iters);
                make_test_inner!($s, $code, short_pile_of_poo,
                    "💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩!", $iters);
  11. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn bench_push_str(b: &mut Bencher) {
        let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
        b.iter(|| {
            let mut r = String::new();
  12. identifier `𐌀𐌖𐌋𐌄𐌑𐌉ปรدولة` mixes scripts: Other + Arabic (in string/comment) (raw pass, confidence 0.40)

    fn from_utf8_lossy_100_multibyte(b: &mut Bencher) {
        let s = "𐌀𐌖𐌋𐌄𐌑𐌉ปรدولة الكويتทศไทย中华𐍅𐌿𐌻𐍆𐌹𐌻𐌰".as_bytes();
        assert_eq!(100, s.len());
        b.iter(|| {
  13. identifier `الكويتทศไทย中华𐍅𐌿𐌻𐍆𐌹𐌻𐌰` mixes scripts: Arabic + Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn from_utf8_lossy_100_multibyte(b: &mut Bencher) {
        let s = "𐌀𐌖𐌋𐌄𐌑𐌉ปรدولة الكويتทศไทย中华𐍅𐌿𐌻𐍆𐌹𐌻𐌰".as_bytes();
        assert_eq!(100, s.len());
        b.iter(|| {
  14. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert!("hello".find(|c: char| c == 'x').is_none());
        assert_eq!("ประเทศไทย中华Việt Nam".find('华'), Some(30));
        assert_eq!("ประเทศไทย中华Việt Nam".find(|c: char| c == '华'), Some(30));
    }
  15. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!("ประเทศไทย中华Việt Nam".find('华'), Some(30));
        assert_eq!("ประเทศไทย中华Việt Nam".find(|c: char| c == '华'), Some(30));
    }
  16. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert!("hello".rfind(|c: char| c == 'x').is_none());
        assert_eq!("ประเทศไทย中华Việt Nam".rfind('华'), Some(30));
        assert_eq!("ประเทศไทย中华Việt Nam".rfind(|c: char| c == '华'), Some(30));
    }
  17. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!("ประเทศไทย中华Việt Nam".rfind('华'), Some(30));
        assert_eq!("ประเทศไทย中华Việt Nam".rfind(|c: char| c == '华'), Some(30));
    }
  18. identifier `ประเทศไทย中` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(empty, s);
        let data = "ประเทศไทย中";
        let s: String = data.chars().collect();
        assert_eq!(data, s);
  19. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let string = "ประเทศไทย中华Việt Nam";
        let mut data = String::from(string);
        data.push_str(string);
  20. identifier `ไท华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        data.push_str(string);
        assert!(data.find("ไท华").is_none());
        assert_eq!(data[0..43].find(""), Some(0));
        assert_eq!(data[6..43].find(""), Some(6 - 6));
  21. identifier `ย中` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data[0..43].find("ทศไ"), Some(12));
        assert_eq!(data[0..43].find("ย中"), Some(24));
        assert_eq!(data[0..43].find("iệt"), Some(34));
        assert_eq!(data[0..43].find("Nam"), Some(40));
  22. identifier `ย中` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data[43..86].find("ทศไ"), Some(55 - 43));
        assert_eq!(data[43..86].find("ย中"), Some(67 - 43));
        assert_eq!(data[43..86].find("iệt"), Some(77 - 43));
        assert_eq!(data[43..86].find("Nam"), Some(83 - 43));
  23. identifier `ประเทศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn test_replace_2a() {
        let data = "ประเทศไทย中华";
        let repl = "دولة الكويت";
  24. identifier `الكويتทศไทย中华` mixes scripts: Arabic + Other + Han (in string/comment) (raw pass, confidence 0.40)

        let a = "ประเ";
        let a2 = "دولة الكويتทศไทย中华";
        assert_eq!(data.replace(a, repl), a2);
    }
  25. identifier `ประเทศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn test_replace_2b() {
        let data = "ประเทศไทย中华";
        let repl = "دولة الكويت";
  26. identifier `ปรدولة` mixes scripts: Other + Arabic (in string/comment) (raw pass, confidence 0.40)

        let b = "ะเ";
        let b2 = "ปรدولة الكويتทศไทย中华";
        assert_eq!(data.replace(b, repl), b2);
    }
  27. identifier `الكويتทศไทย中华` mixes scripts: Arabic + Other + Han (in string/comment) (raw pass, confidence 0.40)

        let b = "ะเ";
        let b2 = "ปรدولة الكويتทศไทย中华";
        assert_eq!(data.replace(b, repl), b2);
    }
  28. identifier `ประเทศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn test_replace_2c() {
        let data = "ประเทศไทย中华";
        let repl = "دولة الكويت";
  29. identifier `ประเทศไทยدولة` mixes scripts: Other + Arabic (in string/comment) (raw pass, confidence 0.40)

        let c = "中华";
        let c2 = "ประเทศไทยدولة الكويت";
        assert_eq!(data.replace(c, repl), c2);
    }
  30. identifier `ประเทศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn test_replace_2d() {
        let data = "ประเทศไทย中华";
        let repl = "دولة الكويت";
  31. identifier `ไท华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    
        let d = "ไท华";
        assert_eq!(data.replace(d, repl), data);
    }
  32. identifier `abcdαβγδabcdαβγδ` contains homoglyph candidates: α (03B1)→a, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    fn test_replace_pattern() {
        let data = "abcdαβγδabcdαβγδ";
        assert_eq!(data.replace("dαβ", "😺😺😺"), "abc😺😺😺γδabc😺😺😺γδ");
        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
  33. identifier `abcdαβγδabcdαβγδ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

    fn test_replace_pattern() {
        let data = "abcdαβγδabcdαβγδ";
        assert_eq!(data.replace("dαβ", "😺😺😺"), "abc😺😺😺γδabc😺😺😺γδ");
        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
  34. identifier `dαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        let data = "abcdαβγδabcdαβγδ";
        assert_eq!(data.replace("dαβ", "😺😺😺"), "abc😺😺😺γδabc😺😺😺γδ");
        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
  35. identifier `dαβ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        let data = "abcdαβγδabcdαβγδ";
        assert_eq!(data.replace("dαβ", "😺😺😺"), "abc😺😺😺γδabc😺😺😺γδ");
        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
  36. identifier `γδabc` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)

        let data = "abcdαβγδabcdαβγδ";
        assert_eq!(data.replace("dαβ", "😺😺😺"), "abc😺😺😺γδabc😺😺😺γδ");
        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
  37. identifier `abcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
  38. identifier `abcdαβ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
  39. identifier `δabcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
  40. identifier `δabcdαβ` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace('γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
  41. identifier `bcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  42. identifier `bcdαβ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  43. identifier `bcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  44. identifier `bcdαβ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  45. identifier `abcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  46. identifier `abcdαβ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  47. identifier `δabcdαβ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  48. identifier `δabcdαβ` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.replace(&['a', 'γ'] as &[_], "😺😺😺"), "😺😺😺bcdαβ😺😺😺δ😺😺😺bcdαβ😺😺😺δ");
        assert_eq!(data.replace(|c| c == 'γ', "😺😺😺"), "abcdαβ😺😺😺δabcdαβ😺😺😺δ");
    }
  49. identifier `ประเทศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    
            let data = "ประเทศไทย中华";
            assert_range_eq!(data, 0..3, "ป");
            assert_range_eq!(data, 3..6, "ร");
  50. identifier `abcαβγ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        mod boundary {
            const DATA: &str = "abcαβγ";
    
            const BAD_START: usize = 4;
  51. identifier `abcαβγ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        mod boundary {
            const DATA: &str = "abcαβγ";
    
            const BAD_START: usize = 4;
  52. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

                    message:
                        "byte index 4 is not a char boundary; it is inside 'α' (bytes 3..5) of";
                }
  53. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

                    message:
                        "byte index 4 is not a char boundary; it is inside 'α' (bytes 3..5) of";
                }
  54. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

                    message:
                        "byte index 4 is not a char boundary; it is inside 'α' (bytes 3..5) of";
                }
  55. identifier `abcαβγ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    fn test_str_slice_rangetoinclusive_ok() {
        let s = "abcαβγ";
        assert_eq!(&s[..=2], "abc");
        assert_eq!(&s[..=4], "abcα");
  56. identifier `abcαβγ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

    fn test_str_slice_rangetoinclusive_ok() {
        let s = "abcαβγ";
        assert_eq!(&s[..=2], "abc");
        assert_eq!(&s[..=4], "abcα");
  57. identifier `abcα` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(&s[..=2], "abc");
        assert_eq!(&s[..=4], "abcα");
    }
  58. identifier `abcα` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(&s[..=2], "abc");
        assert_eq!(&s[..=4], "abcα");
    }
  59. identifier `abcαβγ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    fn test_str_slice_rangetoinclusive_notok() {
        let s = "abcαβγ";
        &s[..=3];
    }
  60. identifier `abcαβγ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

    fn test_str_slice_rangetoinclusive_notok() {
        let s = "abcαβγ";
        &s[..=3];
    }
  61. identifier `abcαβγ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    fn test_str_slicemut_rangetoinclusive_ok() {
        let mut s = "abcαβγ".to_owned();
        let s: &mut str = &mut s;
        assert_eq!(&mut s[..=2], "abc");
  62. identifier `abcαβγ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

    fn test_str_slicemut_rangetoinclusive_ok() {
        let mut s = "abcαβγ".to_owned();
        let s: &mut str = &mut s;
        assert_eq!(&mut s[..=2], "abc");
  63. identifier `abcα` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!(&mut s[..=2], "abc");
        assert_eq!(&mut s[..=4], "abcα");
    }
  64. identifier `abcα` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(&mut s[..=2], "abc");
        assert_eq!(&mut s[..=4], "abcα");
    }
  65. identifier `abcαβγ` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    fn test_str_slicemut_rangetoinclusive_notok() {
        let mut s = "abcαβγ".to_owned();
        let s: &mut str = &mut s;
        &mut s[..=3];
  66. identifier `abcαβγ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

    fn test_str_slicemut_rangetoinclusive_notok() {
        let mut s = "abcαβγ".to_owned();
        let s: &mut str = &mut s;
        &mut s[..=3];
  67. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_is_char_boundary() {
        let s = "ศไทย中华Việt Nam β-release 🐱123";
        assert!(s.is_char_boundary(0));
        assert!(s.is_char_boundary(s.len()));
  68. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!("abc".as_bytes(), b"abc");
        assert_eq!("ศไทย中华Việt Nam".as_bytes(), v);
    }
  69. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let data = "ประเทศไทย中华Việt Nam";
        assert!(data.contains("ประเ"));
        assert!(data.contains("ะเ"));
  70. identifier `ไท华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        assert!(data.contains("中华"));
        assert!(!data.contains("ไท华"));
    }
  71. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_split_at() {
        let s = "ศไทย中华Việt Nam";
        for (index, _) in s.char_indices() {
            let (a, b) = s.split_at(index);
  72. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_split_at_boundscheck() {
        let s = "ศไทย中华Việt Nam";
        s.split_at(1);
    }
  73. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_iterator() {
        let s = "ศไทย中华Việt Nam";
        let v = ['ศ', 'ไ', 'ท', 'ย', '中', '华', 'V', 'i', 'ệ', 't', ' ', 'N', 'a', 'm'];
  74. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_rev_iterator() {
        let s = "ศไทย中华Việt Nam";
        let v = ['m', 'a', 'N', ' ', 't', 'ệ', 'i', 'V', '华', '中', 'ย', 'ท', 'ไ', 'ศ'];
  75. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_iterator_clone() {
        let s = "ศไทย中华Việt Nam";
        let mut it = s.chars();
        it.next();
  76. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_iterator_last() {
        let s = "ศไทย中华Việt Nam";
        let mut it = s.chars();
        it.next();
  77. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_chars_debug() {
        let s = "ศไทย中华Việt Nam";
        let c = s.chars();
        assert_eq!(
  78. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_bytesator() {
        let s = "ศไทย中华Việt Nam";
        let v = [
            224, 184, 168, 224, 185, 132, 224, 184, 151, 224, 184, 162, 228, 184, 173, 229, 141, 142,
  79. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_bytes_revator() {
        let s = "ศไทย中华Việt Nam";
        let v = [
            224, 184, 168, 224, 185, 132, 224, 184, 151, 224, 184, 162, 228, 184, 173, 229, 141, 142,
  80. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_bytesator_nth() {
        let s = "ศไทย中华Việt Nam";
        let v = [
            224, 184, 168, 224, 185, 132, 224, 184, 151, 224, 184, 162, 228, 184, 173, 229, 141, 142,
  81. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_bytesator_count() {
        let s = "ศไทย中华Việt Nam";
    
        let b = s.bytes();
  82. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_bytesator_last() {
        let s = "ศไทย中华Việt Nam";
    
        let b = s.bytes();
  83. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_char_indicesator() {
        let s = "ศไทย中华Việt Nam";
        let p = [0, 3, 6, 9, 12, 15, 18, 19, 20, 23, 24, 25, 26, 27];
        let v = ['ศ', 'ไ', 'ท', 'ย', '中', '华', 'V', 'i', 'ệ', 't', ' ', 'N', 'a', 'm'];
  84. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_char_indices_revator() {
        let s = "ศไทย中华Việt Nam";
        let p = [27, 26, 25, 24, 23, 20, 19, 18, 15, 12, 9, 6, 3, 0];
        let v = ['m', 'a', 'N', ' ', 't', 'ệ', 'i', 'V', '华', '中', 'ย', 'ท', 'ไ', 'ศ'];
  85. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_char_indices_last() {
        let s = "ศไทย中华Việt Nam";
        let mut it = s.char_indices();
        it.next();
  86. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        t("::hello::there::", "::", &["", "hello", "there", ""]);
        t("ประเทศไทย中华Việt Nam", "中华", &["ประเทศไทย", "Việt Nam"]);
        t("zzXXXzzYYYzz", "zz", &["", "XXX", "YYY", ""]);
        t("zzXXXzYYYz", "XXX", &["zz", "zYYYz"]);
  87. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let xs = "ศไทย中华Việt Nam".as_bytes();
        assert_eq!(from_utf8(xs), Ok("ศไทย中华Việt Nam"));
  88. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        let xs = "ศไทย中华Việt Nam".as_bytes();
        assert_eq!(from_utf8(xs), Ok("ศไทย中华Việt Nam"));
    
        let xs = b"hello\xFF";
  89. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ".to_lowercase(), "ας");
        assert_eq!("Α'Σ".to_lowercase(), "α'ς");
        assert_eq!("Α''Σ".to_lowercase(), "α''ς");
  90. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ".to_lowercase(), "ας");
        assert_eq!("Α'Σ".to_lowercase(), "α'ς");
        assert_eq!("Α''Σ".to_lowercase(), "α''ς");
  91. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ".to_lowercase(), "α'ς");
        assert_eq!("Α''Σ".to_lowercase(), "α''ς");
    
        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
  92. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ".to_lowercase(), "α'ς");
        assert_eq!("Α''Σ".to_lowercase(), "α''ς");
    
        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
  93. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  94. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  95. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  96. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  97. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  98. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ Α".to_lowercase(), "ας α");
        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
  99. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
  100. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
  101. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
  102. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ Α".to_lowercase(), "α'ς α");
        assert_eq!("Α''Σ Α".to_lowercase(), "α''ς α");
    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
  103. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
        assert_eq!("ΑΣ'' Α".to_lowercase(), "ας'' α");
  104. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
        assert_eq!("ΑΣ'' Α".to_lowercase(), "ας'' α");
  105. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
        assert_eq!("ΑΣ'' Α".to_lowercase(), "ας'' α");
    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
  106. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ' Α".to_lowercase(), "ας' α");
        assert_eq!("ΑΣ'' Α".to_lowercase(), "ας'' α");
    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
  107. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
  108. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
  109. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
  110. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
  111. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
  112. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
  113. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
  114. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α'Σ' Α".to_lowercase(), "α'ς' α");
        assert_eq!("Α''Σ'' Α".to_lowercase(), "α''ς'' α");
    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
  115. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
  116. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        assert_eq!("Α Σ".to_lowercase(), "α σ");
        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
  117. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α Σ".to_lowercase(), "α σ");
        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
  118. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α Σ".to_lowercase(), "α σ");
        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
  119. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
    
        assert_eq!("Σ".to_lowercase(), "σ");
  120. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("Α 'Σ".to_lowercase(), "α 'σ");
        assert_eq!("Α ''Σ".to_lowercase(), "α ''σ");
    
        assert_eq!("Σ".to_lowercase(), "σ");
  121. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣΑ".to_lowercase(), "ασα");
        assert_eq!("ΑΣ'Α".to_lowercase(), "ασ'α");
        assert_eq!("ΑΣ''Α".to_lowercase(), "ασ''α");
    }
  122. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣΑ".to_lowercase(), "ασα");
        assert_eq!("ΑΣ'Α".to_lowercase(), "ασ'α");
        assert_eq!("ΑΣ''Α".to_lowercase(), "ασ''α");
    }
  123. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ'Α".to_lowercase(), "ασ'α");
        assert_eq!("ΑΣ''Α".to_lowercase(), "ασ''α");
    }
  124. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("ΑΣ'Α".to_lowercase(), "ασ'α");
        assert_eq!("ΑΣ''Α".to_lowercase(), "ασ''α");
    }
  125. identifier `aéDžßfiᾀ` mixes scripts: Latin + Other + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!("".to_uppercase(), "");
        assert_eq!("aéDžßfiᾀ".to_uppercase(), "AÉDŽSSFIἈΙ");
    }
  126. identifier `AÉDŽSSFIἈΙ` mixes scripts: Latin + Greek (in string/comment) (raw pass, confidence 0.40)

        assert_eq!("".to_uppercase(), "");
        assert_eq!("aéDžßfiᾀ".to_uppercase(), "AÉDŽSSFIἈΙ");
    }
  127. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("abc".repeat(0), "");
        assert_eq!("α".repeat(3), "ααα");
    }
  128. identifier `ααα` contains homoglyph candidates: α (03B1)→a, α (03B1)→a, α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        assert_eq!("abc".repeat(0), "");
        assert_eq!("α".repeat(3), "ααα");
    }
  129. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let xs = "ศไทย中华Việt Nam".as_bytes().to_vec();
        assert_eq!(String::from_utf8(xs).unwrap(), String::from("ศไทย中华Việt Nam"));
  130. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        let xs = "ศไทย中华Việt Nam".as_bytes().to_vec();
        assert_eq!(String::from_utf8(xs).unwrap(), String::from("ศไทย中华Việt Nam"));
    
        let xs = b"hello\xFF".to_vec();
  131. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let xs = "ศไทย中华Việt Nam".as_bytes();
        let ys: Cow<'_, str> = "ศไทย中华Việt Nam".into_cow();
        assert_eq!(String::from_utf8_lossy(xs), ys);
  132. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        let xs = "ศไทย中华Việt Nam".as_bytes();
        let ys: Cow<'_, str> = "ศไทย中华Việt Nam".into_cow();
        assert_eq!(String::from_utf8_lossy(xs), ys);
  133. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(&s[0..], "abc");
        s.push_str("ประเทศไทย中华Việt Nam");
        assert_eq!(&s[0..], "abcประเทศไทย中华Việt Nam");
    }
  134. identifier `abcประเทศไทย中华Việt` mixes scripts: Latin + Other + Han (in string/comment) (raw pass, confidence 0.40)

        s.push_str("ประเทศไทย中华Việt Nam");
        assert_eq!(&s[0..], "abcประเทศไทย中华Việt Nam");
    }
  135. identifier `ประเทศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(s.as_str(), "abc");
        s += "ประเทศไทย中华Việt Nam";
        assert_eq!(s.as_str(), "abcประเทศไทย中华Việt Nam");
    }
  136. identifier `abcประเทศไทย中华Việt` mixes scripts: Latin + Other + Han (in string/comment) (raw pass, confidence 0.40)

        s += "ประเทศไทย中华Việt Nam";
        assert_eq!(s.as_str(), "abcประเทศไทย中华Việt Nam");
    }
  137. identifier `ประเทศไทย中` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

    fn test_push() {
        let mut data = String::from("ประเทศไทย中");
        data.push('华');
        data.push('b'); // 1 byte
  138. identifier `ประเทศไทย中华b` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        data.push('𤭢'); // 4 byte
        assert_eq!(data, "ประเทศไทย中华b¢€𤭢");
    }
  139. identifier `ประเทศไทย中华b` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_pop() {
        let mut data = String::from("ประเทศไทย中华b¢€𤭢");
        assert_eq!(data.pop().unwrap(), '𤭢'); // 4 bytes
        assert_eq!(data.pop().unwrap(), '€'); // 3 bytes
  140. identifier `ประเทศไทย中` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(data.pop().unwrap(), '华');
        assert_eq!(data, "ประเทศไทย中");
    }
  141. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn remove() {
        let mut s = "ศไทย中华Việt Nam; foobar".to_string();
        assert_eq!(s.remove(0), 'ศ');
        assert_eq!(s.len(), 33);
  142. identifier `ไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(s.len(), 33);
        assert_eq!(s, "ไทย中华Việt Nam; foobar");
        assert_eq!(s.remove(17), 'ệ');
        assert_eq!(s, "ไทย中华Vit Nam; foobar");
  143. identifier `ไทย中华Vit` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        assert_eq!(s.remove(17), 'ệ');
        assert_eq!(s, "ไทย中华Vit Nam; foobar");
    }
  144. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    
        let mut s = "ศไทย中华Việt Nam; foobarศ".to_string();
        s.remove_matches('ศ');
        assert_eq!(s, "ไทย中华Việt Nam; foobar");
  145. identifier `foobarศ` mixes scripts: Latin + Other (in string/comment) (raw pass, confidence 0.40)

    
        let mut s = "ศไทย中华Việt Nam; foobarศ".to_string();
        s.remove_matches('ศ');
        assert_eq!(s, "ไทย中华Việt Nam; foobar");
  146. identifier `ไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

        s.remove_matches('ศ');
        assert_eq!(s, "ไทย中华Việt Nam; foobar");
    
        let mut s = "".to_string();
  147. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

    
        s.retain(|c| c == 'α');
        assert_eq!(s, "α");
  148. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        s.retain(|c| c == 'α');
        assert_eq!(s, "α");
    
        s.retain(|_| false);
  149. identifier `ệfooยbar` mixes scripts: Latin + Other (in string/comment) (raw pass, confidence 0.40)

        s.insert(6, 'ย');
        assert_eq!(s, "ệfooยbar");
    }
  150. identifier `ศไทย中华Việt` mixes scripts: Other + Han + Latin (in string/comment) (raw pass, confidence 0.40)

    fn test_from_iterator() {
        let s = "ศไทย中华Việt Nam".to_string();
        let t = "ศไทย中华";
        let u = "Việt Nam";
  151. identifier `ศไทย中华` mixes scripts: Other + Han (in string/comment) (raw pass, confidence 0.40)

        let s = "ศไทย中华Việt Nam".to_string();
        let t = "ศไทย中华";
        let u = "Việt Nam";
  152. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        /// ```
        /// let mut s = String::from("α is alpha, β is beta");
        /// let beta_offset = s.find('β').unwrap_or(s.len());
        ///
  153. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        /// let t: String = s.drain(..beta_offset).collect();
        /// assert_eq!(t, "α is alpha, ");
        /// assert_eq!(s, "β is beta");
        ///
  154. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        /// ```
        /// let mut s = String::from("α is alpha, β is beta");
        /// let beta_offset = s.find('β').unwrap_or(s.len());
        ///
  155. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        /// // Replace the range up until the β from the string
        /// s.replace_range(..beta_offset, "Α is capital alpha; ");
        /// assert_eq!(s, "Α is capital alpha; β is beta");
        /// ```
  156. identifier `Α` contains homoglyph candidates: Α (0391)→A (in string/comment) (raw pass, confidence 0.35)

        /// s.replace_range(..beta_offset, "Α is capital alpha; ");
        /// assert_eq!(s, "Α is capital alpha; β is beta");
        /// ```
        #[stable(feature = "splice", since = "1.27.0")]
  157. info warn → info by review unicode-homoglyph benchmarks/haystacks/opensubtitles/ru-huge.txt:5057:4

    identifier `Боr` contains homoglyph candidates: о (043E)→o (raw pass, confidence 0.70)

    — Не думаешь стал быть — Стал-быть так.
    А Боr?
    Ты гляди...
    не чужого вскармливаешь
    likely benign LLM, confidence 0.93 A Russian subtitle line containing a Cyrillic/Latin mixed word 'Боr'.
    Reasoning

    Mixed Cyrillic 'о' with Latin 'r' in a Russian subtitle line ('Боr'), most likely a transcription/typo artifact in a subtitle corpus, not code. Benign text in a benchmark haystack.

  158. info warn → info by review unicode-mixed-script benchmarks/haystacks/opensubtitles/ru-huge.txt:5057:4

    identifier `Боr` mixes scripts: Cyrillic + Latin (raw pass, confidence 0.80)

    — Не думаешь стал быть — Стал-быть так.
    А Боr?
    Ты гляди...
    не чужого вскармливаешь
    likely benign LLM, confidence 0.93 Mixed Cyrillic and Latin script in the same subtitle word 'Боr'.
    Reasoning

    Same mixed-script token in a plain-text Russian subtitle file; a stray Latin character in dialogue is a corpus artifact, not an identifier used for evasion.

  159. info warn → info by review narrow-file-charset benchmarks/haystacks/opensubtitles/ru-medium.txt:1:1

    file uses only 6 distinct printable characters ("!,-.:?") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    -Две недели не даешь мне прохода.
    Вот и действуй, чем ты рискуешь?
    Я думал, что сделаю тебя счастливой.
    dismissed LLM, confidence 0.95 Russian subtitle dialogue flagged for a narrow character set.
    Reasoning

    The snippet is ordinary Russian dialogue with punctuation; a small character set is just a consequence of the short punctuation alphabet in a prose subtitle file, not obfuscation.

  160. line length 720056 characters (raw pass, confidence 0.65)

    qjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjaz
    dismissed LLM, confidence 0.95 A synthetic benchmark haystack with a very long repeated line.
    Reasoning

    This is a deliberately pathological benchmark file built to defeat frequency-based detectors; it is a test input, not a live attack payload.

  161. info warn → info by review narrow-file-charset benchmarks/haystacks/pathological/defeat-simple-vector-freq.txt:1:1

    file uses only 4 distinct printable characters ("ajqz") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    qjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjaz
    dismissed LLM, confidence 0.95 Synthetic repeated four-character pattern in a benchmark file.
    Reasoning

    Synthetic benchmark file of repeated characters designed to test the scanner's charset heuristic; no executable content.

  162. line length 720056 characters (raw pass, confidence 0.65)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    dismissed LLM, confidence 0.95 Synthetic long repeated-character line in a benchmark file.
    Reasoning

    Benchmark haystack of repeated characters intentionally made to stress the long-line check; not a payload.

  163. info warn → info by review narrow-file-charset benchmarks/haystacks/pathological/defeat-simple-vector-repeated.txt:1:1

    file uses only 2 distinct printable characters ("az") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    dismissed LLM, confidence 0.95 Synthetic two-character filler in a benchmark file.
    Reasoning

    Repeated 'z' and 'a' filler in a pathological test haystack; intended test data.

  164. info warn → info by review narrow-file-charset benchmarks/haystacks/pathological/defeat-simple-vector.txt:1:1

    file uses only 4 distinct printable characters ("abqz") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    qazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqaz
    qazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqaz
    qazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqazqaz
    dismissed LLM, confidence 0.95 Synthetic repeated 'qaz' filler in a benchmark file.
    Reasoning

    Repeating 'qaz' pattern in a benchmark haystack purposely constructed to defeat simple vector detection; not executable.

  165. info warn → info by review long-line benchmarks/haystacks/pathological/repeated-rare-huge.txt:1:1

    line length 500100 characters (raw pass, confidence 0.65)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    dismissed LLM, confidence 0.95 Synthetic single-character long line in a benchmark file.
    Reasoning

    A benchmark file of a single repeated character, clearly a synthetic stress test for the long-line detector.

  166. info warn → info by review narrow-file-charset benchmarks/haystacks/pathological/repeated-rare-huge.txt:1:1

    file uses only 1 distinct printable characters ("z") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    dismissed LLM, confidence 0.95 Synthetic single-character filler in a benchmark file.
    Reasoning

    Single-character repetition in a pathological benchmark haystack; no obfuscation payload present.

  167. line length 1000 characters (raw pass, confidence 0.50)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
  168. info warn → info by review narrow-file-charset benchmarks/haystacks/pathological/repeated-rare-small.txt:1:1

    file uses only 1 distinct printable characters ("z") — JSF*ck-style or character-constrained obfuscation (raw pass, confidence 0.90)

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    likely benign LLM, confidence 0.95 Benchmark haystack consisting of repeated 'z' characters.
    Reasoning

    A long run of a single repeated character in a benchmark haystack file is a test fixture for pathological input, not JSFuck-style obfuscation; there is no executable context.

  169. info warn → info by review encoding-base64 benchmarks/haystacks/sliceslice/haystack.txt:1:1

    base64-like blob (1000 bytes, compression ratio 0.78) (raw pass, confidence 0.60)

    I4BCeTWkpm1G1StV1WP8HKMX1IaRTslq88MOEg4nx7kWLaWYDRDYZrdTtsg26mz9S8DhYcd1ty35aPLyRZSeimOmPAroaqi861z44o35qP9GdrofuuHwdhSEeOg7E0L1KrTYgWZZrzyk7o0DVxw7vvmo6rVJ5T4lLMkesL1U6ObckS9oorPI5ZDm4Nk1ryh3AC8juZwJLcyWKveenfaVGaB42iYrOvrZGIMQG0OmA0k73ydw2mJawUzWE8O61MQpDm19JFaTgSJMkPs3yjY149knHg03uOBvb6d0hCmUbiHkRgFwH17cL7UJUlkggx55
    likely benign LLM, confidence 0.93 Random base64-like text in a benchmark haystack file.
    Reasoning

    The file is a benchmark haystack of random-looking text used to test string search; base64-like content in a test corpus is expected and not a payload being decoded or executed.

  170. line length 1000 characters (raw pass, confidence 0.50)

    I4BCeTWkpm1G1StV1WP8HKMX1IaRTslq88MOEg4nx7kWLaWYDRDYZrdTtsg26mz9S8DhYcd1ty35aPLyRZSeimOmPAroaqi861z44o35qP9GdrofuuHwdhSEeOg7E0L1KrTYgWZZrzyk7o0DVxw7vvmo6rVJ5T4lLMkesL1U6ObckS9oorPI5ZDm4Nk1ryh3AC8juZwJLcyWKveenfaVGaB42iYrOvrZGIMQG0OmA0k73ydw2mJawUzWE8O61MQpDm19JFaTgSJMkPs3yjY149knHg03uOBvb6d0hCmUbiHkRgFwH17cL7UJUlkggx55
  171. info warn → info by review unicode-mixed-script benchmarks/haystacks/sliceslice/i386.txt:7496:23

    identifier `ĺͻ` mixes scripts: Latin + Greek (raw pass, confidence 0.80)

                                                 INTERNAL REGISTER 
               Ķ         ĺͻ 
                                                                 
               Ķ         ĺͼ 
    likely benign LLM, confidence 0.93 Greek and Latin characters in a documentation text table of i386 registers.
    Reasoning

    This is an Intel i386 manual text dump where Greek-looking glyphs are table/box-drawing or math symbols in a plain-text document, not identifiers in code. Raw-pass unicode findings in prose documents are high false-positive.

  172. info warn → info by review unicode-mixed-script benchmarks/haystacks/sliceslice/i386.txt:7498:23

    identifier `ĺͼ` mixes scripts: Latin + Greek (raw pass, confidence 0.80)

                                                                 
               Ķ         ĺͼ 
                                                ͼ
                              
    likely benign LLM, confidence 0.93 Mixed-script symbols in an i386 documentation table.
    Reasoning

    Same i386 reference document with table characters; no code execution or identifier context, so the mixed-script flag reflects document glyphs rather than homoglyph obfuscation.

  173. info warn → info by review unicode-mixed-script benchmarks/haystacks/sliceslice/i386.txt:7506:23

    identifier `ĺͻ` mixes scripts: Latin + Greek (raw pass, confidence 0.80)

                                                 INTERNAL REGISTER 
               Ķ         ĺͻ 
                                                                 
               Ķ         ĺͼ 
    likely benign LLM, confidence 0.93 Mixed-script table glyphs in an i386 documentation text file.
    Reasoning

    Repeats the same pattern in the same plain-text documentation file; the flagged characters are table glyphs, not code identifiers.

  174. info warn → info by review unicode-mixed-script benchmarks/haystacks/sliceslice/i386.txt:7508:23

    identifier `ĺͼ` mixes scripts: Latin + Greek (raw pass, confidence 0.80)

                                                                 
               Ķ         ĺͼ 
                                                ͼ
               ͼ
    likely benign LLM, confidence 0.93 Mixed-script table glyphs in an i386 documentation text file.
    Reasoning

    Same documentation file and glyph pattern; no programming construct is present, so this is a false positive.

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.1.0
git clone https://github.com/BurntSushi/memchr memchr && cd memchr
git checkout 2.8.3
disclude scan --severity info --diff 2.8.2 .