You most likely want to blanket impl for &T and &mut T if the trait method consumes.
This is so that when the blanket impl is used for referential T and the method consumes, the reference is consumed, not the value itself.
// impl View for T — the owned type itself implements View
impl View<Rect> for MyWidget { ... }
let w = MyWidget;
w.render(area); // MyWidget is consumed
// impl View for &T — a reference to T implements View
impl View<Rect> for &MyWidget { ... }
let w = MyWidget;
(&w).render(area); // &MyWidget is consumed (but MyWidget is still alive)
// impl View for &mut T — a mutable reference implements View
impl View<Rect> for &mut MyWidget { ... }
let mut w = MyWidget;
(&mut w).render(area); // &mut MyWidget is consumed (but MyWidget is still alive)