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 { // FIXME: https://github.com/rust-lang/rust-clippy/issues/2843 #![allow(clippy::use_self)] type Artifact = Option; } impl ToArtifact for T { type Artifact = ::Artifact; }