Skip to content
Draft
29 changes: 16 additions & 13 deletions cast.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
// Package cast provides easy and safe casting in Go.
package cast

import "time"
import (
"strconv"
"time"
)

const errorMsg = "unable to cast %#v of type %T to %T"
const errorMsgWith = "unable to cast %#v of type %T to %T: %w"
Expand All @@ -31,29 +34,29 @@ func ToE[T Basic](i any) (T, error) {
case bool:
v, err = ToBoolE(i)
case int:
v, err = toNumberE[int](i, parseInt[int])
v, err = toSignedNumberE[int](i, parseInt[int](0, strconv.IntSize))
case int8:
v, err = toNumberE[int8](i, parseInt[int8])
v, err = toSignedNumberE[int8](i, parseInt[int8](0, 8))
case int16:
v, err = toNumberE[int16](i, parseInt[int16])
v, err = toSignedNumberE[int16](i, parseInt[int16](0, 16))
case int32:
v, err = toNumberE[int32](i, parseInt[int32])
v, err = toSignedNumberE[int32](i, parseInt[int32](0, 32))
case int64:
v, err = toNumberE[int64](i, parseInt[int64])
v, err = toSignedNumberE[int64](i, parseInt[int64](0, 64))
case uint:
v, err = toUnsignedNumberE[uint](i, parseUint[uint])
v, err = toUnsignedNumberE[uint](i, parseUint[uint](0, strconv.IntSize))
case uint8:
v, err = toUnsignedNumberE[uint8](i, parseUint[uint8])
v, err = toUnsignedNumberE[uint8](i, parseUint[uint8](0, 8))
case uint16:
v, err = toUnsignedNumberE[uint16](i, parseUint[uint16])
v, err = toUnsignedNumberE[uint16](i, parseUint[uint16](0, 16))
case uint32:
v, err = toUnsignedNumberE[uint32](i, parseUint[uint32])
v, err = toUnsignedNumberE[uint32](i, parseUint[uint32](0, 32))
case uint64:
v, err = toUnsignedNumberE[uint64](i, parseUint[uint64])
v, err = toUnsignedNumberE[uint64](i, parseUint[uint64](0, 64))
case float32:
v, err = toNumberE[float32](i, parseFloat[float32])
v, err = toSignedNumberE[float32](i, parseFloat[float32])
case float64:
v, err = toNumberE[float64](i, parseFloat[float64])
v, err = toSignedNumberE[float64](i, parseFloat[float64])
case time.Time:
v, err = ToTimeE(i)
case time.Duration:
Expand Down
84 changes: 23 additions & 61 deletions devenv.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1760162706,
"lastModified": 1775334024,
"narHash": "sha256-vg1CVojgtjLPZNFe7QVd/d97E12TLUgBQDlCqMqbEGU=",
"owner": "cachix",
"repo": "devenv",
"rev": "0d5ad578728fe4bce66eb4398b8b1e66deceb4e4",
"rev": "f30a244f8175ef14ed1a4e4dfc737d28ecc5d852",
"type": "github"
},
"original": {
Expand All @@ -16,88 +17,49 @@
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"git-hooks": {
"nixpkgs": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
"nixpkgs-src": "nixpkgs-src"
},
"locked": {
"lastModified": 1759523803,
"lastModified": 1774287239,
"narHash": "sha256-W3krsWcDwYuA3gPWsFA24YAXxOFUL6iIlT6IknAoNSE=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835",
"repo": "devenv-nixpkgs",
"rev": "fa7125ea7f1ae5430010a6e071f68375a39bd24c",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"type": "github"
}
},
"nixpkgs": {
"nixpkgs-src": {
"flake": false,
"locked": {
"lastModified": 1758532697,
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "207a4cb0e1253c7658c6736becc6eb9cace1f25f",
"lastModified": 1773840656,
"narHash": "sha256-9tpvMGFteZnd3gRQZFlRCohVpqooygFuy9yjuyRL2C0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9cf7092bdd603554bd8b63c216e8943cf9b12512",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": [
"git-hooks"
]
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
}
Loading
Loading