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) {}

Ps, zanim ktoś się niepotrzebne uruchomi, że olaboga lifetimes, ownership itd, tak, tak. Wiem, dzięki.
Po prostu fajnie by było gdyby działało :)

Tzn np gdyby `fn pp<AsRef<[u8]>>(d: &T) { /* pretty print stuff */ }`
Nie wymagało dodatkowych 2 naciśnięć klawiszy, w
```
fn main() {
let x = X(...)
// pp(x); // nope
pp(&x); // no dobra
}
```

Skoro domknięcia(closures) mogą sobie "wybierać" co zrobią (`|| print!("{:?}",avec)` vs `|| avec.push(1)`) imho funkcja też by mogła ;)