Why to prefer Option<&T>, in one table

Some time back, I came across Logan Smith’s Choose the Right Option video, and the other day I was trying to summarize it for a colleague.

I think it boils down to this: If we assume T: ?Clone, then

to convert… to &Option<T> to Option<&T>
x: T &Some(x) (moves x) Some(&x)
x: &T not possible Some(x)
x: Option<T> &x x.as_ref()
x: Option<Box<T>> not possible x.as_deref()
x: &Option<T> x x.as_ref()

plus niche optimization.

links

social