rust/tests/ui/generic-associated-types/issue-93874.rs

34 lines
499 B
Rust

//@ check-pass
pub trait Build {
type Output<O>;
fn build<O>(self, input: O) -> Self::Output<O>;
}
pub struct IdentityBuild;
impl Build for IdentityBuild {
type Output<O> = O;
fn build<O>(self, input: O) -> Self::Output<O> {
input
}
}
fn a() {
let _x: u8 = IdentityBuild.build(10);
}
fn b() {
let _x: Vec<u8> = IdentityBuild.build(Vec::new());
}
fn c() {
let mut f = IdentityBuild.build(|| ());
(f)();
}
pub fn main() {
a();
b();
c();
}