Use struct directly if type matches
diff --git a/mapstructure.go b/mapstructure.go
index 381ba5d..6abe075 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -530,6 +530,12 @@
 
 func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) error {
 	dataVal := reflect.Indirect(reflect.ValueOf(data))
+
+	if dataVal.Type() == val.Type() {
+		val.Set(dataVal)
+		return nil
+	}
+
 	dataValKind := dataVal.Kind()
 	if dataValKind != reflect.Map {
 		return fmt.Errorf("'%s' expected a map, got '%s'", name, dataValKind)