На странице 298 из Programming Rust вы можете найти следующую инструкцию
Стандартная библиотека автоматически реализует тривиальное преобразование из каждого типа в себя: каждый тип T реализуетFrom<T> и Into<T>
T
From<T>
Into<T>
Однако на самом деле не сказано, почему это было бы полезно или почему стандартная библиотека автоматически это сделает?В чем причина?
Это может быть удобно при написании функций / типов с общими аргументами.Например, если я напишу функцию:
fn do_something_with_string<S: Into<String>>(s: S) {}
Эта функция будет одинаково работать для String и всего, что можно превратить в одну.
String