func Strict(dst, src interface{}) error {
	dv, sv := reflect.ValueOf(dst), reflect.ValueOf(src)
	if dv.Kind() != reflect.Ptr || dv.IsNil() {
		panic("populate: not a pointer or nil")
	}
	x := reflect.New(dv.Type()).Elem()
	err := recFillWith(x, sv, x.Type().Elem().Name(), true)
	if err != nil {
		return err
	}
	dv.Elem().Set(x.Elem())
	return nil
}
Strict populates dst from src failing if elements in src cannot be mapped
to dst.
package populate
import (
	"fmt"
	"reflect"
	"strconv"
	"time"
)
type Populator interface {
	Populate(src interface{}) error
}