Struct ruma_serde::Raw[][src]

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>[src]

pub fn from_json(raw: Box<RawValue>) -> Self[src]

Create a Raw from a boxed RawValue.

pub fn json(&self) -> &RawValue[src]

Access the underlying json value.

pub fn into_json(self) -> Box<RawValue>[src]

Convert self into the underlying json value.

impl<T> Raw<T> where
    T: DeserializeOwned
[src]

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

Try to deserialize the JSON into the expected type.

Trait Implementations

impl<T> Clone for Raw<T>[src]

impl<T> Debug for Raw<T>[src]

impl<'de, T> Deserialize<'de> for Raw<T>[src]

impl<T: Serialize> From<&'_ T> for Raw<T>[src]

impl<T: Serialize> From<T> for Raw<T>[src]

impl<T> Serialize for Raw<T>[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Raw<T> where
    T: RefUnwindSafe

impl<T> Send for Raw<T> where
    T: Send

impl<T> Sync for Raw<T> where
    T: Sync

impl<T> Unpin for Raw<T> where
    T: Unpin

impl<T> UnwindSafe for Raw<T> where
    T: UnwindSafe

Blanket Implementations

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

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

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

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

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

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

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

type Owned = T

The resulting type after obtaining ownership.

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.