Expand description
Types and traits for working with the Matrix protocol.
This crate re-exports things from all of the other ruma crates so you don’t have to manually keep all the versions in sync.
Which crates are re-exported can be configured through cargo features.
⚠ Some details might be missing because rustdoc has trouble with re-exports so you may need to refer to other crates’ documentations.
🛈 For internal consistency, Ruma uses American spelling for variable names. Names may differ in the serialized representation, as the Matrix specification has a mix of British and American English.
§API features
Depending on which parts of Matrix are relevant to you, activate the following features:
appservice-api
– Application Service API.client-api
– Client-Server API.federation-api
– Server-Server (Federation) API.identity-service-api
– Identity Service API.push-gateway-api
– Push Gateway API.
These features have client
- and server
-optimized variants that are enabled respectively
with the -c
and -s
suffixes. For example:
client-api-c
– The Client-Server API optimized for the client side.client-api-s
– The Client-Server API optimized for the server side.
§Compatibility feature
compat
increases compatibility with other parts of the Matrix ecosystem, at the expense of deviating from the specification.
§Convenience features
These features are only useful if you want to use a method that requires it:
rand
– Generate random identifiers.markdown
– Parse markdown to construct messages.html
– Parse HTML to sanitize it or navigate its tree.html-matrix
– Enables thematrix
feature ofruma-html
to parse HTML elements data to typed data as suggested by the Matrix Specification.
§Unstable features
By using these features, you opt out of all semver guarantees Ruma otherwise provides:
unstable-mscXXXX
, whereXXXX
is the MSC number – Upcoming Matrix features that may be subject to change or removal.unstable-unspecified
– Undocumented Matrix features that may be subject to change or removal.
§Common features
These submodules are usually activated by the API features when needed:
api
events
signatures
§ruma-client
features
The client
feature activates [ruma::client
][client], and client-ext-client-api
activates
ruma-client
s client-api
feature. All other client-*
features activate the same feature
without the client-
prefix on ruma-client
. See the crate’s documentation for the effect of
these features.
If you are viewing this on docs.rs
, you can have a look at the feature dependencies by
clicking Feature flags in the toolbar at the top.
§Compile-time cfg
settings
These settings are accepted at compile time to configure the generated code. They can be set as
--cfg={key}={value}
using RUSTFLAGS
or .cargo/config.toml
(under [build]
-> rustflags = ["..."]
). They can also be configured using an environment variable at compile time, which has
the benefit of not requiring to re-compile the whole dependency chain when their value is
changed.
ruma_identifiers_storage
– Choose the inner representation ofOwned*
wrapper types for identifiers. By default they useBox
, setting the value toArc
makes them useArc
. This can also be configured by setting theRUMA_IDENTIFIERS_STORAGE
environment variable.ruma_unstable_exhaustive_types
– Most types in Ruma are marked as non-exhaustive to avoid breaking changes when new fields are added in the specification. This setting compiles all types as exhaustive. By enabling this feature you opt out of all semver guarantees Ruma otherwise provides. This can also be configured by setting theRUMA_UNSTABLE_EXHAUSTIVE_TYPES
environment variable.
Modules§
- api
api
(De)serializable types for various Matrix APIs requests and responses and abstractions for them. - (De)serializable types for the events in the Matrix specification. These types are used by other Ruma crates.
- Opinionated HTML parsing and manipulating library.
- Description
Macros§
- Mutate a struct value in a declarative style.
- Compile-time checked
Base64PublicKey
construction. - Shorthand for
<&DeviceId>::from
. - Compile-time checked
EventId
construction. - Creates an
Int
from a numeric literal. - Convenient constructor for
Metadata
constants. - Compile-time checked
MxcUri
construction. - Compile-time checked
OwnedBase64PublicKey
construction. - Shorthand for
OwnedDeviceId::from
. - Compile-time checked
OwnedEventId
construction. - Compile-time checked
OwnedMxcUri
construction. - Compile-time checked
OwnedRoomAliasId
construction. - Compile-time checked
OwnedRoomId
construction. - Compile-time checked
OwnedServerName
construction. - Compile-time checked
OwnedServerSigningKeyVersion
construction. - Compile-time checked
OwnedSessionId
construction. - Compile-time checked
OwnedUserId
construction. - Compile-time checked
RoomAliasId
construction. - Compile-time checked
RoomId
construction. - Compile-time checked
RoomVersionId
construction. - Compile-time checked
ServerName
construction. - Compile-time checked
ServerSigningKeyVersion
construction. - Compile-time checked
SessionId
construction. - Creates a
UInt
from a numeric literal. - Compile-time checked
UserId
construction.
Structs§
- A public key encoded using unpadded base64, used as an identifier for cross-signing keys.
- A Matrix ID that can be either a
DeviceId
or aBase64PublicKey
. - A client secret.
- A Matrix device ID.
- A Matrix event ID.
- An integer limited to the range of integers that can be represented exactly by an f64.
- A key algorithm and key name delimited by a colon.
- The
matrix.to
URI representation of a user, room or event. - The
matrix:
URI representation of a user, room or event. - A timestamp represented as the number of milliseconds since the unix epoch.
- A URI that should be a Matrix-spec compliant MXC URI.
- The name of a one-time or fallback key.
- Owned variant of Base64PublicKey
- Owned variant of Base64PublicKeyOrDeviceId
- Owned variant of ClientSecret
- Owned variant of DeviceId
- Owned variant of EventId
- Owned variant of KeyId
- Owned variant of MxcUri
- Owned variant of OneTimeKeyName
- Owned variant of RoomAliasId
- Owned variant of RoomId
- Owned variant of RoomOrAliasId
- Owned variant of ServerName
- Owned variant of ServerSigningKeyVersion
- Owned variant of SessionId
- Owned variant of TransactionId
- Owned variant of UserId
- Owned variant of VoipId
- A Matrix room alias ID.
- A Matrix room ID.
- A Matrix room ID or a Matrix room alias ID.
- A timestamp represented as the number of seconds since the unix epoch.
- A Matrix-spec compliant server name.
- The version of a homeserver signing key.
- A session ID.
- Map of all signatures, grouped by entity.
- A Matrix transaction ID.
- An integer limited to the range of non-negative integers that can be represented exactly by an f64.
- A Matrix user ID.
- A VoIP identifier.
Enums§
- Canonical
Json Error canonical-json
The set of possible errors when serializing to canonical JSON. - Canonical
Json Value canonical-json
Represents a canonical JSON value as per the Matrix specification. - The algorithms for the device keys defined in the Matrix spec.
- An encryption algorithm to be used to encrypt messages sent to a room.
- An error encountered when trying to parse an invalid ID string.
- An
Option
-like type with two data-less variants in addition toSome
:Null
andUndefined
. - A key algorithm to be used to generate a key from a passphrase.
- An error occurred while validating a
MatrixId
. - An error occurred while validating a
matrix.to
URI. - An error occurred while validating a
MatrixURI
. - An error occurred while validating an MXC URI.
- The algorithms for one-time and fallback keys defined in the Matrix spec.
- A Matrix room version ID.
- The signing key algorithms defined in the Matrix spec.
- A Matrix VoIP version ID.
- An error occurred while validating a
VoipVersionId
.
Traits§
- The algorithm of a key.
- Helper trait to validate the name of a key.
Type Aliases§
- Canonical
Json Object canonical-json
The inner type ofCanonicalJsonValue::Object
. - Algorithm + key name for cross-signing keys.
- Map of cross-signing or device signatures, grouped by user.
- Algorithm + key name for cross-signing or device signing keys.
- Algorithm + key name for device keys.
- Map of device signatures, grouped by user.
- Algorithm + key name for device signing keys.
- Map of key identifier to signature values.
- Algorithm + key name for one-time and fallback keys.
- Algorithm + key name for cross-signing keys.
- Algorithm + key name for cross-signing or device signing keys.
- Algorithm + key name for device keys.
- Algorithm + key name for [device signing] keys.
- Algorithm + key name for one-time and fallback keys.
- Algorithm + key name for homeserver signing keys.
- Algorithm + key name for signing keys.
- Map of server signatures, grouped by server.
- Algorithm + key name for homeserver signing keys.
- Algorithm + key name for signing keys.