pub(crate) const SCHEMES: &[&str] = &[
"aaa",
"aaas",
"about",
"acap",
"acct",
"acr",
"adiumxtra",
"afp",
"afs",
"aim",
"apt",
"attachment",
"aw",
"barion",
"beshare",
"bitcoin",
"blob",
"bolo",
"browserext",
"callto",
"cap",
"chrome",
"chrome-extension",
"cid",
"coap",
"coaps",
"com-eventbrite-attendee",
"content",
"crid",
"cvs",
"data",
"dav",
"dict",
"dlna-playcontainer",
"dlna-playsingle",
"dns",
"dntp",
"dtn",
"dvb",
"ed2k",
"example",
"facetime",
"fax",
"feed",
"feedready",
"file",
"filesystem",
"finger",
"fish",
"ftp",
"geo",
"gg",
"git",
"gizmoproject",
"go",
"gopher",
"gtalk",
"h323",
"ham",
"hcp",
"http",
"https",
"hxxp",
"hxxps",
"iax",
"icap",
"icon",
"im",
"imap",
"info",
"iotdisco",
"ipn",
"ipp",
"ipps",
"irc",
"irc6",
"ircs",
"iris",
"isostore",
"itms",
"jabber",
"jar",
"jms",
"keyparc",
"lastfm",
"ldap",
"ldaps",
"lvlt",
"magnet",
"mailserver",
"mailto",
"maps",
"market",
"message",
"mid",
"mms",
"modem",
"mongodb",
"moz",
"ms-access",
"ms-browser-extension",
"ms-drive-to",
"ms-enrollment",
"ms-excel",
"ms-gamebarservices",
"ms-getoffice",
"ms-help",
"ms-infopath",
"ms-media-stream-id",
"ms-officeapp",
"ms-powerpoint",
"ms-project",
"ms-publisher",
"ms-search-repair",
"ms-secondary-screen-controller",
"ms-secondary-screen-setup",
"ms-settings",
"ms-settings-airplanemode",
"ms-settings-bluetooth",
"ms-settings-camera",
"ms-settings-cellular",
"ms-settings-cloudstorage",
"ms-settings-connectabledevices",
"ms-settings-displays-topology",
"ms-settings-emailandaccounts",
"ms-settings-language",
"ms-settings-location",
"ms-settings-lock",
"ms-settings-nfctransactions",
"ms-settings-notifications",
"ms-settings-power",
"ms-settings-privacy",
"ms-settings-proximity",
"ms-settings-screenrotation",
"ms-settings-wifi",
"ms-settings-workplace",
"ms-spd",
"ms-sttoverlay",
"ms-transit-to",
"ms-virtualtouchpad",
"ms-visio",
"ms-walk-to",
"ms-whiteboard",
"ms-whiteboard-cmd",
"ms-word",
"msnim",
"msrp",
"msrps",
"mtqp",
"mumble",
"mupdate",
"mvn",
"news",
"nfs",
"ni",
"nih",
"nntp",
"notes",
"ocf",
"oid",
"onenote",
"onenote-cmd",
"opaquelocktoken",
"pack",
"palm",
"paparazzi",
"pkcs11",
"platform",
"pop",
"pres",
"prospero",
"proxy",
"psyc",
"pwid",
"qb",
"query",
"redis",
"rediss",
"reload",
"res",
"resource",
"rmi",
"rsync",
"rtmfp",
"rtmp",
"rtsp",
"rtsps",
"rtspu",
"secondlife",
"service",
"session",
"sftp",
"sgn",
"shttp",
"sieve",
"sip",
"sips",
"skype",
"smb",
"sms",
"smtp",
"snews",
"snmp",
"soap.beep",
"soap.beeps",
"soldat",
"spotify",
"ssh",
"steam",
"stun",
"stuns",
"submit",
"svn",
"tag",
"teamspeak",
"tel",
"teliaeid",
"telnet",
"tftp",
"things",
"thismessage",
"tip",
"tn3270",
"tool",
"turn",
"turns",
"tv",
"udp",
"unreal",
"urn",
"ut2004",
"v-event",
"vemmi",
"view-source",
"vnc",
"wais",
"webcal",
"wpid",
"ws",
"wss",
"wtai",
"wyciwyg",
"xcon",
"xcon-userid",
"xfire",
"xmlrpc.beep",
"xmlrpc.beeps",
"xmpp",
"xri",
"ymsgr",
"z39.50",
"z39.50r",
"z39.50s",
];
pub(crate) fn is_scheme(scheme: &str) -> bool {
SCHEMES.binary_search(&scheme).is_ok()
}