oas3-gen 0.20.0

A rust type generator for OpenAPI v3.1.x specification.
use std::collections::BTreeSet;

use strum::Display;

#[derive(Debug, Clone, Copy, Display, PartialEq, Eq, PartialOrd, Ord)]
pub enum DeriveTrait {
  Debug,
  Clone,
  PartialEq,
  Eq,
  Hash,
  Serialize,
  Deserialize,
  #[strum(serialize = "validator::Validate")]
  Validate,
  #[strum(serialize = "oas3_gen_support::Default")]
  Default,
}

pub fn default_struct_derives() -> BTreeSet<DeriveTrait> {
  [
    DeriveTrait::Debug,
    DeriveTrait::Clone,
    DeriveTrait::PartialEq,
    DeriveTrait::Default,
  ]
  .into_iter()
  .collect()
}

pub fn default_enum_derives(is_simple: bool) -> BTreeSet<DeriveTrait> {
  let mut derives: BTreeSet<_> = [
    DeriveTrait::Debug,
    DeriveTrait::Clone,
    DeriveTrait::PartialEq,
    DeriveTrait::Serialize,
    DeriveTrait::Deserialize,
    DeriveTrait::Default,
  ]
  .into_iter()
  .collect();

  if is_simple {
    derives.insert(DeriveTrait::Eq);
    derives.insert(DeriveTrait::Hash);
  }

  derives
}