Czasem człowiek by chciał by niektóre rzeczy w #Rustlang działały inaczej. Weźmy niektóre automatyczne działania jak auto-deref czy auto-borrow.
Np mamy
struct X(Vec<u8>);
impl X {
fn eat(self) {}
fn use(&self) {}
}
To spokojnie `let x = X(vec![0xFF]); x.use(); x.eat();` rozwikła gdzie użyć referencji a gdzie obiektu. Podobnie gdy funkcja jako parametr przyjmuje dyn np &dyn Display, a przekazujemy d(&zupa). Natomiast nie ma auto-borrow w przypadku np d(zupa) gdyby d<T: AsRef<[u8]>>(s: &T) {}