module BenchmarkDriver
def keyword_init_struct(*args, &block)
def keyword_init_struct(*args, &block) ::Struct.new(*args).tap do |klass| klass.prepend(Module.new { # @param [Hash{ Symbol => Object }] args def initialize(**args) args.each do |key, value| unless members.include?(key) raise ArgumentError.new("unknown keywords: #{key}") next end public_send("#{key}=", value) end end }) klass.prepend(Module.new(&block)) end end