Maybe we could just have a generic always-inline identity function that returns its argument, and use that for type ascription with no language changes:
id::<B>(x.into()).into()
Only difference seems to be that it doesn’t implicitly work for non-movable lvalues, but you need to borrow and dereference explicitly.