Struct Data Transformations - best approach to simple data transformations?

Maybe something like this, that uses Map.split/2 to split the map in two?

def new(%AppConfig{} = app_config) do 
  {config, options} = Map.split(app_config, [:name, :password, :database])
  
  %DatabaseConfig{ name: config.database, users: [%User{name: config.name, password: config.password], options: options]
end