[−]Struct matrix_sdk_common::Raw
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,
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>
pub fn clone(&self) -> Raw<T>
pub fn clone_from(&mut self, source: &Self)1.0.0[src]
impl<T> Debug for Raw<T>
impl<'de, T> Deserialize<'de> for Raw<T>
pub fn deserialize<D>(
deserializer: D
) -> Result<Raw<T>, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
deserializer: D
) -> Result<Raw<T>, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
impl<'_, T> From<&'_ T> for Raw<T> where
T: Serialize,
T: Serialize,
impl<T> From<T> for Raw<T> where
T: Serialize,
T: Serialize,
impl<T> RawExt<T> for Raw<T> where
T: EventContent,
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>
pub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
Auto Trait Implementations
impl<T> RefUnwindSafe for Raw<T> where
T: RefUnwindSafe, [src]
T: RefUnwindSafe,
impl<T> Send for Raw<T> where
T: Send, [src]
T: Send,
impl<T> Sync for Raw<T> where
T: Sync, [src]
T: Sync,
impl<T> Unpin for Raw<T> where
T: Unpin, [src]
T: Unpin,
impl<T> UnwindSafe for Raw<T> where
T: UnwindSafe, [src]
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> AsyncTraitDeps for T where
T: Send + Sync + Debug, [src]
T: Send + Sync + Debug,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>, [src]
T: for<'de> Deserialize<'de>,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,