rfc2396 1.1.0

A library for validating strings as RFC2396-compliant URIs
Documentation
use anyhow::Context;

test_cases! {
    component::hier_part: {
        case_001: "/$D75Ai0wb4",
        case_002: "/$NENK@7R;m",
        case_003: "/%B7O*hmI21'z",
        case_004: "/&Grpn?=DyA",
        case_005: "/&RR/@D2ILx",
        case_006: "/&pI@X;:+Fp",
        case_007: "/(lU3:3~5SO",
        case_008: "/)o8=rR!0sW",
        case_009: "/+Eh%83HtN@=I",
        case_010: "/+JoXIEck6'",
        case_011: "/+p(,s/sal3",
        case_012: "/,N!1l_zvjo",
        case_013: "/-_w).l80%E0'",
        case_014: "/-r8gvBSa@E",
        case_015: "/.9@BMA&sO$",
        case_016: "/.wS:mzYb.j",
        case_017: "//pelhcr;Y-",
        case_018: "/04asKrc9Gv",
        case_019: "/1pPLLe)vkZ",
        case_020: "/1yd(@m)3Co",
        case_021: "/2!;ye~kRy:",
        case_022: "/2C$u%6CP,?-z",
        case_023: "/2rGWge5@sM",
        case_024: "/3ImdXahQ$4",
        case_025: "/3__m@s~%77Z$",
        case_026: "/5p8e?4j0x~",
        case_027: "/5xw_rI=ayb",
        case_028: "/6PF8%A1beO7p",
        case_029: "/6mzTTvB/~E",
        case_030: "/7TKc;Q5SYh",
        case_031: "/9WjFl@)P7@",
        case_032: "/:eu)_t&xQx",
        case_033: "/;;_aHiSMft",
        case_034: "/=GlN0xvLqi",
        case_035: "/=LUS%D2TNtik",
        case_036: "/?wiOM?&iN?",
        case_037: "/AG)GtHeT5Y",
        case_038: "/ASQ6mho5yk",
        case_039: "/AdS(G008BV",
        case_040: "/B+nPttRxNx",
        case_041: "/BN=dk'6nRw",
        case_042: "/C%D0yXZ1o5a@",
        case_043: "/CFXb3KD$iP",
        case_044: "/E=j;P(JW1d",
        case_045: "/EQGvf!P@%17n",
        case_046: "/Ed;.oG_Cy)",
        case_047: "/F!ubR&,)E7",
        case_048: "/Gah$.dcL;H",
        case_049: "/Gw?d5sx_I(",
        case_050: "/I$$.WyYBr/",
        case_051: "/IRla;xxDTZ",
        case_052: "/IzNhzNssAI",
        case_053: "/KDsVprR~4i",
        case_054: "/Ksp+8cleBB",
        case_055: "/M!PKd9UP/i",
        case_056: "/N,,hOR*NXW",
        case_057: "/NX7N4D@R.1",
        case_058: "/PGROHWtX'w",
        case_059: "/PeML&laa9-",
        case_060: "/QZ2f.l:v+u",
        case_061: "/T+6-K%AAde/F",
        case_062: "/T.OUeKFE0D",
        case_063: "/Tp&R~5.yDE",
        case_064: "/UayP~KRs&k",
        case_065: "/WK3@KoDa)E",
        case_066: "/Xkcat3MaGd",
        case_067: "/Yc_LqMIjHr",
        case_068: "/a3uLYUPOM3",
        case_069: "/b**8i/V3WJ",
        case_070: "/bdfw:f~0+~",
        case_071: "/bnR=22eT)0",
        case_072: "/c)wbTsY7k=",
        case_073: "/dAHLiv6L_Y",
        case_074: "/dj/QvA!w.u",
        case_075: "/eB,(hg$A8@",
        case_076: "/etGC2E7,a&",
        case_077: "/hSl0q=)@P1",
        case_078: "/h~!p%26y_9D4",
        case_079: "/i)1Wx7o'Z/",
        case_080: "/iH4k%A3?YJ1N",
        case_081: "/jD))kr-Iun",
        case_082: "/lzK=*xDq-m",
        case_083: "/mKcjw.:?Fr",
        case_084: "/nYn5snwZuN",
        case_085: "/nZ:cQkY:/I",
        case_086: "/nynvKrkr=B",
        case_087: "/q$$b't4!r8",
        case_088: "/rPgwu@TWP6",
        case_089: "/u_BZ481l3$",
        case_090: "/ucCDMQjpMt",
        case_091: "/v)T4h-Bw~,",
        case_092: "/v5/nF_B3Fv",
        case_093: "/vMRvn@1$.i",
        case_094: "/wBIIyB2-N7",
        case_095: "/wHue8W@tbM",
        case_096: "/xFQd;Bp+mP",
        case_097: "/y2'Tl%73K(Y5",
        case_098: "/y::E2qFC*u",
        case_099: "/yM/LVGmsAm",
        case_100: "/ztX+,wFt?I"
    }
}