#prog #rust #article
Толян David Tolnay когда-то
писал о том, как можно до некоторой степени сымитировать специализацию для частных случаев, используя тот факт, что Rust может автоматически вставлять ссылку при использовании синтаксиса вызова метода через точку. У этого подхода есть несколько ограничений. Одно из них — это то, что, в отличие от истинной специализации, оно не работает в обобщённых контекстах — и потому не ломает параметричность и пригодно в основном для макросов. Другое — это то, что таким способом можно получить не более двух вариантов различного поведения.
Lukas Kalbertodt
развил этот подход, опираясь на в каком-то смысле противоположную фичу deref coercions, и получил подход, позволяющий иметь более одного варианта обобщённого поведения и, более того, явно задавать приоритет применения impl-ов, а не неявно через отношение "строго более специализирован".