Я читал документы для Rust Deref
trait:
pub trait Deref {
type Target: ?Sized;
fn deref(&self) -> &Self::Target;
}
Сигнатура типа для функции Deref
кажется мне интуитивной; почему тип возврата является ссылкой? Если ссылки реализуют этот признак, чтобы их можно было разыменовать, какой эффект это имел бы вообще?
Единственное объяснение, которое я могу придумать, заключается в том, что ссылки не реализуют Deref
, но считаются "примитивно разыменованными". Однако, как будет выглядеть полиморфная функция, которая будет работать для любого разыменованного типа, включая как Deref<T>
, так и &T
??