ranged types (a la vhdl) for rust