rfc2396 1.1.0

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

test_cases! {
    component::hostname: {
        case_001: "BKnDM1bXl",
        case_002: "BM6Yq0SXcY",
        case_003: "BrFc3sbPeM",
        case_004: "D0WSqrU.Kb",
        case_005: "F9.z8sRmGV",
        case_006: "FQwkb8Sr6B",
        case_007: "G87obXy85z",
        case_008: "GHS8mDeAG8",
        case_009: "GiYnHWOMlS",
        case_010: "GyadR3gXg",
        case_011: "H8wnbD3fUS",
        case_012: "HS4t4KuS9z",
        case_013: "HYatdIlWJ",
        case_014: "Hj7SB6q4Ix",
        case_015: "IZIf.lm-ac",
        case_016: "IqEveR1Jh4",
        case_017: "JBYwl4tpYc",
        case_018: "K8ZS.a.hLG",
        case_019: "KOhoKl8cOQ",
        case_020: "KaOA.XpeW",
        case_021: "LEwfBPqk1F",
        case_022: "LHFG77jW1z",
        case_023: "LM-a2hlEFT",
        case_024: "LM2vLTzAin",
        case_025: "LTyhGGmLY5",
        case_026: "MWmPId3rgv",
        case_027: "MwSoMTbGcw",
        case_028: "NSeqklaJo0",
        case_029: "OwSKmCRYfA",
        case_030: "P-L.f8sgH",
        case_031: "P6lDnkv7WB",
        case_032: "P7CUFmha3E",
        case_033: "PBeGgNJRUn",
        case_034: "QF.EDLrWFm",
        case_035: "QMaRp1bDP8",
        case_036: "RHtrssIAOR",
        case_037: "RTBXogPj1p",
        case_038: "RcN8wE3zVa",
        case_039: "S5Vh0.BQQK",
        case_040: "SCMhQ9zdtg",
        case_041: "TAb6T0HeQ",
        case_042: "TFoQb2WN9D",
        case_043: "V6TFudrSC.",
        case_044: "VReQrYocXC",
        case_045: "VXdvmbDM2",
        case_046: "VtHKfYbswe",
        case_047: "WDt32Fuo.L",
        case_048: "WOHmximCgY",
        case_049: "X92d5DQf1S",
        case_050: "XZ4Os1Bn9d",
        case_051: "XdpgG5hL",
        case_052: "YH8aENQ3oR",
        case_053: "ZOxUTXDOK",
        case_054: "aG.hAgcUML",
        case_055: "acU80oxVIc",
        case_056: "aqz2pfk.zY",
        case_057: "bPIt-41BZV",
        case_058: "c965qmR9O",
        case_059: "cL-d5OF6SX",
        case_060: "cz75dSJdn",
        case_061: "eNfcSlfL1D",
        case_062: "ehMADtdmf",
        case_063: "f0-1a3x9m",
        case_064: "fqHi9o-QhX",
        case_065: "gYokmXiCpb",
        case_066: "gZVn1kSqmr",
        case_067: "gxugnCqQBn",
        case_068: "i.z8TMDA22",
        case_069: "idlFjZJ7r6",
        case_070: "jY-sPi7vnb",
        case_071: "jYhn9MI1h",
        case_072: "lXM5JvUEWU",
        case_073: "lm4-DhFDR",
        case_074: "mHVdNsml4y",
        case_075: "moAlL21kkX",
        case_076: "n49oAgyFvV",
        case_077: "o7X3c9xzh",
        case_078: "oeeYK45Dc",
        case_079: "orMXXl9BMN",
        case_080: "pd8mGYFwn",
        case_081: "piSmp8PzZ",
        case_082: "qD5kgqiE86",
        case_083: "rNNXbA5jP",
        case_084: "sc-t9pCFx",
        case_085: "t66IezdWna",
        case_086: "tKMH-W4fYq",
        case_087: "tfMGQf3IGP",
        case_088: "u2STWi6BBK",
        case_089: "uDJh2JoBXO",
        case_090: "uDY.LUNJca",
        case_091: "uS.tG2245a",
        case_092: "vmA.gyH5zA",
        case_093: "vxOKt1PC0D",
        case_094: "w2zxVJnI7c",
        case_095: "wFXH2tDBbA",
        case_096: "x1AJbfk1aE",
        case_097: "yG2ck1tSNb",
        case_098: "z.VIqFKDu",
        case_099: "zJ7ADsXbW9",
        case_100: "zcuiEJr8Hi"
    }
}