Better type inference with impl_trait_in_assoc_type
(ITIAT) #130910
Open
Description
opened on Sep 27, 2024
#![feature(impl_trait_in_assoc_type)]
fn coca(_: String) {}
trait Foo<T> {}
impl Foo<()> for String {}
trait Bar {
type T;
type I: Foo<Self::T>;
type F: FnOnce(Self::I);
const M: Self::F;
}
impl Bar for () {
type T = impl Sized; // The compiler could infer this associated type as `()`.
type I = impl Foo<Self::T>;
type F = impl FnOnce(Self::I);
const M: Self::F = coca;
}
Errors with:
error[E0277]: the trait bound `String: Foo<<() as Bar>::T>` is not satisfied
--> src/lib.rs:21:24
|
21 | const M: Self::F = coca;
| ^^^^ the trait `Foo<<() as Bar>::T>` is not implemented for `String`
|
= help: the trait `Foo<()>` is implemented for `String`
Activity