T, impl<T> Bar<T> for T, impl<T> Bar<Vec<T>> for T, and impl<T> Bar<T> for Vec<T> are considered blanket impls. However, impl<T> Bar<Vec<T>> for Vec<T> is not a blanket impl, as all instances of T which appear in this impl are covered by Vec.
Мне кажется здесь ошибка и impl<T> Bar<T> for Vec<T> не является blanket implementation. Верно?
Нет ошибаешься. Ведь T может быть любое. В том числе и Vec<T>
Смыс в том что ты создал какой то тип (структуру, enum, и т.д.). И для нее уже будет имплементирован (автоматически) Bar<T> for Vec<T> через impl<T> Bar<T> for Vec<T>
Есть возможность у самого компилятора узнать как он считает?
Считает что? А так все скрытые имплементации видно при просмотре документации. То есть cargo doc делает доки с учетом всех скрытых имплементаций (если подключены дополнительные крейты, то учитывает и трейты из этих самых крейтов тоже)
Например вызвать ошибку компиляции, где в ее описании и будет слово blanket Попробую поискать в списке всех ошибок, и сгенерировать документацию
Обсуждают сегодня