package matcher import "github.com/valyala/fasthttp" // PrefixPriorityMatcher ^~ 类型前缀优先匹配器(封装 RadixTree) type PrefixPriorityMatcher struct { tree *RadixTree priority int } // NewPrefixPriorityMatcher 创建前缀优先匹配器 func NewPrefixPriorityMatcher() *PrefixPriorityMatcher { return &PrefixPriorityMatcher{ tree: NewRadixTree(), priority: 2, // ^~ 类型优先级更高 } } // AddPath 添加路径 func (ppm *PrefixPriorityMatcher) AddPath(path string, handler fasthttp.RequestHandler) error { return ppm.tree.Insert(path, handler, ppm.priority, "prefix_priority") } // Match 前缀优先匹配,返回最长前缀匹配结果 func (ppm *PrefixPriorityMatcher) Match(path string) *MatchResult { return ppm.tree.FindLongestPrefix(path) } // MarkInitialized 标记初始化完成 func (ppm *PrefixPriorityMatcher) MarkInitialized() { ppm.tree.MarkInitialized() }