Allow use as and try as for From and TryFrom traits

Do you have an application in mind where you wanted either of these operations? A logical shift is normally for bit manipulation, and signed types aren't appropriate for that. Arithmetic shifts are normally for signed arithmetic, and unsigned types aren't appropriate for that.

Well because there is no better alternative, with as being risky and confusing for all the reasons people have mentioned in this thread.

If you find yourself writing conversion code "everywhere", there might be a better way to organize your code or your abstractions.

Some people have argued that 64-bit platforms should allow converting u64->usize with .into() rather than .try_into(), but that's a separate discussion.