{"id":13613267,"url":"https://github.com/changkun/generics","last_synced_at":"2025-04-13T15:32:49.971Z","repository":{"id":96323359,"uuid":"391960586","full_name":"changkun/generics","owner":"changkun","description":"Deprecated! See https://github.com/golang-design/go2generics.","archived":true,"fork":false,"pushed_at":"2021-08-22T13:51:54.000Z","size":12,"stargazers_count":25,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-07T21:41:53.278Z","etag":null,"topics":["generics","go","golang"],"latest_commit_sha":null,"homepage":"https://github.com/golang-design/go2generics","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/changkun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-02T13:31:30.000Z","updated_at":"2023-01-28T07:05:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"5fcec26d-389e-4412-b9e4-c85e7bfd30c4","html_url":"https://github.com/changkun/generics","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changkun%2Fgenerics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changkun%2Fgenerics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changkun%2Fgenerics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changkun%2Fgenerics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/changkun","download_url":"https://codeload.github.com/changkun/generics/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248736027,"owners_count":21153523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generics","go","golang"],"created_at":"2024-08-01T20:00:42.967Z","updated_at":"2025-04-13T15:32:49.960Z","avatar_url":"https://github.com/changkun.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Deprecated! See [golang-design/go2generics](https://github.com/golang-design/go2generics).\n\nThis package shows an implementation outlook of proposed generics APIs.\n\n```go\nimport \"changkun.de/x/generics\"\n```\n\n```\ngo test -gcflags=-G=3 ./... -count=1 -v\n```\n\nFrom Go team:\n\n- [golang/go#45458](https://golang.org/issue/45458) proposal: constraints: new package to define standard type parameter constraints\n- [golang/go#47319](https://golang.org/issue/47319) proposal: constraints: new package to define standard type parameter constraints (discussion)\n- [golang/go#45955](https://golang.org/issue/45955) proposal: slices: new package to provide generic slice functions\n- [golang/go#47203](https://golang.org/issue/47203) proposal: slices: new package to provide generic slice functions (discussion)\n- [golang/go#47331](https://golang.org/issue/47331) proposal: container/set: new package to provide a generic set type (discussion)\n- [golang/go#47649](https://golang.org/issue/47649) proposal: maps: new package to provide generic map functions\n- [golang/go#47330](https://golang.org/issue/47330) proposal: maps: new package to provide generic map functions (discussion)\n- [golang/go#47657](https://golang.org/issue/47657) proposal: sync, sync/atomic: add PoolOf, MapOf, ValueOf\n\nFrom community:\n\n- [golang/go#47632](https://golang.org/issue/47632) proposal: container/heap: add Heap, a heap backed by a slice\n- [golang/go#47619](https://golang.org/issue/47619) proposal: generic functions in the sort package\n\n## `constraints`\n\n```go\n// Package constraints defines a set of useful constraints to be used with type parameters.\npackage constraints\n\ntype Signed interface { ... }\ntype Unsigned interface { ... }\ntype Integer interface { ... }\ntype Float interface { ... }\ntype Complex interface { ... }\ntype Ordered interface { ... }\ntype Slice[Elem any] interface { ... }\ntype Map[K, V any] interface { ... }\ntype Chan[T any] interface { ... }\n```\n\n## `slices`\n\n```go\n// Package slices defines various functions useful with slices of any type.\n// Unless otherwise specified, these functions all apply to the elements\n// of a slice at index 0 \u003c= i \u003c len(s).\npackage slices\n\nimport \"constraints\"\n\nfunc Equal[T comparable](s1, s2 []T) bool\nfunc EqualFunc[T1, T2 any](s1 []T1, s2 []T2, eq func(T1, T2) bool) bool\nfunc Compare[T constraints.Ordered](s1, s2 []T) int\nfunc CompareFunc[T any](s1, s2 []T, cmp func(T, T) int) int\nfunc Index[T comparable](s []T, v T) int\nfunc IndexFunc[T any](s []T, f func(T) bool) int\nfunc Contains[T comparable](s []T, v T) bool\nfunc Insert[S constraints.Slice[T], T any](s S, i int, v ...T) S\nfunc Delete[S constraints.Slice[T], T any](s S, i, j int) S\nfunc Clone[S constraints.Slice[T], T any](s S) S\nfunc Compact[S constraints.Slice[T], T comparable](s S) S\nfunc CompactFunc[S constraints.Slice[T], T any](s S, cmp func(T, T) bool) S\nfunc Grow[S constraints.Slice[T], T any](s S, n int) S\nfunc Clip[S constraints.Slice[T], T any](s S) S\n```\n\n## `maps`\n\n```go\n// Package maps defines various functions useful with maps of any type.\npackage maps\n\nfunc Keys[K comparable, V any](m map[K]V) []K\nfunc Values[K comparable, V any](m map[K]V) []V\nfunc Equal[K, V comparable](m1, m2 map[K]V) bool\nfunc EqualFunc[K comparable, V1, V2 any](m1 map[K]V1, m2 map[K]V2, cmp func(V1, V2) bool) bool\nfunc Clear[K comparable, V any](m map[K]V)\nfunc Clone[K comparable, V any](m map[K]V) map[K]V\nfunc Add[K comparable, V any](dst, src map[K]V)\nfunc Filter[K comparable, V any](m map[K]V, keep func(K, V) bool)\n```\n\n## `container/set`\n\n```go\n// Package set defines a Set type that holds a set of elements.\npackage set\n\ntype Set[Elem comparable] struct { ... }\nfunc (s *Set[Elem]) Add(v ...Elem)\nfunc (s *Set[Elem]) AddSet(s2 Set[Elem])\nfunc (s *Set[Elem]) Remove(v ...Elem)\nfunc (s *Set[Elem]) RemoveSet(s2 Set[Elem])\nfunc (s *Set[Elem]) Has(v Elem) bool\nfunc (s *Set[Elem]) HasAny(s2 Set[Elem]) bool\nfunc (s *Set[Elem]) HasAll(s2 Set[Elem]) bool\nfunc (s *Set[Elem]) Values() []Elem\nfunc (s *Set[Elem]) Equal(s2 Set[Elem]) bool\nfunc (s *Set[Elem]) Clear()\nfunc (s *Set[Elem]) Clone() Set[Elem]\nfunc (s *Set[Elem]) Filter(keep func(Elem) bool)\nfunc (s *Set[Elem]) Len() int\nfunc (s *Set[Elem]) Do(f func(Elem) bool)\n\nfunc Of[Elem comparable](v ...Elem) Set[Elem]\nfunc Union[Elem comparable](s1, s2 Set[Elem]) Set[Elem]\nfunc Intersection[Elem comparable](s1, s2 Set[Elem]) Set[Elem]\nfunc Difference[Elem comparable](s1, s2 Set[Elem]) Set[Elem]\n```\n\n## License \n\nCopyright \u0026copy; 2021 [Changkun Ou](https://changkun.de), release under BSD 3-Clause License","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchangkun%2Fgenerics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchangkun%2Fgenerics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchangkun%2Fgenerics/lists"}