#xmpp #protocols #struct #part #node #bare #jabber-id

no-std jid

A crate which provides a Jid struct for Jabber IDs

26 releases

0.12.0 Feb 24, 2025
0.11.1 Jul 23, 2024
0.10.0 Aug 20, 2023
0.9.4 Jul 13, 2022
0.1.0 Feb 27, 2017

#201 in Network programming

Download history 44/week @ 2024-11-20 38/week @ 2024-11-27 68/week @ 2024-12-04 120/week @ 2024-12-11 72/week @ 2024-12-18 70/week @ 2024-12-25 63/week @ 2025-01-01 117/week @ 2025-01-08 110/week @ 2025-01-15 142/week @ 2025-01-22 120/week @ 2025-01-29 324/week @ 2025-02-05 193/week @ 2025-02-12 363/week @ 2025-02-19 1376/week @ 2025-02-26 301/week @ 2025-03-05

2,293 downloads per month
Used in 14 crates (4 directly)

MPL-2.0 license

76KB
1.5K SLoC

jid

What's this?

A crate which provides a struct Jid for Jabber IDs. It's used in xmpp-rs but other XMPP libraries can of course use this.

What license is it under?

MPL-2.0 or later, see the LICENSE file.

Notes

This library does not yet implement RFC7622.


lib.rs:

Represents XMPP addresses, also known as JabberIDs (JIDs) for the XMPP protocol. A [Jid] can have between one and three parts in the form node@domain/resource:

  • the (optional) node part designates a specific account/service on a server, for example username@server.com
  • the domain part designates a server, for example irc.jabberfr.org
  • the (optional) resource part designates a more specific client, such as a participant in a groupchat (jabberfr@chat.jabberfr.org/user) or a specific client device associated with an account (user@example.com/dino)

The [Jid] enum can be one of two variants, containing a more specific type:

  • BareJid (Jid::Bare variant): a JID without a resource
  • FullJid (Jid::Full variant): a JID with a resource

Jids as per the XMPP protocol only ever contain valid UTF-8. However, creating any form of Jid can fail in one of the following cases:

  • wrong syntax: creating a Jid with an empty (yet declared) node or resource part, such as @example.com or user@example.com/
  • stringprep error: some characters were invalid according to the stringprep algorithm, such as mixing left-to-write and right-to-left characters

Dependencies

~1.6–2.2MB
~55K SLoC