Changed generic type constraint

This commit is contained in:
Eduard Urbach 2023-07-18 17:14:34 +02:00
parent be04815fdb
commit 2a94dc114e
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
4 changed files with 7 additions and 11 deletions

View File

@ -3,7 +3,7 @@ package router
import "os" import "os"
// Router is a high-performance router. // Router is a high-performance router.
type Router[T comparable] struct { type Router[T any] struct {
get Tree[T] get Tree[T]
post Tree[T] post Tree[T]
delete Tree[T] delete Tree[T]
@ -16,7 +16,7 @@ type Router[T comparable] struct {
} }
// New creates a new router containing trees for every HTTP method. // New creates a new router containing trees for every HTTP method.
func New[T comparable]() *Router[T] { func New[T any]() *Router[T] {
return &Router[T]{} return &Router[T]{}
} }

View File

@ -15,7 +15,7 @@ const (
) )
// Tree represents a radix tree. // Tree represents a radix tree.
type Tree[T comparable] struct { type Tree[T any] struct {
root treeNode[T] root treeNode[T]
static map[string]T static map[string]T
canBeStatic [2048]bool canBeStatic [2048]bool
@ -238,12 +238,8 @@ begin:
// Bind binds all handlers to a new one provided by the callback. // Bind binds all handlers to a new one provided by the callback.
func (tree *Tree[T]) Bind(transform func(T) T) { func (tree *Tree[T]) Bind(transform func(T) T) {
var empty T
tree.root.each(func(node *treeNode[T]) { tree.root.each(func(node *treeNode[T]) {
if node.data != empty {
node.data = transform(node.data) node.data = transform(node.data)
}
}) })
for key, value := range tree.static { for key, value := range tree.static {

2
go.mod
View File

@ -2,4 +2,4 @@ module git.akyoto.dev/go/router
go 1.20 go 1.20
require git.akyoto.dev/go/assert v0.1.1 require git.akyoto.dev/go/assert v0.1.2

4
go.sum
View File

@ -1,2 +1,2 @@
git.akyoto.dev/go/assert v0.1.1 h1:F0IO7RxXVfV86Y7bwLsd+C5Ar3X0XCJIuywyiCrk8ms= git.akyoto.dev/go/assert v0.1.2 h1:3paz/5z/JcGK/2K9J+pVh5Jwt2gYfJQG+P5OE9/jB7Y=
git.akyoto.dev/go/assert v0.1.1/go.mod h1:Zr/UFuiqmqRmFFgpBGwF71jbzb6iYJfXFeePYHGtWsg= git.akyoto.dev/go/assert v0.1.2/go.mod h1:Zr/UFuiqmqRmFFgpBGwF71jbzb6iYJfXFeePYHGtWsg=