use batch_impl::{batch_impl, batch_impl_only};
trait Conv<T>: Sized {
fn conv(_value: T) -> Self;
}
#[batch_impl_only(
Conv<bool>
Pair<[*(SplatA)^2,*(SplatB)^2]>
#conv{unimplemented!()}
)]
pub trait Conv<T>: Sized {
fn conv(_value: T) -> Self;
}
struct SplatA;
struct SplatB;
struct Pair<A, B>(A, B);
#[test]
fn trait_generic_args() {
fn assert_c<T: Conv<bool>>() {
let _ = <T as Conv<bool>>::conv;
}
assert_c::<Pair<SplatA, SplatA>>();
assert_c::<Pair<SplatB, SplatB>>();
}
#[batch_impl(<U>GenU<U>() #foo{})]
trait GenU<T> {
fn foo(_: T);
}
#[test]
fn trait_generic_args_to_impl_generic() {
fn assert_gu<T: GenU<u8>>() {
let _ = <T as GenU<u8>>::foo;
}
assert_gu::<()>();
}