はじめに Rustを書いていると、たまにTypeScriptのOmitなどの型ユーティリティがほしいなと思う場面があります。 Rust本体にはそのような型ユーティリティはないので、勉強がてらにクレートを作ってみました 本記事は作ったクレートの簡単な紹介と実装について書いていきます。 使い方 attributeマクロでomitなどを提供しているので、次のように使います。 use type_utilities_rs::omit; // Create a new struct `NewS` with omitted field `b` #[omit(NewS, [b])] struct S { a: i32, b: &str, } // `NewS` will only have field `a` let _ = NewS { a: 1 };