logo

Struct ruma::serde::Raw

source · []
pub struct Raw<T> { /* private fields */ }
Expand description

A wrapper around Box<RawValue>, to be used in place of any type in the Matrix endpoint definition to allow request and response types to contain that said type represented by the generic argument Ev.

Ruma offers the Raw wrapper to enable passing around JSON text that is only partially validated. This is useful when a client receives events that do not follow the spec perfectly or a server needs to generate reference hashes with the original canonical JSON string. All event structs and enums implement Serialize / Deserialize, Raw should be used to pass around events in a lossless way.


let json = r#"{ "type": "imagine a full event", "content": {...} }"#;

let deser = serde_json::from_str::<Raw<AnyRoomEvent>>(json)
    .unwrap() // the first Result from serde_json::from_str, will not fail
    .deserialize() // deserialize to the inner type
    .unwrap(); // finally get to the AnyRoomEvent

Implementations

This is supported on crate feature api only.

Create a Raw by serializing the given T.

Shorthand for serde_json::value::to_raw_value(val).map(Raw::from_json), but specialized to T.

Errors

Fails if Ts Serialize implementation fails.

This is supported on crate feature api only.

Create a Raw from a boxed RawValue.

This is supported on crate feature api only.

Access the underlying json value.

This is supported on crate feature api only.

Convert self into the underlying json value.

This is supported on crate feature api only.

Try to access a given field inside this Raw, assuming it contains an object.

Returns Err(_) when the contained value is not an object, or the field exists but is fails to deserialize to the expected type.

Returns Ok(None) when the field doesn’t exist or is null.

Example
if raw_event.get_field::<String>("type")?.as_deref() == Some("org.custom.matrix.event") {
    let event = raw_event.deserialize_as::<CustomMatrixEvent>()?;
    // ...
}
This is supported on crate feature api only.

Try to deserialize the JSON as the expected type.

This is supported on crate feature api only.

Try to deserialize the JSON as a custom type.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Try to deserialize the JSON as an event’s content.

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more