pub trait TraitStructScheme {
// Required method
fn get_scheme() -> String;
}Expand description
§Example
Use StructScheme to add a get_scheme method that returns a structure schema for debugging and creating macros
use struct_scheme::StructScheme;
use struct_scheme::TraitStructScheme;
#[derive(StructScheme)]
struct Car {
id: i32,
name: String
}
println!("{}", Car::get_scheme());
§Result
DeriveInput {
attrs: [],
vis: Visibility::Inherited,
ident: Ident {
ident: "A",
span: #0 bytes(469..470),
},
generics: Generics {
lt_token: None,
params: [],
gt_token: None,
where_clause: None,
},
data: Data::Struct {
struct_token: Struct,
fields: Fields::Named {
brace_token: Brace,
named: [
Field {
attrs: [],
vis: Visibility::Inherited,
mutability: FieldMutability::None,
ident: Some(
Ident {
ident: "number",
span: #0 bytes(481..487),
},
),
colon_token: Some(
Colon,
),
ty: Type::Path {
qself: None,
path: Path {
leading_colon: None,
segments: [
PathSegment {
ident: Ident {
ident: "i32",
span: #0 bytes(489..492),
},
arguments: PathArguments::None,
},
],
},
},
},
Comma,
Field {
attrs: [],
vis: Visibility::Inherited,
mutability: FieldMutability::None,
ident: Some(
Ident {
ident: "text",
span: #0 bytes(502..506),
},
),
colon_token: Some(
Colon,
),
ty: Type::Path {
qself: None,
path: Path {
leading_colon: None,
segments: [
PathSegment {
ident: Ident {
ident: "String",
span: #0 bytes(508..514),
},
arguments: PathArguments::None,
},
],
},
},
},
Comma,
],
},
semi_token: None,
},
}Required Methods§
fn get_scheme() -> String
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.