feat: trie implementation

This commit is contained in:
yusing
2025-04-24 05:56:03 +08:00
parent 4a65de99a8
commit ec8cca1245
15 changed files with 699 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package trie
import (
"maps"
"github.com/bytedance/sonic"
)
var sonicConfig = sonic.Config{
EncodeNullForInfOrNan: true,
}.Froze()
func (r *Root) MarshalJSON() ([]byte, error) {
return sonicConfig.Marshal(maps.Collect(r.Walk))
}
func (r *Root) UnmarshalJSON(data []byte) error {
var m map[string]any
if err := sonicConfig.Unmarshal(data, &m); err != nil {
return err
}
for k, v := range m {
r.Store(NewKey(k), v)
}
return nil
}