для contains какой-то левый тип выводит что ли?
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=0be0b2542c5853a53c4d56624ca8c7f1 да, гляди
Проблема в том, что тип этого замыкания выводится как &'a str -> bool, вместо for<'a> &'a str -> bool до того, как тайпчекается каст. А вот в позиции аргумента функции тип выводится вовремя и всё срабатывает. Третья штука работает, потому что явная аннотация типов меняет правила вывода лайфтаймов для замыканий.
это, вероятно, вот эта проблема или какая-то соседняя
хм, любопытно какая-то неочевидная штука конечно
вокруг замыканий, HRTB и инференса очень, очень много багов, включая как минимум два вопиющих ансаунда. селяви
Обсуждают сегодня