pub struct Json<T>(pub T);Expand description
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, 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.
Tuple Fields§
§0: TTrait Implementations§
source§impl<'de, T: DeserializeOwned> Deserialize<'de> for Json<T>
impl<'de, T: DeserializeOwned> Deserialize<'de> for Json<T>
source§fn deserialize<D>(deserializer: D) -> Result<Json<T>, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Json<T>, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<T: Ord> Ord for Json<T>
impl<T: Ord> Ord for Json<T>
source§impl<T: PartialEq> PartialEq<Json<T>> for Json<T>
impl<T: PartialEq> PartialEq<Json<T>> for Json<T>
source§impl<T: PartialOrd> PartialOrd<Json<T>> for Json<T>
impl<T: PartialOrd> PartialOrd<Json<T>> for Json<T>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self and other) and is used by the <=
operator. Read more