copy.go 354 B

123456789101112131415161718192021
  1. package common
  2. import (
  3. "fmt"
  4. "github.com/antlabs/pcopy"
  5. )
  6. func DeepCopy[T any](src *T) (*T, error) {
  7. if src == nil {
  8. return nil, fmt.Errorf("copy source cannot be nil")
  9. }
  10. var dst T
  11. err := pcopy.Copy(&dst, src)
  12. if err != nil {
  13. return nil, err
  14. }
  15. if &dst == nil {
  16. return nil, fmt.Errorf("copy result cannot be nil")
  17. }
  18. return &dst, nil
  19. }