oas3-gen 0.23.6

A rust type generator for OpenAPI v3.1.x specification.
use crate::generator::ast::{FieldNameToken, StructDef, TypeRef};

#[derive(Debug, Clone)]
pub(crate) struct StructSummary {
  pub has_default: bool,
  pub required_fields: Vec<(FieldNameToken, TypeRef)>,
  pub user_fields: Vec<(FieldNameToken, TypeRef)>,
}

impl From<&StructDef> for StructSummary {
  fn from(struct_def: &StructDef) -> Self {
    Self {
      has_default: struct_def.has_default(),
      required_fields: struct_def
        .required_fields()
        .map(|field| (field.name.clone(), field.rust_type.clone()))
        .collect(),
      user_fields: struct_def
        .fields
        .iter()
        .filter(|field| !field.doc_hidden)
        .map(|field| (field.name.clone(), field.rust_type.clone()))
        .collect(),
    }
  }
}