fn upto(vm: &mut VM, self_val: Value, args: &Args2) -> VMResult {
    args.check_args_num(1)?;
    let block = match &args.block {
        None => {
            let id = IdentId::get_id("upto");
            let val = vm.create_enumerator(id, self_val, args.into(vm))?;
            return Ok(val);
        }
        Some(block) => block,
    };
    let num = self_val.as_fixnum().unwrap();
    let max = vm[0].coerce_to_fixnum("Arg")?;
    if num <= max {
        let iter = (num..max + 1).map(|i| Value::integer(i));
        vm.eval_block_each1_iter(block, iter, self_val)
        //Ok(self_val)
    } else {
        Ok(self_val)
    }
}
Integer#upto(min) { |n| .. } -> self
Integer#upto(min) -> Enumerator
https://docs.ruby-lang.org/ja/latest/method/Integer/i/upto.html
ruruby/src/builtin/integer.rs