def new(changeset)
      new_attributes = self.class.schema.apply(changeset, skip_missing: true, resolve_defaults: false)
      self.class.load(__attributes__.merge(new_attributes))
    rescue Types::SchemaError, Types::MissingKeyError, Types::UnknownKeysError => error
      raise Struct::Error, "[#{self}.new] #{error}"
    end
def new(changeset)
      new_attributes = self.class.schema.apply(changeset, skip_missing: true, resolve_defaults: false)
      self.class.load(__attributes__.merge(new_attributes))
    rescue Types::SchemaError, Types::MissingKeyError, Types::UnknownKeysError => error
      raise Struct::Error, "[#{self}.new] #{error}"
    end
Create a copy of {Dry::Struct} with overriden attributes

 @param [Hash{Symbol => Object}] changeset

 @return [Struct]

 @example
   class Book < Dry::Struct
     attribute :title, Types::Strict::String
     attribute :subtitle, Types::Strict::String.optional
   end

   rom_n_roda = Book.new(
     title: 'Web Development with ROM and Roda',
     subtitle: '2nd edition'
   )
     #=> #<Book title="Web Development with ROM and Roda" subtitle="2nd edition">

   rom_n_roda.new(subtitle: '3rd edition')
     #=> #<Book title="Web Development with ROM and Roda" subtitle="3rd edition">