I'd also add to @mashingan answer than Nim is a strongly typed language. Lossless conversion are made explicit for safety reason, we don't want you to lose information or data by something done under-the-hood and very time-consuming to debug.
Other strongly typed languages might just plain prevent you from promoting uint16 to uint32 implicitly.
