Struct jid::Jid

source ·
pub struct Jid { /* private fields */ }
Expand description

A struct representing a Jabber ID (JID).

This JID can either be “bare” (without a /resource suffix) or full (with a resource suffix).

In many APIs, it is appropriate to use the more specific types (BareJid or FullJid) instead, as these two JID types are generally used in different contexts within XMPP.

This dynamic type on the other hand can be used in contexts where it is not known, at compile-time, whether a JID is full or bare.

Implementations§

source§

impl Jid

source

pub fn new(unnormalized: &str) -> Result<Jid, Error>

Constructs a Jabber ID from a string. This is of the form node@domain/resource, where node and resource parts are optional. If you want a non-fallible version, use Jid::from_parts instead.

§Examples
use jid::Jid;

let jid = Jid::new("node@domain/resource")?;

assert_eq!(jid.node().map(|x| x.as_str()), Some("node"));
assert_eq!(jid.domain().as_str(), "domain");
assert_eq!(jid.resource().map(|x| x.as_str()), Some("resource"));
source

pub fn into_inner(self) -> String

Returns the inner String of this JID.

source

pub fn from_parts( node: Option<&NodeRef>, domain: &DomainRef, resource: Option<&ResourceRef>, ) -> Self

Build a Jid from typed parts. This method cannot fail because it uses parts that have already been parsed and stringprepped into NodePart, DomainPart, and ResourcePart.

This method allocates and does not consume the typed parts. To avoid allocation if both node and resource are known to be None and domain is owned, you can use domain.into().

source

pub fn node(&self) -> Option<&NodeRef>

The optional node part of the JID as reference.

source

pub fn domain(&self) -> &DomainRef

The domain part of the JID as reference

source

pub fn resource(&self) -> Option<&ResourceRef>

The optional resource of the Jabber ID. It is guaranteed to be present when the JID is a Full variant, which you can check with Jid::is_full.

source

pub fn to_bare(&self) -> BareJid

Allocate a new BareJid from this JID, discarding the resource.

source

pub fn into_bare(self) -> BareJid

Transforms this JID into a BareJid, throwing away the resource.

let jid: Jid = "foo@bar/baz".parse().unwrap();
let bare = jid.into_bare();
assert_eq!(bare.to_string(), "foo@bar");
source

pub fn is_full(&self) -> bool

Checks if the JID is a full JID.

source

pub fn is_bare(&self) -> bool

Checks if the JID is a bare JID.

source

pub fn as_str(&self) -> &str

Return a reference to the canonical string representation of the JID.

source

pub fn try_into_full(self) -> Result<FullJid, BareJid>

Try to convert this Jid to a FullJid if it contains a resource and return a BareJid otherwise.

This is useful for match blocks:

let jid: Jid = "foo@bar".parse().unwrap();
match jid.try_into_full() {
    Ok(full) => println!("it is full: {:?}", full),
    Err(bare) => println!("it is bare: {:?}", bare),
}
source

pub fn try_as_full(&self) -> Result<&FullJid, &BareJid>

Try to convert this Jid reference to a &FullJid if it contains a resource and return a &BareJid otherwise.

This is useful for match blocks:

let jid: Jid = "foo@bar".parse().unwrap();
match jid.try_as_full() {
    Ok(full) => println!("it is full: {:?}", full),
    Err(bare) => println!("it is bare: {:?}", bare),
}
source

pub fn try_as_full_mut(&mut self) -> Result<&mut FullJid, &mut BareJid>

Try to convert this mutable Jid reference to a &mut FullJid if it contains a resource and return a &mut BareJid otherwise.

Trait Implementations§

source§

impl Borrow<Jid> for BareJid

source§

fn borrow(&self) -> &Jid

Immutably borrows from an owned value. Read more
source§

impl Borrow<Jid> for FullJid

source§

fn borrow(&self) -> &Jid

Immutably borrows from an owned value. Read more
source§

impl Clone for Jid

source§

fn clone(&self) -> Jid

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 Debug for Jid

source§

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

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

impl Display for Jid

source§

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

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

impl From<BareJid> for Jid

source§

fn from(other: BareJid) -> Self

Converts to this type from the input type.
source§

impl From<DomainPart> for Jid

source§

fn from(other: DomainPart) -> Self

Converts to this type from the input type.
source§

impl From<FullJid> for Jid

source§

fn from(other: FullJid) -> Self

Converts to this type from the input type.
source§

impl FromStr for Jid

§

type Err = Error

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Jid

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 Ord for Jid

source§

fn cmp(&self, other: &Jid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<BareJid> for Jid

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<FullJid> for Jid

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<Jid> for BareJid

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<Jid> for FullJid

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq for Jid

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Jid

source§

fn partial_cmp(&self, other: &Jid) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl TryFrom<Jid> for BareJid

§

type Error = Error

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

fn try_from(inner: Jid) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Jid> for FullJid

§

type Error = Error

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

fn try_from(inner: Jid) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for Jid

Auto Trait Implementations§

§

impl Freeze for Jid

§

impl RefUnwindSafe for Jid

§

impl Send for Jid

§

impl Sync for Jid

§

impl Unpin for Jid

§

impl UnwindSafe for Jid

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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,

§

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§

default 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>,

§

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>,

§

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.