Вы не. вся причина, что RFC существует, потому что это было невозможно раньше!
Как «доказательство», рассмотрите str::to_string
. До того, как существовала специализация, str::to_string
использовал тот же механизм, что и все другие разработчики ToString
, что означало, что ему пришлось создавать и использовать инфраструктуру форматирования. Это относительно дорого и ориентировочно ориентированы showed the difference between str::to_string
and str::to_owned
or String::from
. После того, как специализация была включена, компилятор Rust использовал ее для str::to_string
, и тесты улучшились.
Если Rust компилятор не может специализироваться, прежде чем специализации, это весьма маловероятно, что другой код может найти какой-то способ справиться с этим в общем порядке.
Для вашего конкретного случая, я согласен, что вы должны просто принять что-то реализации BufRead
(fn read<T: BufRead>(stream: T)
).