[−][src]Struct procspawn::Json
Utility wrapper to force values through JSON serialization.
By default procspawn
will use bincode
to serialize
data across process boundaries. This has some limitations which can cause serialization
or deserialization to fail for some types.
Since JSON is generally better supported in the serde ecosystem this lets you work around some known bugs.
- serde flatten not being supported: bincode#245
- vectors with unknown length not supported: bincode#167
Examples:
use procspawn::{spawn, Json}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct InnerStruct { value: u64, } #[derive(Serialize, Deserialize, Debug)] struct BadStruct { #[serde(flatten)] inner: InnerStruct, } let handle = spawn((), |()| { Json(BadStruct { inner: InnerStruct { value: 42 }, }) }); let value = handle.join().unwrap().0;
This requires the json
feature.
Trait Implementations
impl<T: Debug> Debug for Json<T>
[src]
impl<'de, T: DeserializeOwned> Deserialize<'de> for Json<T>
[src]
fn deserialize<D>(deserializer: D) -> Result<Json<T>, D::Error> where
D: Deserializer<'de>,
[src]
D: Deserializer<'de>,
impl<T: Eq> Eq for Json<T>
[src]
impl<T: Ord> Ord for Json<T>
[src]
fn cmp(&self, other: &Json<T>) -> Ordering
[src]
#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
[src]
impl<T: PartialEq> PartialEq<Json<T>> for Json<T>
[src]
impl<T: PartialOrd> PartialOrd<Json<T>> for Json<T>
[src]
fn partial_cmp(&self, other: &Json<T>) -> Option<Ordering>
[src]
fn lt(&self, other: &Json<T>) -> bool
[src]
fn le(&self, other: &Json<T>) -> bool
[src]
fn gt(&self, other: &Json<T>) -> bool
[src]
fn ge(&self, other: &Json<T>) -> bool
[src]
impl<T: Serialize> Serialize for Json<T>
[src]
impl<T> StructuralEq for Json<T>
[src]
impl<T> StructuralPartialEq for Json<T>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for Json<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Json<T> where
T: Send,
T: Send,
impl<T> Sync for Json<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Json<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Json<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: 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, 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.
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.
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>,