use crate::resources::Resource; pub trait ToArtifact { type Artifact; } macro_rules! to_artifact { ( $($name:ident)* ) => ( #[allow(non_snake_case)] impl<$($name: Resource,)*> ToArtifact for ($($name,)*) { type Artifact = ($($name::Artifact,)*); } ); } for_each_tuple!(to_artifact); impl ToArtifact for Option { type Artifact = Option; } impl ToArtifact for T { type Artifact = ::Artifact; }