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
12.7 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 16 of 16 warn and critical signals; 16 demoted to info.
Disclude version
4.0.0
Scanned (UTC)
2026-10-14 20:16

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.90 A Russian dialogue word containing a Latin 'o' and 'r' inside a subtitle text file.
    Reasoning

    Latin 'r' in a Russian subtitle word 'Боr' is a typo or transcription artifact in dialogue text, not a code identifier; the file is a natural-language haystack corpus.

  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.90 Mixed-script token in Russian subtitle prose.
    Reasoning

    Mixed Cyrillic and Latin letters appear in prose subtitle text, not an identifier used by code; this is a raw-pass false positive on a corpus file.

  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)

    -Две недели не даешь мне прохода.
    Вот и действуй, чем ты рискуешь?
    Я думал, что сделаю тебя счастливой.
    likely benign LLM, confidence 0.93 Plain Russian subtitle text flagged for limited character set.
    Reasoning

    The snippet is ordinary Russian dialogue with normal punctuation; the narrow charset flag is an artifact of the sampled excerpt or benchmark corpus, not obfuscation.

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

    qjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjazqjaz
    likely benign LLM, confidence 0.93 Synthetic benchmark file with a very long repetitive line.
    Reasoning

    A benchmark haystack deliberately constructed to defeat frequency-based detectors; the long repetitive line is intentional test data, not shipped code.

  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
    likely benign LLM, confidence 0.93 Synthetic repeated 'qjaz' pattern in a benchmark file.
    Reasoning

    This is a synthetic pathological benchmark input made of repeated characters; the narrow charset is by design for testing the scanner.

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

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    likely benign LLM, confidence 0.93 Synthetic benchmark file of repeated 'z' characters.
    Reasoning

    Intentional synthetic benchmark haystack consisting of a single repeated character; it is test data for the scanner, not an attack 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
    likely benign LLM, confidence 0.93 Synthetic 'az' repetition in a benchmark test file.
    Reasoning

    Two-character repetition in a benchmark haystack designed to stress detectors; no executable content is present.

  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
    likely benign LLM, confidence 0.93 Synthetic repeated-pattern benchmark file.
    Reasoning

    A synthetic repeated 'qaz' pattern in a pathological benchmark directory; it is test input for the scanner and has no executable or obfuscated payload.

  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
    likely benign LLM, confidence 0.93 Synthetic huge repeated-character benchmark file.
    Reasoning

    A 500 KB single-character line in a pathological benchmark haystack; it is deliberately constructed test data for detector performance, not malicious code.

  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
    likely benign LLM, confidence 0.97 Synthetic benchmark haystack consisting of repeated 'z' characters.
    Reasoning

    The file is a benchmark haystack of repeated 'z' characters used to test a search library's performance on pathological input. It is test data, not code, and the charset signal is an artifact of its synthetic construction.

  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.97 Synthetic small benchmark haystack of repeated 'z' characters.
    Reasoning

    Same as the huge variant: a small pathological benchmark input of repeated 'z' characters, clearly generated test data with no executable content.

  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.95 Random base64-like filler text in a search benchmark haystack.
    Reasoning

    A raw base64-like random string in a benchmark haystack file used for substring search testing. The high compression ratio and random content are typical of generated benchmark data. Raw pass has a higher false-positive rate and nothing indicates it is 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 
               Ķ         ĺͻ 
                                                                 
               Ķ         ĺͼ 
    dismissed LLM, confidence 0.95 Special Latin/Greek glyphs in an i386 reference text file's table layout.
    Reasoning

    The file is an i386 architecture reference document (text, not source code) containing Unicode box/drawing or table glyphs. The 'identifier' is just a decorative or special character in prose text, not a program identifier, so the mixed-script signal is a false positive from raw-pass character analysis.

  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)

                                                                 
               Ķ         ĺͼ 
                                                ͼ
                              
    dismissed LLM, confidence 0.95 Mixed Latin/Greek glyphs in an i386 reference text table.
    Reasoning

    Same document and pattern as the other i386 finding; the glyphs appear in a text reference table, not in executable code, so there is no identifier 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 
               Ķ         ĺͻ 
                                                                 
               Ķ         ĺͼ 
    dismissed LLM, confidence 0.95 Repeated Latin/Greek glyphs in an i386 reference text table.
    Reasoning

    Repeats the same glyph sequence from line 7496 in the same non-code reference document; benign text content flagged by a raw character heuristic.

  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)

                                                                 
               Ķ         ĺͼ 
                                                ͼ
               ͼ
    dismissed LLM, confidence 0.95 Mixed Latin/Greek glyphs in an i386 reference text table.
    Reasoning

    Same as the other i386 findings: decorative glyphs in a plain text reference file, not a code identifier, so the mixed-script flag 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.0.0
git clone https://github.com/BurntSushi/memchr memchr && cd memchr
git checkout 2.8.3
disclude scan --severity info --diff 2.8.2 .