text: package semver
  
  import (
  	"database/sql/driver"
  	"fmt"
  )
  
  // Scan implements the database/sql.Scanner interface.
  func (v *Version) Scan(src interface{}) (err error) {
  	var str string
  	switch src := src.(type) {
  	case string:
  		str = src
  	case []byte:
  		str = string(src)
  	default:
  		return fmt.Errorf("Version.Scan: cannot convert %T to string.", src)
  	}
  
  	if t, err := Parse(str); err == nil {
  		*v = t
  	}
  
  	return
  }
  
  // Value implements the database/sql/driver.Valuer interface.
  func (v Version) Value() (driver.Value, error) {
  	return v.String(), nil
  }
  