数値の型変換がイニシャライザなのは良いけど
情報欠落するケースかどうかが変換箇所のコードで分からないのは好きじゃない

Int32→Int64のような拡張でも暗黙変換しない方針を選んだのなら
逆に縮小をラベル付きにしてコードから判別出来るようにして欲しかった

  Int32.init(_: Int16)
  Int32.init(narrow: Int64) // init(_: Int64)
  Int32.init(truncatingBitPattern: Int64)

例えばC#では拡張は暗黙変換、縮小は明示キャスト必須になっている