[][src]Struct procspawn::serde::Json

pub struct Json<T>(pub T);

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.

Examples:

use procspawn::{spawn, serde::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]

impl<T: Eq> Eq for Json<T>[src]

impl<T: Ord> Ord for Json<T>[src]

impl<T: PartialEq> PartialEq<Json<T>> for Json<T>[src]

impl<T: PartialOrd> PartialOrd<Json<T>> for Json<T>[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

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

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

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

impl<T> UnwindSafe for Json<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, 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>,