type_utils 0.3.0

Generate types based on existing types
Documentation
#![allow(dead_code)]

use type_utils::TypeUtils;

#[derive(TypeUtils)]
#[pick(pub(self) S1 {pub a, pub(self) b})]
#[tu_derive(Copy, Clone)]
#[omit(S2 {a})]
struct S {
  a: i32,
  b: i32,
  c: i32,
}

#[derive(TypeUtils)]
#[pick(E1 {A, B})]
#[omit(E2 {A})]
enum E {
  A,
  B,
  C,
}

fn main() {
  let _ = S1 { a: 42, b: 42 };
  let s = S2 { b: 42, c: 42 };
  let s_ = s;
  assert!(s.b == s_.b && s.c == s_.c);

  match E1::A {
    E1::A => (),
    E1::B => (),
  }
  match E2::B {
    E2::B => (),
    E2::C => (),
  }
}