We might not be able to always reason about function totality, but perhaps sometimes we can. Isn't that what `std::convert::Infallible` is trying to do? So you get
fn try_from(value: U) -> Result<Self, Infallible>
In which case you could potentially avoid the need for an unwrap.