TraitStructScheme

Trait TraitStructScheme 

Source
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§

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.

Implementors§