Enum Scheme

Source
#[non_exhaustive]
pub enum Scheme<'scheme> {
Show 305 variants AAA, AAAS, About, ACAP, ACCT, ACR, AdiumXtra, AFP, AFS, AIM, AMSS, Android, AppData, APT, Attachment, AW, Barion, BeShare, Bitcoin, BitcoinCash, Blob, Bolo, BrowserExt, Calculator, CallTo, CAP, Cast, Casts, Chrome, ChromeExtension, CID, CoAP, CoAPTCP, CoAPWS, CoAPS, CoAPSTCP, CoAPSWS, ComEventBriteAttendee, Content, Conti, CRID, CVS, DAB, Data, DAV, Diaspora, DICT, DID, DIS, DLNAPlayContainer, DLNAPlaySingle, DNS, DNTP, DPP, DRM, Drop, DTN, DVB, ED2K, ELSI, Example, FaceTime, Fax, Feed, FeedReady, File, FileSystem, Finger, Fish, FM, FTP, FuchsiaPkg, Geo, GG, Git, GizmoProject, Go, Gopher, Graph, GTalk, H323, HAM, HCAP, HCP, HTTP, HTTPS, HXXP, HXXPS, HydraZone, IAX, ICAP, Icon, IM, IMAP, Info, IoTDisc, IPN, IPP, IPPS, IRC, IRC6, IRCS, IRIS, IRISBEEP, IRISLWZ, IRISXPC, IRISXPCS, IsoStore, ITMS, Jabber, JAR, JMS, KeyParc, LastFM, LDAP, LDAPS, LoRaWAN, LVLT, Magnet, MailServer, MailTo, Maps, Market, Message, MicrosoftWindowsCamera, MicrosoftWindowsCameraMultiPicker, MicrosoftWindowsCameraPicker, MID, MMS, Modem, MongoDB, Moz, MSAccess, MSBrowserExtension, MSCalculator, MSDriveTo, MSEnrollment, MSExcel, MSEyeControlSpeech, MSGameBarServices, MSGamingOverlay, MSGetOffice, MSHelp, MSInfoPath, MSInputApp, MSLockScreenComponentConfig, MSMediaStreamID, MSMixedRealityCapture, MSOfficeApp, MSPeople, MSProject, MSPowerPoint, MSPublisher, MSRestoreTabCompanion, MSS, MSScreenClip, MSScreenSketch, MSSearch, MSSearchRepair, MSSecondaryScreenController, MSSeocndaryScreenSetup, MSSettings, MSSettingsAirplaneMode, MSSettingsBluetooth, MSSettingsCamera, MSSettingsCellular, MSSettingsCloudStorage, MSSettingsConnectableDevices, MSSettingsDisplaysTopology, MSSettingsEmailAndAccounts, MSSettingsLanguage, MSSettingsLocation, MSSettingsLock, MSSettingsNFCTransactions, MSSettingsNotifications, MSSettingsPower, MSSettingsPrivacy, MSSettingsProximity, MSSettingsScreenRotation, MSSettingsWiFi, MSSettingsWorkplace, MSSPD, MSSTTOverlay, MSTransitTo, MSUserActivitySet, MSVirtualTouchPad, MSVisio, MSWalkTo, MSWhiteboard, MSWhiteboardCMD, MSWord, MSNIM, MSRP, MSRPS, MTQP, Mumble, MUpdate, MVN, News, NFS, NI, NIH, NNTP, Notes, OCF, OID, OneNote, OneNoteCMD, OpaqueLockToken, OpenPGP4FPR, Pack, Palm, Paparazzi, PKCS11, Platform, POP, Pres, Prospero, Proxy, PWID, PSYC, QB, Query, Redis, RedisS, Reload, Res, Resource, RMI, RSync, RTMFP, RTMP, RTSP, RTSPS, RTSPU, SecondLife, Service, Session, SFTP, SGN, SHTTP, Sieve, SIP, SIPS, SimpleLedger, Skype, SMB, SMS, SMTP, SNews, SNMP, SOAPBEEP, SOAPBEEPS, Soldat, SPIFFE, 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, VEvent, VEMMI, Ventrilo, Videotex, VNC, ViewSource, WAIS, Webcal, WPID, WS, WSS, WTAI, WYCIWYG, XCON, XCONUserID, Xfire, XMLRPCBEEP, XMLRPCBEEPS, XMPP, XRI, YMSGR, Z3950, Z3950R, Z3950S, Unregistered(UnregisteredScheme<'scheme>),
}
Expand description

The scheme component as defined in [RFC3986, Section 3.5]. The schemes listed here come from iana.org. Any scheme not listed there is considered unregistered and will be contained in [Scheme::UnregisteredScheme].

An unregistered scheme is case-insensitive. Furthermore, percent-encoding is not allowed in schemes.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

AAA

§

AAAS

§

About

§

ACAP

§

ACCT

§

ACR

§

AdiumXtra

§

AFP

§

AFS

§

AIM

§

AMSS

§

Android

§

AppData

§

APT

§

Attachment

§

AW

§

Barion

§

BeShare

§

Bitcoin

§

BitcoinCash

§

Blob

§

Bolo

§

BrowserExt

§

Calculator

§

CallTo

§

CAP

§

Cast

§

Casts

§

Chrome

§

ChromeExtension

§

CID

§

CoAP

§

CoAPTCP

§

CoAPWS

§

CoAPS

§

CoAPSTCP

§

CoAPSWS

§

ComEventBriteAttendee

§

Content

§

Conti

§

CRID

§

CVS

§

DAB

§

Data

§

DAV

§

Diaspora

§

DICT

§

DID

§

DIS

§

DLNAPlayContainer

§

DLNAPlaySingle

§

DNS

§

DNTP

§

DPP

§

DRM

§

Drop

§

DTN

§

DVB

§

ED2K

§

ELSI

§

Example

§

FaceTime

§

Fax

§

Feed

§

FeedReady

§

File

§

FileSystem

§

Finger

§

Fish

§

FM

§

FTP

§

FuchsiaPkg

§

Geo

§

GG

§

Git

§

GizmoProject

§

Go

§

Gopher

§

Graph

§

GTalk

§

H323

§

HAM

§

HCAP

§

HCP

§

HTTP

§

HTTPS

§

HXXP

§

HXXPS

§

HydraZone

§

IAX

§

ICAP

§

Icon

§

IM

§

IMAP

§

Info

§

IoTDisc

§

IPN

§

IPP

§

IPPS

§

IRC

§

IRC6

§

IRCS

§

IRIS

§

IRISBEEP

§

IRISLWZ

§

IRISXPC

§

IRISXPCS

§

IsoStore

§

ITMS

§

Jabber

§

JAR

§

JMS

§

KeyParc

§

LastFM

§

LDAP

§

LDAPS

§

LoRaWAN

§

LVLT

§

Magnet

§

MailServer

§

MailTo

§

Maps

§

Market

§

Message

§

MicrosoftWindowsCamera

§

MicrosoftWindowsCameraMultiPicker

§

MicrosoftWindowsCameraPicker

§

MID

§

MMS

§

Modem

§

MongoDB

§

Moz

§

MSAccess

§

MSBrowserExtension

§

MSCalculator

§

MSDriveTo

§

MSEnrollment

§

MSExcel

§

MSEyeControlSpeech

§

MSGameBarServices

§

MSGamingOverlay

§

MSGetOffice

§

MSHelp

§

MSInfoPath

§

MSInputApp

§

MSLockScreenComponentConfig

§

MSMediaStreamID

§

MSMixedRealityCapture

§

MSOfficeApp

§

MSPeople

§

MSProject

§

MSPowerPoint

§

MSPublisher

§

MSRestoreTabCompanion

§

MSS

§

MSScreenClip

§

MSScreenSketch

§

MSSearch

§

MSSearchRepair

§

MSSecondaryScreenController

§

MSSeocndaryScreenSetup

§

MSSettings

§

MSSettingsAirplaneMode

§

MSSettingsBluetooth

§

MSSettingsCamera

§

MSSettingsCellular

§

MSSettingsCloudStorage

§

MSSettingsConnectableDevices

§

MSSettingsDisplaysTopology

§

MSSettingsEmailAndAccounts

§

MSSettingsLanguage

§

MSSettingsLocation

§

MSSettingsLock

§

MSSettingsNFCTransactions

§

MSSettingsNotifications

§

MSSettingsPower

§

MSSettingsPrivacy

§

MSSettingsProximity

§

MSSettingsScreenRotation

§

MSSettingsWiFi

§

MSSettingsWorkplace

§

MSSPD

§

MSSTTOverlay

§

MSTransitTo

§

MSUserActivitySet

§

MSVirtualTouchPad

§

MSVisio

§

MSWalkTo

§

MSWhiteboard

§

MSWhiteboardCMD

§

MSWord

§

MSNIM

§

MSRP

§

MSRPS

§

MTQP

§

Mumble

§

MUpdate

§

MVN

§

News

§

NFS

§

NI

§

NIH

§

NNTP

§

Notes

§

OCF

§

OID

§

OneNote

§

OneNoteCMD

§

OpaqueLockToken

§

OpenPGP4FPR

§

Pack

§

Palm

§

Paparazzi

§

PKCS11

§

Platform

§

POP

§

Pres

§

Prospero

§

Proxy

§

PWID

§

PSYC

§

QB

§

Query

§

Redis

§

RedisS

§

Reload

§

Res

§

Resource

§

RMI

§

RSync

§

RTMFP

§

RTMP

§

RTSP

§

RTSPS

§

RTSPU

§

SecondLife

§

Service

§

Session

§

SFTP

§

SGN

§

SHTTP

§

Sieve

§

SIP

§

SIPS

§

SimpleLedger

§

Skype

§

SMB

§

SMS

§

SMTP

§

SNews

§

SNMP

§

SOAPBEEP

§

SOAPBEEPS

§

Soldat

§

SPIFFE

§

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

§

VEvent

§

VEMMI

§

Ventrilo

§

Videotex

§

VNC

§

ViewSource

§

WAIS

§

Webcal

§

WPID

§

WS

§

WSS

§

WTAI

§

WYCIWYG

§

XCON

§

XCONUserID

§

Xfire

§

XMLRPCBEEP

§

XMLRPCBEEPS

§

XMPP

§

XRI

§

YMSGR

§

Z3950

§

Z3950R

§

Z3950S

§

Unregistered(UnregisteredScheme<'scheme>)

Implementations§

Source§

impl Scheme<'_>

Source

pub fn is_normalized(&self) -> bool

Returns whether the scheme is normalized.

A normalized scheme will be all lowercase. All standardized schemes are always considered normalized regardless of what source they were parsed from.

This function returns in constant-time.

§Examples
use std::convert::TryFrom;

use uriparse::Scheme;

let scheme = Scheme::try_from("http").unwrap();
assert!(scheme.is_normalized());

let scheme = Scheme::try_from("HTTP").unwrap();
assert!(scheme.is_normalized());

let mut scheme = Scheme::try_from("MyScHeMe").unwrap();
assert!(!scheme.is_normalized());
scheme.normalize();
assert!(scheme.is_normalized());
Source

pub fn normalize(&mut self)

Normalizes the scheme so that it is all lowercase.

§Examples
use std::convert::TryFrom;

use uriparse::Scheme;

let mut scheme = Scheme::try_from("http").unwrap();
scheme.normalize();
assert_eq!(scheme, "http");

let mut scheme = Scheme::try_from("MyScHeMe").unwrap();
scheme.normalize();
assert_eq!(scheme, "myscheme");
Source§

impl<'scheme> Scheme<'scheme>

Source

pub fn as_borrowed(&self) -> Scheme<'_>

Returns a new scheme which is identical but has a lifetime tied to this scheme.

Source

pub fn as_str(&self) -> &str

Returns a str representation of the scheme.

The case of the scheme will be lowercase if it was a registered scheme. Otherwise, the string representation will be exactly that of the original string including case-sensitivity.

§Examples
use std::convert::TryFrom;

use uriparse::Scheme;

assert_eq!(Scheme::HTTP.as_str(), "http");

let scheme = Scheme::try_from("TEST-scheme").unwrap();
assert_eq!(scheme.as_str(), "TEST-scheme");
Source

pub fn into_owned(self) -> Scheme<'static>

Converts the Scheme into an owned copy.

If you construct the scheme from a source with a non-static lifetime, you may run into lifetime problems due to the way it is designed. Calling this function will ensure that the returned value has a static lifetime.

This is different from just cloning. Cloning the scheme will just copy the references (in the case of an unregistered scheme), and thus the lifetime will remain the same.

Source

pub fn status(&self) -> SchemeStatus

Returns the registration status of the scheme.

§Examples
use uriparse::{Scheme, SchemeStatus};

assert_eq!(Scheme::HTTP.status(), SchemeStatus::Permanent);

Trait Implementations§

Source§

impl AsRef<[u8]> for Scheme<'_>

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<str> for Scheme<'_>

Source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<'scheme> Clone for Scheme<'scheme>

Source§

fn clone(&self) -> Scheme<'scheme>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'scheme> Debug for Scheme<'scheme>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Scheme<'_>

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'scheme> From<Scheme<'scheme>> for String

Source§

fn from(value: Scheme<'scheme>) -> Self

Converts to this type from the input type.
Source§

impl<'scheme> Hash for Scheme<'scheme>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a> PartialEq<&'a [u8]> for Scheme<'_>

Source§

fn eq(&self, other: &&'a [u8]) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialEq<&'a str> for Scheme<'_>

Source§

fn eq(&self, other: &&'a str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<[u8]> for Scheme<'_>

Source§

fn eq(&self, other: &[u8]) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, 'scheme> PartialEq<Scheme<'scheme>> for &'a [u8]

Source§

fn eq(&self, other: &Scheme<'scheme>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, 'scheme> PartialEq<Scheme<'scheme>> for &'a str

Source§

fn eq(&self, other: &Scheme<'scheme>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'scheme> PartialEq<Scheme<'scheme>> for [u8]

Source§

fn eq(&self, other: &Scheme<'scheme>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'scheme> PartialEq<Scheme<'scheme>> for str

Source§

fn eq(&self, other: &Scheme<'scheme>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<str> for Scheme<'_>

Source§

fn eq(&self, other: &str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'scheme> PartialEq for Scheme<'scheme>

Source§

fn eq(&self, other: &Scheme<'scheme>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'scheme> TryFrom<&'scheme [u8]> for Scheme<'scheme>

Source§

type Error = SchemeError

The type returned in the event of a conversion error.
Source§

fn try_from(value: &'scheme [u8]) -> Result<Scheme<'scheme>, Self::Error>

Performs the conversion.
Source§

impl<'scheme> TryFrom<&'scheme str> for Scheme<'scheme>

Source§

type Error = SchemeError

The type returned in the event of a conversion error.
Source§

fn try_from(value: &'scheme str) -> Result<Scheme<'scheme>, Self::Error>

Performs the conversion.
Source§

impl<'scheme> Eq for Scheme<'scheme>

Source§

impl<'scheme> StructuralPartialEq for Scheme<'scheme>

Auto Trait Implementations§

§

impl<'scheme> Freeze for Scheme<'scheme>

§

impl<'scheme> RefUnwindSafe for Scheme<'scheme>

§

impl<'scheme> Send for Scheme<'scheme>

§

impl<'scheme> Sync for Scheme<'scheme>

§

impl<'scheme> Unpin for Scheme<'scheme>

§

impl<'scheme> UnwindSafe for Scheme<'scheme>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.