[]Struct matrix_sdk::Raw

pub struct Raw<T> { /* fields omitted */ }

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

impl<T> Raw<T>

pub fn from_json(raw: Box<RawValue, Global>) -> Raw<T>

Create a Raw from a boxed RawValue.

pub fn json(&self) -> &RawValue

Access the underlying json value.

pub fn into_json(self) -> Box<RawValue, Global>

Convert self into the underlying json value.

impl<T> Raw<T> where
    T: DeserializeOwned

pub fn deserialize(&self) -> Result<T, Error>

Try to deserialize the JSON into the expected type.

Trait Implementations

impl<T> Clone for Raw<T>

impl<T> Debug for Raw<T>

impl<'de, T> Deserialize<'de> for Raw<T>

impl<'_, T> From<&'_ T> for Raw<T> where
    T: Serialize

impl<T> From<T> for Raw<T> where
    T: Serialize

impl<T> RawExt<T> for Raw<T> where
    T: EventContent

pub fn deserialize_content(self, event_type: &str) -> Result<T, Error>

Try to deserialize the JSON as event content

impl<T> Serialize for Raw<T>

Auto Trait Implementations

impl<T> RefUnwindSafe for Raw<T> where
    T: RefUnwindSafe
[src]

impl<T> Send for Raw<T> where
    T: Send
[src]

impl<T> Sync for Raw<T> where
    T: Sync
[src]

impl<T> Unpin for Raw<T> where
    T: Unpin
[src]

impl<T> UnwindSafe for Raw<T> where
    T: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> AsyncTraitDeps for T where
    T: Send + Sync + Debug
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Conv for T

impl<T> Conv for T

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<T> WithSubscriber for T[src]