pub trait Syn: Sized + Sealed {
type Adapter: Serialize + for<'de> Deserialize<'de>;
// Required methods
fn to_adapter(&self) -> Self::Adapter;
fn from_adapter(adapter: &Self::Adapter) -> Self;
}
Expand description
A trait for the data structures of Syn and proc-macro2.
Required Associated Types§
type Adapter: Serialize + for<'de> Deserialize<'de>
Required Methods§
sourcefn to_adapter(&self) -> Self::Adapter
fn to_adapter(&self) -> Self::Adapter
Converts a Syn
type into an adapter.
Examples
use syn_serde::Syn;
let syn_file: syn::File = syn::parse_quote! {
fn main() {
println!("Hello, world!");
}
};
let serializable_file = syn_file.to_adapter();
println!("{}", serde_json::to_string_pretty(&serializable_file).unwrap());
sourcefn from_adapter(adapter: &Self::Adapter) -> Self
fn from_adapter(adapter: &Self::Adapter) -> Self
Converts an adapter into a Syn
type.
Examples
use syn_serde::Syn;
// `struct Unit;`
let json = r#"{
"struct": {
"ident": "Unit",
"fields": "unit"
}
}"#;
let serializable_file: <syn::File as Syn>::Adapter = serde_json::from_str(json)?;
let syn_file = syn::File::from_adapter(&serializable_file);
Object Safety§
This trait is not object safe.