diff --git a/go.mod b/go.mod index 60a83f02..41ab3a08 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250718041314-444cfd7822ec github.com/cloudwego/eino-ext/components/tool/mcp v0.0.3 github.com/fsnotify/fsnotify v1.4.9 + github.com/google/uuid v1.6.0 github.com/invopop/jsonschema v0.13.0 github.com/mark3labs/mcp-go v0.34.0 github.com/pkg/errors v0.9.1 @@ -54,7 +55,6 @@ require ( github.com/getkin/kin-openapi v0.118.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/goph/emperror v0.17.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/invopop/yaml v0.3.1 // indirect diff --git a/go.sum b/go.sum index b1f2dfcb..2c7b913f 100644 --- a/go.sum +++ b/go.sum @@ -13,12 +13,15 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -31,6 +34,10 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -46,6 +53,7 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/airbrake/gobrake v3.6.1+incompatible/go.mod h1:wM4gu3Cn0W0K7GUuVWnlXZU11AGBXMILnrdOU8Kn00o= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -56,6 +64,7 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/anthropics/anthropic-sdk-go v1.4.0 h1:fU1jKxYbQdQDiEXCxeW5XZRIOwKevn/PMg8Ay1nnUx0= github.com/anthropics/anthropic-sdk-go v1.4.0/go.mod h1:AapDW22irxK2PSumZiQXYUFvsdQgkwIWlpESweWZI/c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= @@ -125,6 +134,8 @@ github.com/certifi/gocertifi v0.0.0-20190105021004-abcd57078448/go.mod h1:GJKEex github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chewxy/hm v1.0.0/go.mod h1:qg9YI4q6Fkj/whwHR1D+bOGeF7SniIP40VweVepLjg0= +github.com/chewxy/math32 v1.11.0/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -148,18 +159,22 @@ github.com/cloudwego/eino-ext/components/tool/mcp v0.0.3 h1:kT8yynQh8q92BPofkHxx github.com/cloudwego/eino-ext/components/tool/mcp v0.0.3/go.mod h1:D1Yircehgx7em8EH6vw8If+ATjtXl60IpBzVaqFBx3c= github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250626133421-3c142631c961 h1:fGE3RFHaAsrLjA+2fkE0YMsPrkFI6pEKKZmbhD42L7E= github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250626133421-3c142631c961/go.mod h1:iB0W8l+OqKNL5LtJQ9JaGYXekhsxVxrDMfnfD9L+5gc= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/d4l3k/go-bfloat16 v0.0.0-20211005043715-690c3bdd05f1/go.mod h1:uw2gLcxEuYUlAd/EXyjc/v55nd3+47YAgWbSXVxPrNI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= @@ -168,6 +183,7 @@ github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emirpasic/gods/v2 v2.0.0-alpha/go.mod h1:W0y4M2dtBB9U5z3YlghmpuUhiaZT2h6yoeE+C1sCp6A= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -180,6 +196,7 @@ github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMi github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= @@ -190,10 +207,14 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/getkin/kin-openapi v0.118.0 h1:z43njxPmJ7TaPpMSCQb7PN0dEYno4tyBPQcrFdHoLuM= github.com/getkin/kin-openapi v0.118.0/go.mod h1:l5e9PaFUo9fyLJCPGQeXI2ML8c3P8BHOEV2VaAVf/pc= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -208,22 +229,29 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -253,11 +281,13 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -284,10 +314,12 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/goph/emperror v0.17.2 h1:yLapQcmEsO0ipe9p5TaN22djm3OFV/TfM/fcYP0/J18= @@ -389,6 +421,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -410,6 +444,7 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/meguminnnnnnnnn/go-openai v0.0.0-20250620092828-0d508a1dcdde h1:pq2I0uxUR4lfr4OmqvE8QdHj9UML9b1jZu8L3dI2eu8= github.com/meguminnnnnnnnn/go-openai v0.0.0-20250620092828-0d508a1dcdde/go.mod h1:CqSFsV6AkkL2fixd25WYjRAolns+gQrY1x/Cz9c30v8= @@ -447,8 +482,10 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nikolalohinski/gonja v1.5.3 h1:GsA+EEaZDZPGJ8JtpeGN78jidhOlxeJROpqMT9fTj9c= github.com/nikolalohinski/gonja v1.5.3/go.mod h1:RmjwxNiXAEqcq1HeK5SSMmqFJvKOfTfXhkJv6YBtPa4= +github.com/nlpodyssey/gopickle v0.3.0/go.mod h1:f070HJ/yR+eLi5WmM1OXJEGaTpuJEUiib19olXgYha0= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/ollama/ollama v0.5.12 h1:qM+k/ozyHLJzEQoAEPrUQ0qXqsgDEEdpIVwuwScrd2U= github.com/ollama/ollama v0.5.12/go.mod h1:ibdmDvb/TjKY1OArBWIazL3pd1DHTk8eG2MMjEkWhiI= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -456,11 +493,13 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/openai/openai-go v1.10.1 h1:7VR8z1foqJDjlaFZsNH5zZIYTWKYz97tdsVSzXDHQck= github.com/openai/openai-go v1.10.1/go.mod h1:g461MYGXEXBVdV5SaR/5tNzNbSfwTBBefwc+LlDCK0Y= @@ -468,6 +507,7 @@ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYr github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pdevine/tensor v0.0.0-20240510204454-f88f4562727c/go.mod h1:PSojXDXF7TbgQiD6kkd98IHOS0QqTyUEaWRiS8+BLu8= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= @@ -476,6 +516,7 @@ github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -508,6 +549,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -553,6 +595,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -594,9 +637,11 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg= github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xtgo/set v1.0.0/go.mod h1:d3NHzGzSa0NmB2NhFyECA+QdRp29oEn2xbT+TpeFoM8= github.com/yargevad/filepathx v1.0.0 h1:SYcT+N3tYGi+NvazubCNlvgIPbzAk7i7y2dwg3I5FYc= github.com/yargevad/filepathx v1.0.0/go.mod h1:BprfX/gpYNJHJfc35GjRRpVcwWXS89gGulUIU5tK3tA= github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4= @@ -617,6 +662,12 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -627,6 +678,7 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= golang.org/x/arch v0.14.0 h1:z9JUEZWr8x4rR0OU6c4/4t6E6jOZ8/QBS2bBYBm4tx4= golang.org/x/arch v0.14.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -665,6 +717,7 @@ golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLo golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.22.0/go.mod h1:9hPFhljd4zZ1GNSIZJ49sqbp45GKK9t6w+iXvGqZUz4= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -741,6 +794,7 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -823,6 +877,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -848,6 +903,7 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -907,6 +963,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -925,6 +982,7 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -963,6 +1021,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -980,6 +1039,7 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -994,6 +1054,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1021,6 +1082,8 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorgonia.org/vecf32 v0.9.0/go.mod h1:NCc+5D2oxddRL11hd+pCB1PEyXWOyiQxfZ/1wwhOXCA= +gorgonia.org/vecf64 v0.9.0/go.mod h1:hp7IOWCnRiVQKON73kkC/AUMtEXyf9kGlVrtPQ9ccVA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/lang/collect/collect.go b/lang/collect/collect.go index 18d8f1ae..6475b259 100644 --- a/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -21,6 +21,7 @@ import ( "os" "path/filepath" "slices" + "sort" "strings" "unicode" @@ -28,7 +29,9 @@ import ( "github.com/cloudwego/abcoder/lang/cxx" "github.com/cloudwego/abcoder/lang/java" + javaipc "github.com/cloudwego/abcoder/lang/java/ipc" "github.com/cloudwego/abcoder/lang/java/parser" + javapb "github.com/cloudwego/abcoder/lang/java/pb" "github.com/cloudwego/abcoder/lang/log" . "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/python" @@ -69,11 +72,20 @@ type Collector struct { localFunc map[Location]*DocumentSymbol + // javaIPC is optional; when set, Java Collect runs without LSP. + javaIPC *javaipc.Converter + // modPatcher ModulePatcher CollectOption } +// UseJavaIPC sets the Java IPC converter caches as the source of truth for Java collecting. +// When enabled, Java Collect will not rely on LSP (no Definition/SemanticTokens). +func (c *Collector) UseJavaIPC(conv *javaipc.Converter) { + c.javaIPC = conv +} + type methodInfo struct { Receiver dependency `json:"receiver"` Interface *dependency `json:"implement,omitempty"` // which interface it implements @@ -149,6 +161,11 @@ func (c *Collector) Collect(ctx context.Context) error { var root_syms []*DocumentSymbol var err error if c.Language == uniast.Java { + // Prefer IPC-based collection when provided. + if c.javaIPC != nil || c.cli.LspOptions["java_parser"] == "ipc" { + _, err = c.ScannerByJavaIPC(ctx) + return err + } root_syms, err = c.ScannerByTreeSitter(ctx) if err != nil { return err @@ -284,6 +301,614 @@ func (c *Collector) Collect(ctx context.Context) error { return nil } +// ScannerByJavaIPC collects Java symbols/deps from IPC Java Parser caches. +// It fills c.files/c.syms/c.deps/c.funcs/c.vars directly and DOES NOT rely on LSP. +func (c *Collector) ScannerByJavaIPC(ctx context.Context) ([]*DocumentSymbol, error) { + if c.Language != uniast.Java { + return nil, fmt.Errorf("ScannerByJavaIPC only supports Java") + } + + // Ensure we have a lightweight file reader client for Export/Locate. + if c.cli == nil { + c.cli = &LSPClient{ClientOptions: ClientOptions{Language: c.Language}} + } + c.cli.InitFiles() + + if c.javaIPC == nil { + converter, err := java.ParseRepositoryByIpc(ctx, c.repo, c.parserConfig()) + if err != nil { + } + c.UseJavaIPC(converter) + } + + // Build excludes (absolute) + excludes := make([]string, len(c.Excludes)) + for i, e := range c.Excludes { + if !filepath.IsAbs(e) { + excludes[i] = filepath.Join(c.repo, e) + } else { + excludes[i] = e + } + } + shouldExclude := func(path string) bool { + for _, e := range excludes { + if strings.HasPrefix(path, e) { + return true + } + } + return false + } + + normalizePath := func(p string) string { + if p == "" { + return "" + } + if filepath.IsAbs(p) { + return filepath.Clean(p) + } + return filepath.Clean(filepath.Join(c.repo, p)) + } + + // Merge caches for lookup + allByName := make(map[string]*javapb.ClassInfo, len(c.javaIPC.LocalClassCache)+len(c.javaIPC.JdkClassCache)+len(c.javaIPC.ThirdPartClassCache)+len(c.javaIPC.UnknowClassCache)) + localByName := make(map[string]*javapb.ClassInfo, len(c.javaIPC.LocalClassCache)) + merge := func(m map[string]*javapb.ClassInfo) { + for k, v := range m { + if v == nil { + continue + } + allByName[k] = v + } + } + merge(c.javaIPC.LocalClassCache) + merge(c.javaIPC.JdkClassCache) + merge(c.javaIPC.ThirdPartClassCache) + merge(c.javaIPC.UnknowClassCache) + for k, v := range c.javaIPC.LocalClassCache { + if v != nil { + localByName[k] = v + } + } + + resolveClass := func(fqcn string) *javapb.ClassInfo { + if fqcn == "" { + return nil + } + if v, ok := allByName[fqcn]; ok { + return v + } + return nil + } + + simpleName := func(fqcn string) string { + if fqcn == "" { + return "" + } + if idx := strings.LastIndex(fqcn, "."); idx >= 0 && idx+1 < len(fqcn) { + return fqcn[idx+1:] + } + return fqcn + } + + // IPC Java Parser 的行号/列号是 1-based;当前系统内部 Position 需要 0-based。 + // 为了兼容(避免出现负数),仅在值 > 0 时做 -1。 + normLine := func(v int32) int { + if v > 0 { + return int(v - 1) + } + return int(v) + } + normCol := func(v int32) int { + if v > 0 { + return int(v - 1) + } + return int(v) + } + locFromPos := func(fileAbs string, sl, sc, el, ec int32) Location { + return Location{ + URI: NewURI(fileAbs), + Range: Range{ + Start: Position{Line: normLine(sl), Character: normCol(sc)}, + End: Position{Line: normLine(el), Character: normCol(ec)}, + }, + } + } + + externalURIFor := func(ci *javapb.ClassInfo, fqcn string) DocumentURI { + base := "abcoder-external" + if ci != nil && ci.Source != nil { + switch ci.Source.Type { + case javapb.SourceType_SOURCE_TYPE_JDK: + base = "abcoder-jdk" + case javapb.SourceType_SOURCE_TYPE_MAVEN, javapb.SourceType_SOURCE_TYPE_EXTERNAL_JAR: + base = "abcoder-third" + } + } + p := filepath.Join(os.TempDir(), base, filepath.FromSlash(strings.ReplaceAll(fqcn, ".", "/"))+".java") + return NewURI(p) + } + + classKind := func(ci *javapb.ClassInfo) SymbolKind { + if ci == nil { + return SKUnknown + } + switch ci.ClassType { + case javapb.ClassType_CLASS_TYPE_INTERFACE: + return SKInterface + case javapb.ClassType_CLASS_TYPE_ENUM: + return SKEnum + default: + return SKClass + } + } + + // fileAbs -> local classes in file + fileToClasses := make(map[string][]*javapb.ClassInfo, len(c.javaIPC.LocalClassCache)) + for _, ci := range c.javaIPC.LocalClassCache { + if ci == nil { + continue + } + fp := normalizePath(ci.FilePath) + if fp == "" { + continue + } + if shouldExclude(fp) { + continue + } + if c.spec.ShouldSkip(fp) { + continue + } + fileToClasses[fp] = append(fileToClasses[fp], ci) + } + for fp := range fileToClasses { + cls := fileToClasses[fp] + sort.Slice(cls, func(i, j int) bool { + if cls[i].StartLine != cls[j].StartLine { + return cls[i].StartLine < cls[j].StartLine + } + return cls[i].StartColumn < cls[j].StartColumn + }) + fileToClasses[fp] = cls + } + + // Module paths (same as ScannerByTreeSitter) + modulePaths := []string{c.repo} + rootPomPath := filepath.Join(c.repo, "pom.xml") + if rootModule, err := parser.ParseMavenProject(rootPomPath); err == nil && rootModule != nil { + modulePaths = parser.GetModulePaths(rootModule) + if len(modulePaths) == 0 { + modulePaths = []string{c.repo} + } + } + + classSymByName := make(map[string]*DocumentSymbol, len(allByName)) + methodSymByKey := make(map[string]*DocumentSymbol, 1024) + processed := make(map[string]bool, len(localByName)) + processing := make(map[string]bool, 64) + + ensureFile := func(fileAbs string, ci *javapb.ClassInfo) *uniast.File { + if fileAbs == "" { + return nil + } + if f := c.files[fileAbs]; f != nil { + return f + } + rel, err := filepath.Rel(c.repo, fileAbs) + if err != nil { + rel = filepath.Base(fileAbs) + } + f := uniast.NewFile(rel) + if ci != nil { + if ci.PackageName != "" { + f.Package = uniast.PkgPath(ci.PackageName) + } + if len(ci.Imports) > 0 { + f.Imports = make([]uniast.Import, 0, len(ci.Imports)) + for _, imp := range ci.Imports { + if imp == "" { + continue + } + f.Imports = append(f.Imports, uniast.Import{Path: imp}) + } + } + } + c.files[fileAbs] = f + return f + } + + getOrCreateClassSym := func(fqcn string) *DocumentSymbol { + if fqcn == "" { + return nil + } + if sym, ok := classSymByName[fqcn]; ok { + return sym + } + ci := resolveClass(fqcn) + if ci == nil { + return nil + } + isLocal := ci.Source != nil && ci.Source.Type == javapb.SourceType_SOURCE_TYPE_LOCAL + fp := normalizePath(ci.FilePath) + var uri DocumentURI + if isLocal && fp != "" { + uri = NewURI(fp) + ensureFile(fp, ci) + } else { + // external/jdk/third-party + if fp != "" { + // Ensure it is an absolute path that is NOT under repo + if !filepath.IsAbs(fp) { + fp = filepath.Clean(filepath.Join(os.TempDir(), "abcoder-external-path", fp)) + } + uri = NewURI(fp) + } else { + uri = externalURIFor(ci, fqcn) + } + } + name := simpleName(fqcn) + if name == "" { + name = fqcn + } + loc := Location{URI: uri, Range: Range{Start: Position{Line: normLine(ci.StartLine), Character: normCol(ci.StartColumn)}, End: Position{Line: normLine(ci.EndLine), Character: normCol(ci.EndColumn)}}} + sym := &DocumentSymbol{ + Name: name, + Kind: classKind(ci), + Text: ci.GetContent(), + Location: loc, + Role: DEFINITION, + } + c.syms[sym.Location] = sym + classSymByName[fqcn] = sym + return sym + } + + addDep := func(from *DocumentSymbol, depSym *DocumentSymbol, tokenLoc Location) { + if from == nil || depSym == nil { + return + } + c.deps[from] = append(c.deps[from], dependency{Location: tokenLoc, Symbol: depSym}) + } + + isStaticText := func(raw string) bool { + if raw == "" { + return false + } + l := strings.ToLower(raw) + return strings.Contains(l, " static ") || strings.HasPrefix(l, "static ") || strings.Contains(l, "\nstatic ") + } + + isPublicText := func(raw string) bool { + if raw == "" { + return false + } + l := strings.ToLower(raw) + return strings.Contains(l, " public ") || strings.HasPrefix(l, "public ") || strings.Contains(l, "\npublic ") + } + + isFinalText := func(raw string) bool { + if raw == "" { + return false + } + l := strings.ToLower(raw) + return strings.Contains(l, " final ") || strings.HasPrefix(l, "final ") || strings.Contains(l, "\nfinal ") + } + + methodKey := func(fqcn, k string) string { + return fqcn + "#" + k + } + + var processClass func(string) + processClass = func(fqcn string) { + if fqcn == "" { + return + } + if processed[fqcn] { + return + } + if processing[fqcn] { + return + } + ci := localByName[fqcn] + if ci == nil { + // Not local: only ensure stub symbol exists. + _ = getOrCreateClassSym(fqcn) + processed[fqcn] = true + return + } + processing[fqcn] = true + defer func() { processing[fqcn] = false }() + + fileAbs := normalizePath(ci.FilePath) + if fileAbs == "" { + processing[fqcn] = false + processed[fqcn] = true + return + } + ensureFile(fileAbs, ci) + classSym := getOrCreateClassSym(fqcn) + if classSym == nil { + processed[fqcn] = true + return + } + + // 1) Extends + if len(ci.ExtendsDetails) > 0 { + for _, ext := range ci.ExtendsDetails { + if ext == nil || ext.Fqcn == "" { + continue + } + if _, ok := localByName[ext.Fqcn]; ok { + processClass(ext.Fqcn) + } + depSym := getOrCreateClassSym(ext.Fqcn) + tokLoc := locFromPos(fileAbs, ext.StartLine, ext.StartColumn, ext.EndLine, ext.EndColumn) + addDep(classSym, depSym, tokLoc) + } + } else { + for _, ext := range ci.ExtendsTypes { + if ext == "" { + continue + } + if _, ok := localByName[ext]; ok { + processClass(ext) + } + depSym := getOrCreateClassSym(ext) + addDep(classSym, depSym, classSym.Location) + } + } + + // 2) Implements + if len(ci.ImplementsDetails) > 0 { + for _, impl := range ci.ImplementsDetails { + if impl == nil || impl.Fqcn == "" { + continue + } + if _, ok := localByName[impl.Fqcn]; ok { + processClass(impl.Fqcn) + } + depSym := getOrCreateClassSym(impl.Fqcn) + if depSym != nil { + depSym.Kind = SKInterface + } + tokLoc := locFromPos(fileAbs, impl.StartLine, impl.StartColumn, impl.EndLine, impl.EndColumn) + addDep(classSym, depSym, tokLoc) + } + } else { + for _, impl := range ci.ImplementsTypes { + if impl == "" { + continue + } + if _, ok := localByName[impl]; ok { + processClass(impl) + } + depSym := getOrCreateClassSym(impl) + if depSym != nil { + depSym.Kind = SKInterface + } + addDep(classSym, depSym, classSym.Location) + } + } + + // 3) Fields + for _, f := range ci.Fields { + if f == nil { + continue + } + if f.TypeFqcn != "" { + if _, ok := localByName[f.TypeFqcn]; ok { + processClass(f.TypeFqcn) + } + depSym := getOrCreateClassSym(f.TypeFqcn) + addDep(classSym, depSym, locFromPos(fileAbs, f.StartLine, f.StartColumn, f.EndLine, f.EndColumn)) + } + + // Exportable static vars/consts + if f.Name != "" && isPublicText(f.RawText) && isStaticText(f.RawText) { + kind := SKVariable + if isFinalText(f.RawText) { + kind = SKConstant + } + vsym := &DocumentSymbol{ + Name: f.Name, + Kind: kind, + Text: f.RawText, + Location: locFromPos(fileAbs, f.StartLine, f.StartColumn, f.EndLine, f.EndColumn), + Role: DEFINITION, + } + c.syms[vsym.Location] = vsym + if f.TypeFqcn != "" { + depSym := getOrCreateClassSym(f.TypeFqcn) + if depSym != nil { + c.vars[vsym] = dependency{Location: vsym.Location, Symbol: depSym} + } + } + } + } + + // 4) Methods (and method calls) + for _, m := range ci.Methods { + if m == nil { + continue + } + name := m.Descriptor + if name == "" { + name = m.GetName() + } + if name == "" { + continue + } + kind := SKMethod + if isStaticText(m.RawText) { + kind = SKFunction + } + mloc := locFromPos(fileAbs, m.StartLine, m.StartColumn, m.EndLine, m.EndColumn) + msym := &DocumentSymbol{ + Name: name, + Kind: kind, + Text: m.RawText, + Location: mloc, + Role: DEFINITION, + } + c.syms[msym.Location] = msym + classSym.Children = append(classSym.Children, msym) + + // Index method symbols for call resolution + if m.Descriptor != "" { + methodSymByKey[methodKey(fqcn, m.Descriptor)] = msym + } + if n := m.GetName(); n != "" { + methodSymByKey[methodKey(fqcn, n)] = msym + } + + // Fill functionInfo + finfo := c.funcs[msym] + finfo.Signature = m.Descriptor + if finfo.Signature == "" { + finfo.Signature = strings.TrimSpace(m.RawText) + } + finfo.Method = &methodInfo{Receiver: dependency{Symbol: classSym, Location: classSym.Location}} + + if len(m.Parameters) > 0 { + finfo.Inputs = make(map[int]dependency, len(m.Parameters)) + finfo.InputsSorted = make([]dependency, 0, len(m.Parameters)) + for i, p := range m.Parameters { + if p == nil || p.TypeFqcn == "" { + continue + } + if _, ok := localByName[p.TypeFqcn]; ok { + processClass(p.TypeFqcn) + } + depSym := getOrCreateClassSym(p.TypeFqcn) + if depSym == nil { + continue + } + ploc := locFromPos(fileAbs, p.StartLine, p.StartColumn, p.EndLine, p.EndColumn) + d := dependency{Location: ploc, Symbol: depSym} + finfo.Inputs[i] = d + finfo.InputsSorted = append(finfo.InputsSorted, d) + } + } + if m.ReturnType != nil && m.ReturnType.TypeFqcn != "" && m.ReturnType.TypeFqcn != "void" { + if _, ok := localByName[m.ReturnType.TypeFqcn]; ok { + processClass(m.ReturnType.TypeFqcn) + } + depSym := getOrCreateClassSym(m.ReturnType.TypeFqcn) + if depSym != nil { + rloc := locFromPos(fileAbs, m.ReturnType.StartLine, m.ReturnType.StartColumn, m.ReturnType.EndLine, m.ReturnType.EndColumn) + finfo.Outputs = map[int]dependency{0: {Location: rloc, Symbol: depSym}} + finfo.OutputsSorted = []dependency{{Location: rloc, Symbol: depSym}} + } + } + c.funcs[msym] = finfo + + // Method calls + for _, call := range m.MethodCalls { + if call == nil || call.CalleeClass == "" { + continue + } + calleeInfo := resolveClass(call.CalleeClass) + if calleeInfo == nil { + // drop if callee class can't be resolved + continue + } + // Ensure callee class symbol exists, and for local callee class ensure it is processed so method index is ready. + if _, ok := localByName[call.CalleeClass]; ok { + processClass(call.CalleeClass) + } + calleeClassSym := getOrCreateClassSym(call.CalleeClass) + if calleeClassSym == nil { + continue + } + + calleeMethodSym := (*DocumentSymbol)(nil) + if call.CalleeMethod != "" { + if s, ok := methodSymByKey[methodKey(call.CalleeClass, call.CalleeMethod)]; ok { + calleeMethodSym = s + } + } + if calleeMethodSym == nil { + // Create a lightweight stub method symbol (one-layer only). + // IMPORTANT: do NOT put it into c.syms to avoid clobbering class symbols. + stubLoc := Location{URI: calleeClassSym.Location.URI, Range: Range{Start: calleeClassSym.Location.Range.Start, End: calleeClassSym.Location.Range.Start}} + calleeMethodSym = &DocumentSymbol{ + Name: call.CalleeMethod, + Kind: SKMethod, + Text: "", + Location: stubLoc, + Role: REFERENCE, + } + } + tokFile := normalizePath(call.FilePath) + if tokFile == "" { + tokFile = fileAbs + } + callLoc := locFromPos(tokFile, call.Line, call.Column, call.EndLine, call.EndColumn) + addDep(msym, calleeMethodSym, callLoc) + } + } + + processed[fqcn] = true + } + + // Traverse in module->file->class order. + rootSyms := make([]*DocumentSymbol, 0, len(localByName)) + visitedFile := make(map[string]bool, len(fileToClasses)) + for _, modulePath := range modulePaths { + // Collect files under current modulePath + files := make([]string, 0, 256) + for fp := range fileToClasses { + if visitedFile[fp] { + continue + } + if strings.HasPrefix(fp, modulePath) { + files = append(files, fp) + } + } + sort.Strings(files) + for _, fp := range files { + visitedFile[fp] = true + cls := fileToClasses[fp] + if len(cls) == 0 { + continue + } + // Ensure file metadata + ensureFile(fp, cls[0]) + for _, ci := range cls { + if ci == nil || ci.ClassName == "" { + continue + } + rootSyms = append(rootSyms, getOrCreateClassSym(ci.ClassName)) + processClass(ci.ClassName) + } + } + } + // Fallback: any remaining local file not under modulePaths + for fp, cls := range fileToClasses { + if visitedFile[fp] { + continue + } + visitedFile[fp] = true + if len(cls) == 0 { + continue + } + ensureFile(fp, cls[0]) + for _, ci := range cls { + if ci == nil || ci.ClassName == "" { + continue + } + rootSyms = append(rootSyms, getOrCreateClassSym(ci.ClassName)) + processClass(ci.ClassName) + } + } + + return rootSyms, nil +} + +func (c *Collector) parserConfig() *java.ParserConfig { + config := java.DefaultParserConfig() + return config +} + func (c *Collector) ScannerFile(ctx context.Context) []*DocumentSymbol { c.configureLSP(ctx) excludes := make([]string, len(c.Excludes)) diff --git a/lang/collect/collect_test.go b/lang/collect/collect_test.go index 283172c6..0f3ddeea 100644 --- a/lang/collect/collect_test.go +++ b/lang/collect/collect_test.go @@ -18,50 +18,14 @@ import ( "context" "encoding/json" "os" - "path/filepath" "testing" - "github.com/cloudwego/abcoder/lang/java" - javaLsp "github.com/cloudwego/abcoder/lang/java/lsp" "github.com/cloudwego/abcoder/lang/log" "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/testutils" "github.com/cloudwego/abcoder/lang/uniast" ) -func TestCollector_CollectByTreeSitter_Java(t *testing.T) { - log.SetLogLevel(log.DebugLevel) - javaTestCase := "../../testdata/java/1_advanced" - - t.Run("javaCollect", func(t *testing.T) { - - lsp.RegisterProvider(uniast.Java, &javaLsp.JavaProvider{}) - - openfile, wait := java.CheckRepo(javaTestCase) - l, s := java.GetDefaultLSP(make(map[string]string)) - client, err := lsp.NewLSPClient(javaTestCase, openfile, wait, lsp.ClientOptions{ - Server: s, - Language: l, - Verbose: false, - }) - - c := NewCollector(javaTestCase, client) - c.Language = uniast.Java - _, err = c.ScannerByTreeSitter(context.Background()) - if err != nil { - t.Fatalf("Collector.CollectByTreeSitter() failed = %v\n", err) - } - - if len(c.files) == 0 { - t.Fatalf("Expected have file, but got %d", len(c.files)) - } - - expectedFile := filepath.Join(javaTestCase, "/src/main/java/org/example/test.json") - if _, ok := c.files[expectedFile]; ok { - t.Fatalf("Expected file %s not found", expectedFile) - } - }) -} func TestCollector_Collect(t *testing.T) { log.SetLogLevel(log.DebugLevel) rustLSP, rustTestCase, err := lsp.InitLSPForFirstTest(uniast.Rust, "rust-analyzer") diff --git a/lang/collect/export.go b/lang/collect/export.go index 885c874f..9bd149f2 100644 --- a/lang/collect/export.go +++ b/lang/collect/export.go @@ -18,6 +18,7 @@ import ( "context" "errors" "fmt" + "os" "path/filepath" "strings" @@ -39,16 +40,26 @@ func (c *Collector) fileLine(loc Location) uniast.FileLine { } else { rel = filepath.Base(loc.URI.File()) } - if c.cli.GetFile(loc.URI) == nil { - return uniast.FileLine{} + fileURI := string(loc.URI) + if c.cli == nil { + return uniast.FileLine{File: rel, Line: loc.Range.Start.Line + 1} + } + f := c.cli.GetFile(loc.URI) + text := "" + if f != nil { + text = f.Text + } else { + fd, err := os.ReadFile(loc.URI.File()) + if err != nil { + return uniast.FileLine{File: rel, Line: loc.Range.Start.Line + 1} + } + text = string(fd) } - text := c.cli.GetFile(loc.URI).Text - file_uri := string(loc.URI) return uniast.FileLine{ File: rel, Line: loc.Range.Start.Line + 1, - StartOffset: PositionOffset(file_uri, text, loc.Range.Start), - EndOffset: PositionOffset(file_uri, text, loc.Range.End), + StartOffset: PositionOffset(fileURI, text, loc.Range.Start), + EndOffset: PositionOffset(fileURI, text, loc.Range.End), } } @@ -195,6 +206,31 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol e = err return } + + // Java IPC mode: external/JDK/third-party symbols are exported as one-layer stub identities, + // and MUST NOT create module/package entries in repo. + isJavaIPC := c.Language == uniast.Java && c.javaIPC != nil + if isJavaIPC && !c.internal(symbol.Location) { + name := symbol.Name + if name == "" { + if refName == "" { + e = fmt.Errorf("both symbol %v name and refname is empty", symbol) + return + } + name = refName + } + m := "@external" + fp := symbol.Location.URI.File() + if strings.Contains(fp, "abcoder-jdk") { + m = "@jdk" + } else if strings.Contains(fp, "abcoder-third") { + m = "@third" + } + tmp := uniast.NewIdentity(m, "external", name) + id = &tmp + visited[symbol] = id + return id, nil + } if !c.NeedStdSymbol && mod == "" { e = ErrStdSymbol return @@ -240,10 +276,16 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol public := c.spec.IsPublicSymbol(*symbol) if !isDefinition && !isLocalMethod && !isLocalSymbol { - defs, err := c.cli.Definition(context.Background(), symbol.Location.URI, symbol.Location.Range.Start) - if err != nil || len(defs) == 0 { - // 意味着引用为外部符号,LSP 无法查询到符号定位 - return id, err + // In Java IPC mode we never rely on LSP Definition. + if !isJavaIPC { + if c.cli == nil { + return id, fmt.Errorf("LSP client is nil") + } + defs, err := c.cli.Definition(context.Background(), symbol.Location.URI, symbol.Location.Range.Start) + if err != nil || len(defs) == 0 { + // 意味着引用为外部符号,LSP 无法查询到符号定位 + return id, err + } } } @@ -258,9 +300,11 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol switch k := symbol.Kind; k { // Function case SKFunction, SKMethod: - if p := c.cli.GetParent(symbol); p != nil && p.Kind == SKInterface { - // NOTICE: no need collect interface method - break + if c.cli != nil { + if p := c.cli.GetParent(symbol); p != nil && p.Kind == SKInterface { + // NOTICE: no need collect interface method + break + } } obj := &uniast.Function{ FileLine: fileLine, @@ -272,7 +316,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol // NOTICE: type parames collect into types if info.TypeParams != nil { for _, input := range info.TypeParamsSorted { - tok, _ := c.cli.Locate(input.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(input.Location) + } tyid, err := c.exportSymbol(repo, input.Symbol, tok, visited) if err != nil { continue @@ -283,7 +330,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol } if info.Inputs != nil { for _, input := range info.InputsSorted { - tok, _ := c.cli.Locate(input.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(input.Location) + } tyid, err := c.exportSymbol(repo, input.Symbol, tok, visited) if err != nil { continue @@ -294,7 +344,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol } if info.Outputs != nil { for _, output := range info.OutputsSorted { - tok, _ := c.cli.Locate(output.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(output.Location) + } tyid, err := c.exportSymbol(repo, output.Symbol, tok, visited) if err != nil { continue @@ -304,7 +357,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol } } if info.Method != nil && info.Method.Receiver.Symbol != nil { - tok, _ := c.cli.Locate(info.Method.Receiver.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(info.Method.Receiver.Location) + } rid, err := c.exportSymbol(repo, info.Method.Receiver.Symbol, tok, visited) if err == nil { obj.Receiver = &uniast.Receiver{ @@ -316,7 +372,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol // NOTICE: check if the method is a trait method // if true, type = trait if info.Method.Interface != nil { - itok, _ := c.cli.Locate(info.Method.Interface.Location) + itok := "" + if c.cli != nil { + itok, _ = c.cli.Locate(info.Method.Interface.Location) + } iid, err := c.exportSymbol(repo, info.Method.Interface.Symbol, itok, visited) if err == nil { id.Name = iid.Name + "<" + id.Name + ">" @@ -338,7 +397,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol // collect deps if deps := c.deps[symbol]; deps != nil { for _, dep := range deps { - tok, _ := c.cli.Locate(dep.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(dep.Location) + } depid, err := c.exportSymbol(repo, dep.Symbol, tok, visited) if err != nil { continue @@ -382,7 +444,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol // collect deps if deps := c.deps[symbol]; deps != nil { for _, dep := range deps { - tok, _ := c.cli.Locate(dep.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(dep.Location) + } depid, err := c.exportSymbol(repo, dep.Symbol, tok, visited) if err != nil { continue @@ -400,7 +465,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol if rec := receivers[symbol]; rec != nil { obj.Methods = make(map[string]uniast.Identity, len(rec)) for _, method := range rec { - tok, _ := c.cli.Locate(method.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(method.Location) + } mid, err := c.exportSymbol(repo, method, tok, visited) if err != nil { continue @@ -420,7 +488,10 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol IsConst: k == SKConstant, } if ty, ok := c.vars[symbol]; ok { - tok, _ := c.cli.Locate(ty.Location) + tok := "" + if c.cli != nil { + tok, _ = c.cli.Locate(ty.Location) + } tyid, err := c.exportSymbol(repo, ty.Symbol, tok, visited) if err == nil { obj.Type = tyid diff --git a/lang/java/ipc/abcoder-java-analyzer-1.0-SNAPSHOT.jar b/lang/java/ipc/abcoder-java-analyzer-1.0-SNAPSHOT.jar new file mode 100644 index 00000000..55fc2f4c Binary files /dev/null and b/lang/java/ipc/abcoder-java-analyzer-1.0-SNAPSHOT.jar differ diff --git a/lang/java/ipc/converter.go b/lang/java/ipc/converter.go new file mode 100644 index 00000000..cea13797 --- /dev/null +++ b/lang/java/ipc/converter.go @@ -0,0 +1,226 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ipc + +import ( + "path/filepath" + "strings" + + "github.com/cloudwego/abcoder/lang/java/pb" + "github.com/cloudwego/abcoder/lang/uniast" +) + +type Converter struct { + repo *uniast.Repository + repoPath string + moduleName string + + // Caches + fileCache map[string]*uniast.File + moduleCache map[string]*uniast.Module + + JdkClassCache map[string]*pb.ClassInfo + LocalClassCache map[string]*pb.ClassInfo + UnknowClassCache map[string]*pb.ClassInfo + ThirdPartClassCache map[string]*pb.ClassInfo +} + +// NewConverter creates a new converter for the given repository +func NewConverter(repoPath string, moduleName string) *Converter { + repo := uniast.NewRepository(moduleName) + repo.Path = repoPath + + c := &Converter{ + repo: &repo, + repoPath: repoPath, + moduleName: moduleName, + fileCache: make(map[string]*uniast.File), + moduleCache: make(map[string]*uniast.Module), + JdkClassCache: make(map[string]*pb.ClassInfo), + LocalClassCache: make(map[string]*pb.ClassInfo), + UnknowClassCache: make(map[string]*pb.ClassInfo), + ThirdPartClassCache: make(map[string]*pb.ClassInfo), + } + // 确保默认 module 存在(即使只收到 progress/summary) + c.getOrCreateModule(moduleName) + return c +} + +// ConvertResponses 将 Java Parser 的流式响应列表转换为 UniAST Repository。 +func ConvertResponses(repoPath string, moduleName string, responses []*pb.AnalyzeResponse) (*uniast.Repository, error) { + conv := NewConverter(repoPath, moduleName) + for _, resp := range responses { + if err := conv.ProcessResponse(resp); err != nil { + return conv.Repository(), err + } + } + return conv.Repository(), nil +} + +// Repository returns the converted UniAST repository +func (c *Converter) Repository() *uniast.Repository { + return c.repo +} + +// ProcessResponse processes a single AnalyzeResponse and updates the repository +func (c *Converter) ProcessResponse(resp *pb.AnalyzeResponse) error { + if resp == nil { + return nil + } + + switch resp.PayloadType { + case pb.PAYLOAD_FILE_INFO: + return c.processFileInfo(resp.GetFileInfo()) + case pb.PAYLOAD_CLASS_INFO: + return c.processClassInfo(resp.GetClassInfo()) + case pb.PAYLOAD_METHOD_CALL: + return nil + case pb.PAYLOAD_PROGRESS: + // 进度不影响仓库结构 + return nil + case pb.PAYLOAD_SUMMARY: + // 汇总不影响仓库结构 + return nil + case pb.PAYLOAD_ERROR: + // 错误不影响仓库结构(由调用方处理) + return nil + } + return nil +} + +// processFileInfo converts FileInfo to UniAST File +func (c *Converter) processFileInfo(info *pb.FileInfo) error { + if info == nil { + return nil + } + + // Get or create file + file := c.getOrCreateFile(info.FilePath) + + // Extract package from file path + file.Package = extractPackageFromPath(info.FilePath) + + return nil +} + +// processClassInfo converts ClassInfo to UniAST Type and Functions +func (c *Converter) processClassInfo(info *pb.ClassInfo) error { + if info == nil { + return nil + } + + err, _ := putCache(info, c) + if err != nil { + return err + } + for _, dep := range info.Dependencies { + if dep.SourceType == pb.SourceType_SOURCE_TYPE_JDK && dep.ClassName != "" { + if _, ok := c.JdkClassCache[dep.ClassName]; !ok { + depPoint := &pb.ClassInfo{ + ClassName: dep.ClassName, + Source: &pb.SourceInfo{ + Type: pb.SourceType_SOURCE_TYPE_JDK, + }, + } + putCache(depPoint, c) + } + } + if dep.SourceType == pb.SourceType_SOURCE_TYPE_UNKNOWN && dep.ClassName != "" { + if _, ok := c.UnknowClassCache[dep.ClassName]; !ok { + depPoint := &pb.ClassInfo{ + ClassName: dep.ClassName, + Source: &pb.SourceInfo{ + Type: pb.SourceType_SOURCE_TYPE_UNKNOWN, + }, + } + putCache(depPoint, c) + } + } + if (dep.SourceType == pb.SourceType_SOURCE_TYPE_MAVEN || dep.SourceType == pb.SourceType_SOURCE_TYPE_EXTERNAL_JAR) && dep.ClassName != "" { + if _, ok := c.ThirdPartClassCache[dep.ClassName]; !ok { + depPoint := &pb.ClassInfo{ + ClassName: dep.ClassName, + Source: &pb.SourceInfo{ + Type: pb.SourceType_SOURCE_TYPE_MAVEN, + }, + } + putCache(depPoint, c) + } + } + } + + return nil +} + +func putCache(info *pb.ClassInfo, c *Converter) (error, bool) { + // Cache class info + switch info.Source.Type { + case pb.SourceType_SOURCE_TYPE_JDK: + c.JdkClassCache[info.ClassName] = info + case pb.SourceType_SOURCE_TYPE_LOCAL: + c.LocalClassCache[info.ClassName] = info + case pb.SourceType_SOURCE_TYPE_UNKNOWN: + c.UnknowClassCache[info.ClassName] = info + case pb.SourceType_SOURCE_TYPE_MAVEN, pb.SourceType_SOURCE_TYPE_EXTERNAL_JAR: + c.ThirdPartClassCache[info.ClassName] = info + default: + return nil, true + } + return nil, false +} + +// getOrCreateModule gets or creates a module +func (c *Converter) getOrCreateModule(name string) *uniast.Module { + if mod, ok := c.moduleCache[name]; ok { + return mod + } + + mod := uniast.NewModule(name, "", uniast.Java) + c.moduleCache[name] = mod + c.repo.SetModule(name, mod) + return mod +} + +// getOrCreateFile gets or creates a file +func (c *Converter) getOrCreateFile(filePath string) *uniast.File { + if file, ok := c.fileCache[filePath]; ok { + return file + } + + file := uniast.NewFile(filePath) + c.fileCache[filePath] = file + + // Add file to appropriate module + mod := c.getOrCreateModule(c.moduleName) + mod.Files[filePath] = file + + return file +} + +// extractPackageFromPath extracts package name from file path +func extractPackageFromPath(filePath string) string { + // Remove file extension and convert path separators to dots + dir := filepath.Dir(filePath) + + // Try to find src/main/java or src/ prefix + if idx := strings.Index(dir, "src/main/java/"); idx != -1 { + return strings.ReplaceAll(dir[idx+len("src/main/java/"):], "/", ".") + } + if idx := strings.Index(dir, "src/"); idx != -1 { + return strings.ReplaceAll(dir[idx+len("src/"):], "/", ".") + } + + return strings.ReplaceAll(dir, "/", ".") +} diff --git a/lang/java/ipc/protocol.go b/lang/java/ipc/protocol.go new file mode 100644 index 00000000..ea289554 --- /dev/null +++ b/lang/java/ipc/protocol.go @@ -0,0 +1,360 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ipc + +import ( + "bufio" + "encoding/binary" + "encoding/json" + "errors" + "fmt" + "io" + "log" + + "github.com/cloudwego/abcoder/lang/java/pb" +) + +const ( + // MaxMessageSize is the maximum allowed message size (64MB) + MaxMessageSize = 64 * 1024 * 1024 + + // DefaultBufferSize is the default buffer size for reading + DefaultBufferSize = 64 * 1024 + + // MaxLogMessageLength is the max length of message content to log + MaxLogMessageLength = 500 +) + +var ( + ErrMessageTooLarge = errors.New("message size exceeds maximum allowed") + ErrInvalidLength = errors.New("invalid length encoding") + ErrUnexpectedEOF = errors.New("unexpected end of stream") +) + +// ProtocolReader handles reading length-prefixed JSON messages from a stream. +// +// Wire format: +// - 4 bytes: message length (big-endian uint32) +// - bytes: JSON message body +type ProtocolReader struct { + reader *bufio.Reader + buf []byte + debug bool +} + +// NewProtocolReader creates a new protocol reader with the given io.Reader. +func NewProtocolReader(r io.Reader) *ProtocolReader { + return &ProtocolReader{ + reader: bufio.NewReaderSize(r, DefaultBufferSize), + buf: make([]byte, 0, 4096), + debug: false, + } +} + +// SetDebug enables or disables debug logging +func (pr *ProtocolReader) SetDebug(enabled bool) { + pr.debug = enabled +} + +// ReadMessage reads a single length-prefixed JSON message. +// Returns io.EOF when the stream ends normally. +func (pr *ProtocolReader) ReadMessage() (*pb.Message, error) { + // Step A: Read 4-byte length prefix (big-endian) + var lengthBuf [4]byte + _, err := io.ReadFull(pr.reader, lengthBuf[:]) + if err != nil { + if err == io.EOF { + if pr.debug { + log.Printf("[Protocol] <<< EOF received") + } + return nil, io.EOF + } + return nil, fmt.Errorf("failed to read message length: %w", err) + } + + length := binary.BigEndian.Uint32(lengthBuf[:]) + + if pr.debug { + log.Printf("[Protocol] <<< Reading message, length=%d bytes", length) + } + + // Validate message size + if length > MaxMessageSize { + return nil, fmt.Errorf("%w: %d bytes (max: %d)", ErrMessageTooLarge, length, MaxMessageSize) + } + + if length == 0 { + if pr.debug { + log.Printf("[Protocol] <<< Empty message received") + } + return &pb.Message{}, nil + } + + // Step B: Read exactly 'length' bytes of message body + if cap(pr.buf) < int(length) { + pr.buf = make([]byte, length) + } else { + pr.buf = pr.buf[:length] + } + + _, err = io.ReadFull(pr.reader, pr.buf) + if err != nil { + if err == io.EOF || err == io.ErrUnexpectedEOF { + return nil, fmt.Errorf("%w: expected %d bytes", ErrUnexpectedEOF, length) + } + return nil, fmt.Errorf("failed to read message body: %w", err) + } + + // Debug: Log raw JSON + if pr.debug { + jsonStr := string(pr.buf) + if len(jsonStr) > MaxLogMessageLength { + jsonStr = jsonStr[:MaxLogMessageLength] + "...(truncated)" + } + log.Printf("[Protocol] <<< Received JSON: %s", jsonStr) + } + + // Step C: Unmarshal JSON message (outer wrapper) + type rawMessage struct { + Type string `json:"type"` + RequestId string `json:"requestId,omitempty"` + Payload json.RawMessage `json:"payload,omitempty"` + } + var raw rawMessage + if err := json.Unmarshal(pr.buf, &raw); err != nil { + if pr.debug { + log.Printf("[Protocol] <<< Failed to unmarshal: %v", err) + } + return nil, fmt.Errorf("failed to unmarshal JSON message: %w", err) + } + + msg := &pb.Message{Type: raw.Type, RequestId: raw.RequestId} + if len(raw.Payload) == 0 { + if pr.debug { + log.Printf("[Protocol] <<< Parsed message: type=%s, requestId=%s (no payload)", msg.Type, msg.RequestId) + } + return msg, nil + } + + switch raw.Type { + case pb.TYPE_ANALYZE_RESPONSE: + type rawAnalyzeResponse struct { + RequestId string `json:"requestId"` + PayloadType string `json:"payloadType"` + Payload json.RawMessage `json:"payload"` + } + var arRaw rawAnalyzeResponse + if err := json.Unmarshal(raw.Payload, &arRaw); err != nil { + return nil, fmt.Errorf("failed to unmarshal analyze_response payload: %w", err) + } + + ar := &pb.AnalyzeResponse{RequestId: arRaw.RequestId, PayloadType: arRaw.PayloadType} + var payload any + switch arRaw.PayloadType { + case pb.PAYLOAD_PROGRESS: + payload = &pb.ProgressUpdate{} + case pb.PAYLOAD_FILE_INFO: + payload = &pb.FileInfo{} + case pb.PAYLOAD_CLASS_INFO: + payload = &pb.ClassInfo{} + case pb.PAYLOAD_METHOD_CALL: + payload = &pb.MethodCallInfo{} + case pb.PAYLOAD_SUMMARY: + payload = &pb.Summary{} + case pb.PAYLOAD_ERROR: + payload = &pb.ErrorInfo{} + default: + // 未知 payloadType:保留原始 JSON + payload = json.RawMessage(arRaw.Payload) + } + + if rm, ok := payload.(json.RawMessage); ok { + ar.Payload = rm + } else { + if err := json.Unmarshal(arRaw.Payload, payload); err != nil { + return nil, fmt.Errorf("failed to unmarshal analyze_response inner payload (%s): %w", arRaw.PayloadType, err) + } + ar.Payload = payload + } + msg.Payload = ar + + case pb.TYPE_ANALYZE_REQUEST: + var req pb.AnalyzeRequest + if err := json.Unmarshal(raw.Payload, &req); err != nil { + return nil, fmt.Errorf("failed to unmarshal analyze_request payload: %w", err) + } + msg.Payload = &req + + case pb.TYPE_STOP_REQUEST: + var stop pb.StopRequest + if err := json.Unmarshal(raw.Payload, &stop); err != nil { + return nil, fmt.Errorf("failed to unmarshal stop_request payload: %w", err) + } + msg.Payload = &stop + + case pb.TYPE_HEARTBEAT: + var hb pb.Heartbeat + if err := json.Unmarshal(raw.Payload, &hb); err != nil { + return nil, fmt.Errorf("failed to unmarshal heartbeat payload: %w", err) + } + msg.Payload = &hb + + default: + msg.Payload = json.RawMessage(raw.Payload) + } + + if pr.debug { + if ar := msg.GetAnalyzeResponse(); ar != nil { + log.Printf("[Protocol] <<< Parsed message: type=%s, requestId=%s, payloadType=%s", msg.Type, msg.RequestId, ar.PayloadType) + } else { + log.Printf("[Protocol] <<< Parsed message: type=%s, requestId=%s", msg.Type, msg.RequestId) + } + } + + return msg, nil +} + +// ProtocolWriter handles writing length-prefixed JSON messages to a stream. +type ProtocolWriter struct { + writer io.Writer + debug bool +} + +// NewProtocolWriter creates a new protocol writer with the given io.Writer. +func NewProtocolWriter(w io.Writer) *ProtocolWriter { + return &ProtocolWriter{ + writer: w, + debug: false, + } +} + +// SetDebug enables or disables debug logging +func (pw *ProtocolWriter) SetDebug(enabled bool) { + pw.debug = enabled +} + +// WriteMessage writes a length-prefixed JSON Message. +func (pw *ProtocolWriter) WriteMessage(msg *pb.Message) error { + data, err := json.Marshal(msg) + if err != nil { + return fmt.Errorf("failed to marshal JSON message: %w", err) + } + + if pw.debug { + jsonStr := string(data) + if len(jsonStr) > MaxLogMessageLength { + jsonStr = jsonStr[:MaxLogMessageLength] + "...(truncated)" + } + log.Printf("[Protocol] >>> Sending message, length=%d bytes", len(data)) + log.Printf("[Protocol] >>> JSON: %s", jsonStr) + } + + // Write 4-byte length prefix (big-endian) + var lengthBuf [4]byte + binary.BigEndian.PutUint32(lengthBuf[:], uint32(len(data))) + if _, err := pw.writer.Write(lengthBuf[:]); err != nil { + return fmt.Errorf("failed to write message length: %w", err) + } + + // Write message body + if _, err := pw.writer.Write(data); err != nil { + return fmt.Errorf("failed to write message body: %w", err) + } + + if pw.debug { + log.Printf("[Protocol] >>> Message sent successfully") + } + + return nil +} + +// WriteRequest writes a length-prefixed JSON AnalyzeRequest message (wrapped by Message). +func (pw *ProtocolWriter) WriteRequest(req *pb.AnalyzeRequest) error { + msg := &pb.Message{ + Type: pb.TYPE_ANALYZE_REQUEST, + RequestId: req.RequestId, + Payload: req, + } + return pw.WriteMessage(msg) +} + +// WriteResponse writes a length-prefixed JSON AnalyzeResponse message (wrapped by Message). +func (pw *ProtocolWriter) WriteResponse(resp *pb.AnalyzeResponse) error { + msg := &pb.Message{ + Type: pb.TYPE_ANALYZE_RESPONSE, + RequestId: resp.RequestId, + Payload: resp, + } + return pw.WriteMessage(msg) +} + +// MessageIterator provides an iterator interface for reading messages. +type MessageIterator struct { + reader *ProtocolReader + err error + msg *pb.Message +} + +// NewMessageIterator creates a new message iterator. +func NewMessageIterator(r io.Reader) *MessageIterator { + return &MessageIterator{ + reader: NewProtocolReader(r), + } +} + +// Next advances the iterator to the next message. +func (it *MessageIterator) Next() bool { + it.msg, it.err = it.reader.ReadMessage() + return it.err == nil +} + +// Message returns the current message. +func (it *MessageIterator) Message() *pb.AnalyzeResponse { + return it.msg.GetAnalyzeResponse() +} + +// RawMessage returns the current raw outer message. +func (it *MessageIterator) RawMessage() *pb.Message { + return it.msg +} + +// Err returns any error that occurred during iteration. +func (it *MessageIterator) Err() error { + if it.err == io.EOF { + return nil + } + return it.err +} + +// ReadAllMessages reads all messages from the reader until EOF. +func ReadAllMessages(r io.Reader) ([]*pb.AnalyzeResponse, error) { + var messages []*pb.AnalyzeResponse + it := NewMessageIterator(r) + + for it.Next() { + msg := it.Message() + if msg == nil { + continue + } + msgCopy := *msg + messages = append(messages, &msgCopy) + } + + if err := it.Err(); err != nil { + return messages, err + } + + return messages, nil +} diff --git a/lang/java/ipc/protocol_test.go b/lang/java/ipc/protocol_test.go new file mode 100644 index 00000000..f4af4ed9 --- /dev/null +++ b/lang/java/ipc/protocol_test.go @@ -0,0 +1,204 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ipc + +import ( + "bytes" + "io" + "testing" + + "github.com/cloudwego/abcoder/lang/java/pb" +) + +func TestProtocolRoundTrip(t *testing.T) { + testCases := []struct { + name string + resp *pb.AnalyzeResponse + }{ + { + name: "progress_update", + resp: &pb.AnalyzeResponse{ + RequestId: "test-request-1", + PayloadType: pb.PAYLOAD_PROGRESS, + Payload: &pb.ProgressUpdate{ + Percentage: 50, + Phase: "parsing", + Message: "Parsing files...", + ProcessedFiles: 10, + TotalFiles: 20, + }, + }, + }, + { + name: "class_info", + resp: &pb.AnalyzeResponse{ + RequestId: "test-request-2", + PayloadType: pb.PAYLOAD_CLASS_INFO, + Payload: &pb.ClassInfo{ + ClassName: "com.example.TestClass", + FilePath: "src/main/java/com/example/TestClass.java", + ClassType: pb.ClassType_CLASS_TYPE_CLASS, + Imports: []string{"java.util.List"}, + ExtendsTypes: []string{"BaseClass"}, + ImplementsTypes: []string{"Interface1"}, + StartLine: 10, + EndLine: 100, + }, + }, + }, + { + name: "summary", + resp: &pb.AnalyzeResponse{ + RequestId: "test-request-3", + PayloadType: pb.PAYLOAD_SUMMARY, + Payload: &pb.Summary{ + TotalTimeMs: 5000, + LocalClassCount: 100, + FileCount: 30, + Success: true, + Message: "Analysis completed", + }, + }, + }, + { + name: "error", + resp: &pb.AnalyzeResponse{ + RequestId: "test-request-4", + PayloadType: pb.PAYLOAD_ERROR, + Payload: &pb.ErrorInfo{ + Code: pb.ErrorCode_ERROR_PARSE_FAILED, + Message: "Failed to parse file", + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + buf := &bytes.Buffer{} + writer := NewProtocolWriter(buf) + if err := writer.WriteResponse(tc.resp); err != nil { + t.Fatalf("Failed to write: %v", err) + } + + reader := NewProtocolReader(buf) + outer, err := reader.ReadMessage() + if err != nil { + t.Fatalf("Failed to read: %v", err) + } + if outer.Type != pb.TYPE_ANALYZE_RESPONSE { + t.Fatalf("Unexpected outer type: %s", outer.Type) + } + result := outer.GetAnalyzeResponse() + if result == nil { + t.Fatalf("Expected analyze response payload") + } + + if result.RequestId != tc.resp.RequestId { + t.Errorf("RequestId mismatch: got %s, want %s", result.RequestId, tc.resp.RequestId) + } + if result.PayloadType != tc.resp.PayloadType { + t.Errorf("PayloadType mismatch: got %s, want %s", result.PayloadType, tc.resp.PayloadType) + } + }) + } +} + +func TestMultipleMessages(t *testing.T) { + messages := []*pb.AnalyzeResponse{ + {RequestId: "1", PayloadType: pb.PAYLOAD_PROGRESS, Payload: &pb.ProgressUpdate{Percentage: 25}}, + {RequestId: "1", PayloadType: pb.PAYLOAD_PROGRESS, Payload: &pb.ProgressUpdate{Percentage: 50}}, + {RequestId: "1", PayloadType: pb.PAYLOAD_SUMMARY, Payload: &pb.Summary{Success: true}}, + } + + buf := &bytes.Buffer{} + writer := NewProtocolWriter(buf) + for _, msg := range messages { + if err := writer.WriteResponse(msg); err != nil { + t.Fatalf("Failed to write: %v", err) + } + } + + reader := NewProtocolReader(buf) + for i := range messages { + outer, err := reader.ReadMessage() + if err != nil { + t.Fatalf("Failed to read message %d: %v", i, err) + } + if outer.Type != pb.TYPE_ANALYZE_RESPONSE { + t.Fatalf("Message %d: unexpected outer type: %s", i, outer.Type) + } + result := outer.GetAnalyzeResponse() + if result == nil { + t.Fatalf("Message %d: expected analyze response payload", i) + } + if result.RequestId != messages[i].RequestId { + t.Errorf("Message %d: RequestId mismatch", i) + } + } + + _, err := reader.ReadMessage() + if err != io.EOF { + t.Errorf("Expected EOF, got: %v", err) + } +} + +func TestWriteRequest(t *testing.T) { + req := &pb.AnalyzeRequest{ + RequestId: "test-id", + RepoPath: "/path/to/repo", + Config: &pb.AnalyzerConfig{ + ResolveMavenDependencies: true, + M2RepositoryPath: "/home/user/.m2/repository", + }, + } + + buf := &bytes.Buffer{} + writer := NewProtocolWriter(buf) + if err := writer.WriteRequest(req); err != nil { + t.Fatalf("Failed to write: %v", err) + } + + if buf.Len() == 0 { + t.Error("Buffer should not be empty") + } + + // 读回去确认外层包装类型正确 + reader := NewProtocolReader(buf) + outer, err := reader.ReadMessage() + if err != nil { + t.Fatalf("Failed to read back: %v", err) + } + if outer.Type != pb.TYPE_ANALYZE_REQUEST { + t.Fatalf("Unexpected outer type: %s", outer.Type) + } + gotReq := outer.GetAnalyzeRequest() + if gotReq == nil { + t.Fatalf("Expected analyze request payload") + } + if gotReq.RequestId != req.RequestId { + t.Fatalf("RequestId mismatch: got %s, want %s", gotReq.RequestId, req.RequestId) + } +} + +func TestEmptyStream(t *testing.T) { + buf := &bytes.Buffer{} + reader := NewProtocolReader(buf) + + _, err := reader.ReadMessage() + if err != io.EOF { + t.Errorf("Expected EOF, got: %v", err) + } +} diff --git a/lang/java/ipc/server.go b/lang/java/ipc/server.go new file mode 100644 index 00000000..f0e29ec0 --- /dev/null +++ b/lang/java/ipc/server.go @@ -0,0 +1,392 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ipc + +import ( + "context" + "fmt" + "io" + "log" + "net" + "os" + "os/exec" + "path/filepath" + "sync" + "time" + + "github.com/cloudwego/abcoder/lang/java/pb" + "github.com/google/uuid" +) + +const ( + // DefaultSocketDir is the default directory for Unix Domain Socket files + DefaultSocketDir = "/tmp" + + // DefaultConnectTimeout is the timeout for Java process to connect + DefaultConnectTimeout = 30 * time.Second + + // DefaultReadTimeout is the timeout for reading individual messages + DefaultReadTimeout = 5 * time.Minute +) + +// ServerConfig holds configuration for the Java Parser server +type ServerConfig struct { + // JarPath is the path to the Java Parser JAR file + JarPath string + + // JavaHome is the path to Java installation (optional) + JavaHome string + + // SocketDir is the directory for Unix Domain Socket files + SocketDir string + + // ConnectTimeout is the timeout for Java process to connect + ConnectTimeout time.Duration + + // ReadTimeout is the timeout for reading messages + ReadTimeout time.Duration + + // Debug enables debug logging + Debug bool +} + +// DefaultConfig returns a default server configuration +func DefaultConfig() *ServerConfig { + return &ServerConfig{ + SocketDir: DefaultSocketDir, + ConnectTimeout: DefaultConnectTimeout, + ReadTimeout: DefaultReadTimeout, + Debug: false, + } +} + +// JavaParserServer manages the Java Parser subprocess and IPC communication +type JavaParserServer struct { + config *ServerConfig + socketPath string + listener *net.UnixListener + javaCmd *exec.Cmd + conn *net.UnixConn + + mu sync.Mutex + running bool + stopOnce sync.Once +} + +// NewJavaParserServer creates a new Java Parser server with the given configuration +func NewJavaParserServer(config *ServerConfig) *JavaParserServer { + if config == nil { + config = DefaultConfig() + } + return &JavaParserServer{ + config: config, + } +} + +// Start initializes the UDS listener and starts the Java subprocess. +func (s *JavaParserServer) Start(ctx context.Context, repoPath string, analyzerConfig *pb.AnalyzerConfig) (<-chan *pb.AnalyzeResponse, error) { + s.mu.Lock() + if s.running { + s.mu.Unlock() + return nil, fmt.Errorf("server is already running") + } + s.running = true + s.mu.Unlock() + + // Step 1: Create Unix Domain Socket listener + if err := s.createSocketListener(); err != nil { + s.cleanup() + return nil, fmt.Errorf("failed to create socket listener: %w", err) + } + + // Step 2: Start Java subprocess + if err := s.startJavaProcess(ctx); err != nil { + s.cleanup() + return nil, fmt.Errorf("failed to start Java process: %w", err) + } + + // Step 3: Accept connection from Java process + if err := s.acceptConnection(ctx); err != nil { + s.cleanup() + return nil, fmt.Errorf("failed to accept connection: %w", err) + } + + // Step 4: Send analyze request + if err := s.sendAnalyzeRequest(repoPath, analyzerConfig); err != nil { + s.cleanup() + return nil, fmt.Errorf("failed to send analyze request: %w", err) + } + + // Step 5: Start reading responses in a goroutine + responseChan := make(chan *pb.AnalyzeResponse, 100) + go s.readResponses(ctx, responseChan) + + return responseChan, nil +} + +// createSocketListener creates a Unix Domain Socket listener +func (s *JavaParserServer) createSocketListener() error { + // Generate unique socket path + socketName := fmt.Sprintf("java-parser-%s.sock", uuid.New().String()[:8]) + s.socketPath = filepath.Join(s.config.SocketDir, socketName) + + // Remove existing socket file if present + if err := os.Remove(s.socketPath); err != nil && !os.IsNotExist(err) { + return fmt.Errorf("failed to remove existing socket file: %w", err) + } + + // Create Unix Domain Socket listener + addr := &net.UnixAddr{Name: s.socketPath, Net: "unix"} + listener, err := net.ListenUnix("unix", addr) + if err != nil { + return fmt.Errorf("failed to create Unix socket listener: %w", err) + } + + s.listener = listener + + // Always log socket path + log.Printf("[JavaParserServer] Socket listener created at %s", s.socketPath) + + return nil +} + +// startJavaProcess starts the Java Parser JAR as a subprocess +func (s *JavaParserServer) startJavaProcess(ctx context.Context) error { + // Determine Java command + javaCmd := "java" + if s.config.JavaHome != "" { + javaCmd = filepath.Join(s.config.JavaHome, "bin", "java") + } + + // Build command arguments + args := []string{ + "-jar", s.config.JarPath, + "--uds", s.socketPath, + } + + // Create command with context for cancellation + s.javaCmd = exec.CommandContext(ctx, javaCmd, args...) + + // Redirect stdout and stderr to Go's console for debugging + s.javaCmd.Stdout = os.Stdout + s.javaCmd.Stderr = os.Stderr + + // Start the Java process + if err := s.javaCmd.Start(); err != nil { + return fmt.Errorf("failed to start Java process: %w", err) + } + + if s.config.Debug { + log.Printf("[JavaParserServer] Java process started with PID %d", s.javaCmd.Process.Pid) + } + + // Monitor process in background + go func() { + if err := s.javaCmd.Wait(); err != nil { + if s.config.Debug { + log.Printf("[JavaParserServer] Java process exited: %v", err) + } + } + }() + + return nil +} + +// acceptConnection waits for the Java process to connect +func (s *JavaParserServer) acceptConnection(ctx context.Context) error { + // Set accept deadline + deadline := time.Now().Add(s.config.ConnectTimeout) + if err := s.listener.SetDeadline(deadline); err != nil { + return fmt.Errorf("failed to set listener deadline: %w", err) + } + + // Accept connection + conn, err := s.listener.AcceptUnix() + if err != nil { + select { + case <-ctx.Done(): + return ctx.Err() + default: + return fmt.Errorf("failed to accept connection: %w", err) + } + } + + s.conn = conn + + if s.config.Debug { + log.Printf("[JavaParserServer] Connection accepted from Java process") + } + + return nil +} + +// sendAnalyzeRequest sends the analyze request to the Java process +func (s *JavaParserServer) sendAnalyzeRequest(repoPath string, config *pb.AnalyzerConfig) error { + if config == nil { + config = &pb.AnalyzerConfig{} + } + + request := &pb.AnalyzeRequest{ + RequestId: uuid.New().String(), + RepoPath: repoPath, + Config: config, + } + + writer := NewProtocolWriter(s.conn) + writer.SetDebug(true) // Enable debug logging for sent messages + if err := writer.WriteRequest(request); err != nil { + return fmt.Errorf("failed to write analyze request: %w", err) + } + + log.Printf("[JavaParserServer] Analyze request sent for repo: %s", repoPath) + + return nil +} + +// readResponses reads responses from the Java process and sends them to the channel +func (s *JavaParserServer) readResponses(ctx context.Context, responseChan chan<- *pb.AnalyzeResponse) { + defer close(responseChan) + defer s.cleanup() + + reader := NewProtocolReader(s.conn) + reader.SetDebug(true) // Enable debug logging for received messages + + for { + select { + case <-ctx.Done(): + if s.config.Debug { + log.Printf("[JavaParserServer] Context cancelled, stopping response reader") + } + return + default: + } + + // Set read deadline + if s.config.ReadTimeout > 0 { + if err := s.conn.SetReadDeadline(time.Now().Add(s.config.ReadTimeout)); err != nil { + log.Printf("[JavaParserServer] Failed to set read deadline: %v", err) + } + } + + // Read next message + outer, err := reader.ReadMessage() + if err != nil { + if err == io.EOF { + if s.config.Debug { + log.Printf("[JavaParserServer] End of stream reached") + } + return + } + + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + log.Printf("[JavaParserServer] Read timeout, continuing...") + continue + } + + log.Printf("[JavaParserServer] Error reading message: %v", err) + return + } + + // 只处理 analyze_response,其它消息(heartbeat/stop 等)忽略 + if outer == nil || outer.Type != pb.TYPE_ANALYZE_RESPONSE { + continue + } + resp := outer.GetAnalyzeResponse() + if resp == nil { + continue + } + + // Send message to channel + select { + case responseChan <- resp: + if s.config.Debug { + if prog := resp.GetProgress(); prog != nil { + log.Printf("[JavaParserServer] Progress: %d%% - %s", prog.Percentage, prog.Message) + } + } + + // Check for summary (indicates completion) + if sum := resp.GetSummary(); sum != nil { + if s.config.Debug { + log.Printf("[JavaParserServer] Analysis complete: %d classes, %d files in %dms", + sum.LocalClassCount, sum.FileCount, sum.TotalTimeMs) + } + return + } + + // Check for errors + if errInfo := resp.GetError(); errInfo != nil { + code := string(errInfo.Code) + if code == "" { + code = "unknown" + } + log.Printf("[JavaParserServer] Error from Java parser: %s - %s", code, errInfo.Message) + } + + case <-ctx.Done(): + return + } + } +} + +// Stop gracefully stops the server and cleans up resources +func (s *JavaParserServer) Stop() { + s.stopOnce.Do(func() { + s.cleanup() + }) +} + +// cleanup releases all resources +func (s *JavaParserServer) cleanup() { + s.mu.Lock() + defer s.mu.Unlock() + + if s.conn != nil { + s.conn.Close() + s.conn = nil + } + + if s.listener != nil { + s.listener.Close() + s.listener = nil + } + + if s.socketPath != "" { + os.Remove(s.socketPath) + } + + if s.javaCmd != nil && s.javaCmd.Process != nil { + s.javaCmd.Process.Kill() + s.javaCmd = nil + } + + s.running = false + + if s.config.Debug { + log.Printf("[JavaParserServer] Cleanup complete") + } +} + +// GetSocketPath returns the current socket path +func (s *JavaParserServer) GetSocketPath() string { + return s.socketPath +} + +// IsRunning returns whether the server is currently running +func (s *JavaParserServer) IsRunning() bool { + s.mu.Lock() + defer s.mu.Unlock() + return s.running +} diff --git a/lang/java/ipc/server_test.go b/lang/java/ipc/server_test.go new file mode 100644 index 00000000..23751c65 --- /dev/null +++ b/lang/java/ipc/server_test.go @@ -0,0 +1,379 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ipc + +import ( + "context" + "net" + "os" + "strings" + "testing" + "time" + + "github.com/cloudwego/abcoder/lang/java/pb" +) + +func TestServerConfig(t *testing.T) { + config := DefaultConfig() + + if config.SocketDir != DefaultSocketDir { + t.Errorf("Expected SocketDir %s, got %s", DefaultSocketDir, config.SocketDir) + } + + if config.ConnectTimeout != DefaultConnectTimeout { + t.Errorf("Expected ConnectTimeout %v, got %v", DefaultConnectTimeout, config.ConnectTimeout) + } + + if config.ReadTimeout != DefaultReadTimeout { + t.Errorf("Expected ReadTimeout %v, got %v", DefaultReadTimeout, config.ReadTimeout) + } +} + +func TestNewJavaParserServer(t *testing.T) { + config := &ServerConfig{ + JarPath: "/path/to/parser.jar", + JavaHome: "/path/to/java", + SocketDir: "/tmp", + ConnectTimeout: 10 * time.Second, + Debug: true, + } + + server := NewJavaParserServer(config) + + if server == nil { + t.Fatal("Server should not be nil") + } + + if server.config.JarPath != config.JarPath { + t.Errorf("JarPath mismatch") + } + + if server.IsRunning() { + t.Error("Server should not be running initially") + } +} + +func TestNewJavaParserServerWithNilConfig(t *testing.T) { + server := NewJavaParserServer(nil) + + if server == nil { + t.Fatal("Server should not be nil") + } + + if server.config == nil { + t.Fatal("Default config should be set") + } + + if server.config.SocketDir != DefaultSocketDir { + t.Errorf("Expected default SocketDir") + } +} + +func TestSocketCreation(t *testing.T) { + config := &ServerConfig{ + SocketDir: os.TempDir(), + } + + server := NewJavaParserServer(config) + + // Call the internal method to create socket + err := server.createSocketListener() + if err != nil { + t.Fatalf("Failed to create socket listener: %v", err) + } + + // Check that socket file was created + socketPath := server.GetSocketPath() + if socketPath == "" { + t.Fatal("Socket path should be set") + } + + // Verify it's a valid unix socket path + if !strings.HasPrefix(socketPath, os.TempDir()) { + t.Errorf("Socket should be in temp dir, got: %s", socketPath) + } + + // Clean up + server.cleanup() + + // Verify socket file is removed + if _, err := os.Stat(socketPath); !os.IsNotExist(err) { + t.Error("Socket file should be removed after cleanup") + } +} + +func TestServerStartWithoutJar(t *testing.T) { + config := &ServerConfig{ + JarPath: "/nonexistent/path/to/parser.jar", + SocketDir: os.TempDir(), + ConnectTimeout: 100 * time.Millisecond, + } + + server := NewJavaParserServer(config) + ctx := context.Background() + + // This should fail because the JAR doesn't exist + _, err := server.Start(ctx, "/test/repo", nil) + if err == nil { + t.Error("Expected error when JAR doesn't exist") + server.Stop() + } +} + +func TestServerDoubleStart(t *testing.T) { + config := &ServerConfig{ + SocketDir: os.TempDir(), + } + + server := NewJavaParserServer(config) + + // Manually set running to true to simulate a running server + server.mu.Lock() + server.running = true + server.mu.Unlock() + + ctx := context.Background() + _, err := server.Start(ctx, "/test/repo", nil) + + if err == nil { + t.Error("Expected error when starting already running server") + } + + // Clean up + server.mu.Lock() + server.running = false + server.mu.Unlock() +} + +func TestServerCleanup(t *testing.T) { + config := &ServerConfig{ + SocketDir: os.TempDir(), + } + + server := NewJavaParserServer(config) + + // Create socket + err := server.createSocketListener() + if err != nil { + t.Fatalf("Failed to create socket: %v", err) + } + + socketPath := server.GetSocketPath() + + // Verify socket exists + if _, err := os.Stat(socketPath); err != nil { + t.Fatalf("Socket should exist: %v", err) + } + + // Call Stop + server.Stop() + + // Verify cleanup + if server.IsRunning() { + t.Error("Server should not be running after Stop") + } + + if _, err := os.Stat(socketPath); !os.IsNotExist(err) { + t.Error("Socket file should be removed after Stop") + } +} + +func TestServerStopIdempotent(t *testing.T) { + config := &ServerConfig{ + SocketDir: os.TempDir(), + } + + server := NewJavaParserServer(config) + + // Create socket + server.createSocketListener() + + // Stop multiple times - should not panic + server.Stop() + server.Stop() + server.Stop() +} + +// TestMockJavaConnection tests the server with a mock Java client +func TestMockJavaConnection(t *testing.T) { + config := &ServerConfig{ + SocketDir: os.TempDir(), + ConnectTimeout: 5 * time.Second, + ReadTimeout: 5 * time.Second, + Debug: true, + } + + server := NewJavaParserServer(config) + + // Create socket listener + err := server.createSocketListener() + if err != nil { + t.Fatalf("Failed to create socket: %v", err) + } + + socketPath := server.GetSocketPath() + defer server.Stop() + + // Simulate Java client connecting in a goroutine + clientDone := make(chan error, 1) + go func() { + // Give server time to start listening + time.Sleep(100 * time.Millisecond) + + // Connect to the socket + conn, err := net.Dial("unix", socketPath) + if err != nil { + clientDone <- err + return + } + defer conn.Close() + + // Read the request from the server (outer message) + reader := NewProtocolReader(conn) + _, _ = reader.ReadMessage() // server 会先发 analyze_request,这里读掉即可 + + // Write some responses back + writer := NewProtocolWriter(conn) + + // Send progress update + progress := &pb.AnalyzeResponse{ + RequestId: "test-request", + PayloadType: pb.PAYLOAD_PROGRESS, + Payload: &pb.ProgressUpdate{ + Percentage: 50, + Phase: "parsing", + }, + } + if err := writer.WriteResponse(progress); err != nil { + clientDone <- err + return + } + + // Send class info + classInfo := &pb.AnalyzeResponse{ + RequestId: "test-request", + PayloadType: pb.PAYLOAD_CLASS_INFO, + Payload: &pb.ClassInfo{ + ClassName: "com.example.Test", + FilePath: "src/main/java/com/example/Test.java", + ClassType: pb.ClassType_CLASS_TYPE_CLASS, + }, + } + if err := writer.WriteResponse(classInfo); err != nil { + clientDone <- err + return + } + + // Send summary to indicate completion + summary := &pb.AnalyzeResponse{ + RequestId: "test-request", + PayloadType: pb.PAYLOAD_SUMMARY, + Payload: &pb.Summary{ + Success: true, + LocalClassCount: 1, + TotalTimeMs: 100, + }, + } + if err := writer.WriteResponse(summary); err != nil { + clientDone <- err + return + } + + clientDone <- nil + + }() + + // Accept connection on server side + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + err = server.acceptConnection(ctx) + if err != nil { + t.Fatalf("Failed to accept connection: %v", err) + } + + // Send request + err = server.sendAnalyzeRequest("/test/repo", &pb.AnalyzerConfig{}) + if err != nil { + t.Fatalf("Failed to send request: %v", err) + } + + // Read responses + responseChan := make(chan *pb.AnalyzeResponse, 10) + go server.readResponses(ctx, responseChan) + + // Collect responses + var responses []*pb.AnalyzeResponse + for resp := range responseChan { + responses = append(responses, resp) + } + + // Wait for client to finish + select { + case err := <-clientDone: + if err != nil { + t.Fatalf("Client error: %v", err) + } + case <-time.After(5 * time.Second): + t.Fatal("Client timed out") + } + + // Verify responses + if len(responses) != 3 { + t.Errorf("Expected 3 responses, got %d", len(responses)) + } + + // Check response types + if len(responses) >= 1 { + if responses[0].GetProgress() == nil { + t.Error("First response should be progress") + } + } + if len(responses) >= 2 { + if responses[1].GetClassInfo() == nil { + t.Error("Second response should be class info") + } + } + if len(responses) >= 3 { + if responses[2].GetSummary() == nil { + t.Error("Third response should be summary") + } + } +} + +func TestAnalyzerConfigConversion(t *testing.T) { + config := &pb.AnalyzerConfig{ + ResolveMavenDependencies: true, + M2RepositoryPath: "/home/user/.m2/repository", + ExtraJarPaths: []string{"/lib/extra.jar"}, + IncludeExternalClasses: true, + } + + if !config.ResolveMavenDependencies { + t.Error("ResolveMavenDependencies should be true") + } + + if config.M2RepositoryPath != "/home/user/.m2/repository" { + t.Errorf("Unexpected M2RepositoryPath: %s", config.M2RepositoryPath) + } + + if len(config.ExtraJarPaths) != 1 { + t.Errorf("Expected 1 extra jar path, got %d", len(config.ExtraJarPaths)) + } + + if !config.IncludeExternalClasses { + t.Error("IncludeExternalClasses should be true") + } +} diff --git a/lang/java/lib_ipc.go b/lang/java/lib_ipc.go new file mode 100644 index 00000000..364b08fb --- /dev/null +++ b/lang/java/lib_ipc.go @@ -0,0 +1,132 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package java + +import ( + "context" + "fmt" + "log" + "os" + "path/filepath" + "time" + + "github.com/cloudwego/abcoder/lang/java/ipc" + "github.com/cloudwego/abcoder/lang/java/pb" +) + +const ( + MaxWaitDuration = 5 * time.Second + + // Java Parser JAR configuration + javaParserVersion = "1.0.0" + javaParserJarName = "java-parser.jar" + + // Legacy JDTLS configuration (deprecated) + jdtlsVersion = "1.39.0-202408291433" + jdtlsURL = "https://download.eclipse.org/jdtls/milestones/1.39.0/jdt-language-server-1.39.0-202408291433.tar.gz" +) + +// ParserConfig holds configuration for the Java Parser +type ParserConfig struct { + // JarPath is the explicit path to the Java Parser JAR + // If empty, will look for the JAR in standard locations + JarPath string + + // JavaHome is the path to Java installation + // If empty, uses system default + JavaHome string + + // ResolveMavenDependencies enables Maven dependency resolution + ResolveMavenDependencies bool + + // M2RepositoryPath is the path to Maven local repository + // If empty, uses default ~/.m2/repository + M2RepositoryPath string + + // ExtraJarPaths are additional JAR files to include in analysis + ExtraJarPaths []string + + // IncludeExternalClasses includes external class information in results + IncludeExternalClasses bool + + // Debug enables verbose logging + Debug bool + + // Timeout for the entire analysis + Timeout time.Duration +} + +// DefaultParserConfig returns a default parser configuration +func DefaultParserConfig() *ParserConfig { + jarPath := os.Getenv("JAVA_PARSER_JAR_PATH") + if jarPath == "" { + panic("JAVA_PARSER_JAR_PATH environment variable is required for Java Parser") + } + + return &ParserConfig{ + ResolveMavenDependencies: true, + IncludeExternalClasses: false, + Debug: false, + JarPath: jarPath, + Timeout: 60 * time.Minute, + } +} + +func ParseRepositoryByIpc(ctx context.Context, repoPath string, config *ParserConfig) (*ipc.Converter, error) { + if config == nil { + config = DefaultParserConfig() + } + + // Create IPC server configuration + serverConfig := ipc.DefaultConfig() + if config.JarPath != "" { + serverConfig.JarPath = config.JarPath + } + serverConfig.JavaHome = config.JavaHome + serverConfig.Debug = config.Debug + + if config.Timeout > 0 { + serverConfig.ReadTimeout = config.Timeout + } + + // Create analyzer config + analyzerConfig := &pb.AnalyzerConfig{ + ResolveMavenDependencies: config.ResolveMavenDependencies, + M2RepositoryPath: config.M2RepositoryPath, + ExtraJarPaths: config.ExtraJarPaths, + IncludeExternalClasses: config.IncludeExternalClasses, + } + + // Create server and start analysis + server := ipc.NewJavaParserServer(serverConfig) + defer server.Stop() + + responseChan, err := server.Start(ctx, repoPath, analyzerConfig) + if err != nil { + return nil, fmt.Errorf("failed to start Java Parser: %w", err) + } + + // Convert responses to UniAST + moduleName := filepath.Base(repoPath) + converter := ipc.NewConverter(repoPath, moduleName) + + for resp := range responseChan { + if err := converter.ProcessResponse(resp); err != nil { + log.Printf("Warning: error processing response: %v", err) + } + } + + return converter, nil +} diff --git a/lang/java/lsp/client_test.go b/lang/java/lsp/client_test.go deleted file mode 100644 index e5d1387e..00000000 --- a/lang/java/lsp/client_test.go +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright 2025 CloudWeGo Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package lsp - -import ( - "context" - "fmt" - "github.com/cloudwego/abcoder/lang/uniast" - "strings" - "testing" - "time" - - "github.com/cloudwego/abcoder/lang/java" - "github.com/cloudwego/abcoder/lang/lsp" - "github.com/stretchr/testify/require" -) - -// TestJavaLSPConnection demonstrates connecting to an external Java LSP server. -func TestJavaLSPConnection(t *testing.T) { - - projectRoot := "../../../testdata/java/0_simple" - ctx := context.Background() - - openfile, wait := java.CheckRepo(projectRoot) - l, s := java.GetDefaultLSP(make(map[string]string)) - lsp.RegisterProvider(uniast.Java, &JavaProvider{}) - - lspClient, err := lsp.NewLSPClient(projectRoot, openfile, wait, lsp.ClientOptions{ - Server: s, - Language: l, - Verbose: false, - }) - if err != nil { - t.Fatalf("init lspclient failed = %v\n", err) - } - - // --- Step 1 & 2: Connect and initialize the LSP client --- - require.NoError(t, err, "Failed to initialize LSP client") - - lspClient.InitFiles() - - // --- Step 3: Open the document to prepare for analysis --- - fileToAnalyze := "../../../testdata/java/0_simple/HelloWorld.java" - fileURI := lsp.NewURI(fileToAnalyze) - - _, err = lspClient.DidOpen(ctx, fileURI) - require.NoError(t, err, "textDocument/didOpen notification failed") - - // --- Step 4: Send the 'textDocument/documentSymbol' request to get the syntax tree --- - symbols, err := lspClient.DocumentSymbols(ctx, fileURI) - require.NoError(t, err, "textDocument/documentSymbol request failed") - - // --- Step 5: Process and print the response --- - require.NotEmpty(t, symbols, "Expected to receive symbols, but got none") - - fmt.Println("Successfully retrieved document symbols for HelloWorld.java:") - for k, s := range symbols { - printSymbol(k, s, 0) - } - - // --- Step 6: Send the 'textDocument/hover' request to get method type info --- - hoverResult, err := lspClient.Hover(ctx, fileURI, 11, 25) - require.NoError(t, err, "textDocument/hover request failed") - - fmt.Println("\n--- Hover Result for testFunction ---") - require.NotEmpty(t, hoverResult.Contents, "Expected hover to have content") - fmt.Printf("Hover Content: %s\n", hoverResult.Contents[0].Value) - fmt.Println("-------------------------------------") -} - -// printSymbol is a helper to recursively print the symbol structure. -func printSymbol(r lsp.Range, symbol *lsp.DocumentSymbol, indentLevel int) { - indent := "" - for i := 0; i < indentLevel; i++ { - indent += " " - } - fmt.Printf("%s- Name: %s, Kind: %s\n", indent, symbol.Name, symbol.Kind) - for _, child := range symbol.Children { - printSymbol(r, child, indentLevel+1) - } -} - -// findSymbolByName recursively finds a symbol by name in a list of document symbols. -func findSymbolByName(symbols []*lsp.DocumentSymbol, name string) *lsp.DocumentSymbol { - for _, s := range symbols { - if s.Name == name { - return s - } - if child := findSymbolByName(s.Children, name); child != nil { - return child - } - } - return nil -} - -func TestJavaLSPSemanticFeatures(t *testing.T) { - projectRoot := "../../../testdata/java/1_advanced" // New project root - ctx := context.Background() - - openfile, wait := java.CheckRepo(projectRoot) - l, s := java.GetDefaultLSP(make(map[string]string)) - lsp.RegisterProvider(uniast.Java, &JavaProvider{}) - - lspClient, err := lsp.NewLSPClient(projectRoot, openfile, wait, lsp.ClientOptions{ - Server: s, - Language: l, - Verbose: true, - }) - if err != nil { - t.Fatalf("init lspclient failed = %v\n", err) - } - - // --- Step 1 & 2: Connect and initialize the LSP client --- - require.NoError(t, err, "Failed to initialize LSP client") - // lspClient.SetVerbose(true) - lspClient.InitFiles() - - // --- Step 3: Open all relevant documents to make them known to the LSP server --- - animalFile := "../../../testdata/java/1_advanced/src/main/java/org/example/Animal.java" - dogFile := "../../../testdata/java/1_advanced/src/main/java/org/example/Dog.java" - catFile := "../../../testdata/java/1_advanced/src/main/java/org/example/Cat.java" - - animalURI := lsp.NewURI(animalFile) - dogURI := lsp.NewURI(dogFile) - catURI := lsp.NewURI(catFile) - - _, err = lspClient.DidOpen(ctx, animalURI) - require.NoError(t, err, "textDocument/didOpen failed for Animal.java") - _, err = lspClient.DidOpen(ctx, dogURI) - require.NoError(t, err, "textDocument/didOpen failed for Dog.java") - _, err = lspClient.DidOpen(ctx, catURI) - require.NoError(t, err, "textDocument/didOpen failed for Cat.java") - - // Allow time for the LSP server to index the files before querying. - time.Sleep(2 * time.Second) - - // --- Step 5: Test 'textDocument/implementation' to find implementations of Animal --- - animalSymbolsMap, err := lspClient.DocumentSymbols(ctx, animalURI) - require.NoError(t, err, "textDocument/documentSymbol request failed for Animal.java") - require.NotEmpty(t, animalSymbolsMap, "Expected to find symbols in Animal.java") - - var animalSymbols []*lsp.DocumentSymbol - for _, s := range animalSymbolsMap { - animalSymbols = append(animalSymbols, s) - } - - animalInterfaceSymbol := findSymbolByName(animalSymbols, "Animal") - require.NotNil(t, animalInterfaceSymbol, "Could not find 'Animal' interface symbol") - - implementations, err := lspClient.Implementation(ctx, animalURI, animalInterfaceSymbol.Location.Range.Start) - require.NoError(t, err, "textDocument/implementation request failed") - require.Len(t, implementations, 2, "Expected to find 2 implementations of Animal interface") - - fmt.Println("\n--- Found 2 implementations for interface 'Animal' ---") - var foundDog, foundCat bool - for _, impl := range implementations { - if strings.HasSuffix(string(impl.URI), "Dog.java") { - foundDog = true - } - if strings.HasSuffix(string(impl.URI), "Cat.java") { - foundCat = true - } - } - require.True(t, foundDog, "Did not find implementation in Dog.java") - require.True(t, foundCat, "Did not find implementation in Cat.java") - fmt.Println("---------------------------------------------------------") - - // --- Step 6: Test 'textDocument/definition' for a cross-file scenario --- - // This part remains the same, as it verifies that we can still go from an implementation to the definition. - // We will find the definition of `makeSound` from the `Dog` class implementation. - - // First, find the position of the 'makeSound' method in Dog.java using FileStructure - dogSymbols2, err := lspClient.FileStructure(ctx, dogURI) - require.NoError(t, err, "FileStructure request failed for Dog.java") - makeSoundInDogSymbol := findSymbolByName(dogSymbols2, "makeSound()") - require.NotNil(t, makeSoundInDogSymbol, "Could not find 'makeSound' method in 'Dog' class") - -} - -func TestJavaLSPInheritanceFeatures(t *testing.T) { - projectRoot := "../../../testdata/java/2_inheritance" - ctx := context.Background() - - openfile, wait := java.CheckRepo(projectRoot) - l, s := java.GetDefaultLSP(make(map[string]string)) - lsp.RegisterProvider(uniast.Java, &JavaProvider{}) - - lspClient, err := lsp.NewLSPClient(projectRoot, openfile, wait, lsp.ClientOptions{ - Server: s, - Language: l, - Verbose: false, - }) - if err != nil { - t.Fatalf("init lspclient failed = %v\n", err) - } - - require.NoError(t, err, "Failed to initialize LSP client") - // lspClient.SetVerbose(true) - - lspClient.InitFiles() - - shapeFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Shape.java" - circleFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Circle.java" - rectangleFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Rectangle.java" - - shapeURI := lsp.NewURI(shapeFile) - circleURI := lsp.NewURI(circleFile) - rectangleURI := lsp.NewURI(rectangleFile) - - _, err = lspClient.DidOpen(ctx, shapeURI) - require.NoError(t, err, "textDocument/didOpen failed for Shape.java") - _, err = lspClient.DidOpen(ctx, circleURI) - require.NoError(t, err, "textDocument/didOpen failed for Circle.java") - _, err = lspClient.DidOpen(ctx, rectangleURI) - require.NoError(t, err, "textDocument/didOpen failed for Rectangle.java") - - time.Sleep(2 * time.Second) - - // --- Step 1: Test 'textDocument/references' for the abstract method --- - shapeSymbols, err := lspClient.FileStructure(ctx, shapeURI) - require.NoError(t, err, "FileStructure request failed for Shape.java") - drawMethodSymbol := findSymbolByName(shapeSymbols, "draw()") - require.NotNil(t, drawMethodSymbol, "Could not find 'draw' method in 'Shape' class") - - references, err := lspClient.References(ctx, drawMethodSymbol.Location) - require.NoError(t, err, "textDocument/references request failed") - require.Len(t, references, 3, "Expected to find 3 references to draw(), including the declaration") - - fmt.Println("\n--- Found 3 references for abstract method 'draw()' ---") - - var foundCircle, foundRectangle, foundShape bool - for _, ref := range references { - if strings.HasSuffix(string(ref.URI), "Circle.java") { - foundCircle = true - } - if strings.HasSuffix(string(ref.URI), "Rectangle.java") { - foundRectangle = true - } - if strings.HasSuffix(string(ref.URI), "Shape.java") { - foundShape = true - } - } - require.True(t, foundCircle, "Did not find reference in Circle.java") - require.True(t, foundRectangle, "Did not find reference in Rectangle.java") - require.True(t, foundShape, "Did not find reference in Shape.java") - - // --- Step 2: Test 'textDocument/definition' from implementation to abstract class --- - circleSymbols, err := lspClient.FileStructure(ctx, circleURI) - require.NoError(t, err, "FileStructure request failed for Circle.java") - drawInCircleSymbol := findSymbolByName(circleSymbols, "draw()") - require.NotNil(t, drawInCircleSymbol, "Could not find 'draw' method in 'Circle' class") - - // --- Step 3: Test 'textDocument/typeDefinition' on a class instance --- - circleSymbolsForType, err := lspClient.FileStructure(ctx, circleURI) - require.NoError(t, err, "FileStructure request failed for Circle.java") - circleClassSymbol := findSymbolByName(circleSymbolsForType, "Circle") - require.NotNil(t, circleClassSymbol, "Could not find 'Circle' class symbol") - - typeDefinitionResult, err := lspClient.TypeDefinition(ctx, circleURI, circleClassSymbol.Location.Range.Start) - require.NoError(t, err, "textDocument/typeDefinition request failed") - require.NotEmpty(t, typeDefinitionResult, "Expected a type definition result") - typeDefinition := typeDefinitionResult[0] - require.True(t, strings.HasSuffix(string(typeDefinition.URI), "Circle.java"), "Type definition should be in Circle.java") - - fmt.Println("\n--- Go to Type Definition Result for Circle ---") - fmt.Printf("Type Definition found at: %s, Line: %d\n", typeDefinition.URI, typeDefinition.Range.Start.Line+1) -} - -func TestJavaLSPTypeHierarchy(t *testing.T) { - projectRoot := "../../../testdata/java/2_inheritance" - ctx := context.Background() - - openfile, wait := java.CheckRepo(projectRoot) - l, s := java.GetDefaultLSP(make(map[string]string)) - lsp.RegisterProvider(uniast.Java, &JavaProvider{}) - - lspClient, err := lsp.NewLSPClient(projectRoot, openfile, wait, lsp.ClientOptions{ - Server: s, - Language: l, - Verbose: false, - }) - if err != nil { - t.Fatalf("init lspclient failed = %v\n", err) - } - require.NoError(t, err, "Failed to initialize LSP client") - // lspClient.SetVerbose(true) - - lspClient.InitFiles() - - shapeFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Shape.java" - circleFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Circle.java" - rectangleFile := "../../../testdata/java/2_inheritance/src/main/java/org/example/Rectangle.java" - - shapeURI := lsp.NewURI(shapeFile) - circleURI := lsp.NewURI(circleFile) - rectangleURI := lsp.NewURI(rectangleFile) - - _, err = lspClient.DidOpen(ctx, shapeURI) - require.NoError(t, err, "textDocument/didOpen failed for Shape.java") - _, err = lspClient.DidOpen(ctx, circleURI) - require.NoError(t, err, "textDocument/didOpen failed for Circle.java") - _, err = lspClient.DidOpen(ctx, rectangleURI) - require.NoError(t, err, "textDocument/didOpen failed for Rectangle.java") - - time.Sleep(2 * time.Second) - - // --- Step 1: Test 'typeHierarchy/subtypes' for Shape --- - shapeSymbols, err := lspClient.FileStructure(ctx, shapeURI) - require.NoError(t, err, "FileStructure request failed for Shape.java") - shapeSymbol := findSymbolByName(shapeSymbols, "Shape") - require.NotNil(t, shapeSymbol, "Could not find 'Shape' class symbol") - - // Prepare the type hierarchy - shapeItems, err := lspClient.PrepareTypeHierarchy(ctx, shapeURI, shapeSymbol.Location.Range.Start) - require.NoError(t, err, "textDocument/prepareTypeHierarchy request failed for Shape") - require.Len(t, shapeItems, 1, "Expected one type hierarchy item for Shape") - shapeItem := shapeItems[0] - - // Get subtypes - subtypes, err := lspClient.TypeHierarchySubtypes(ctx, shapeItem) - require.NoError(t, err, "typeHierarchy/subtypes request failed") - require.Len(t, subtypes, 2, "Expected to find 2 subtypes of Shape") - - fmt.Println("\n--- Found 2 subtypes for class 'Shape' ---") - var foundCircle, foundRectangle bool - for _, child := range subtypes { - if child.Name == "Circle" { - foundCircle = true - } - if child.Name == "Rectangle" { - foundRectangle = true - } - } - require.True(t, foundCircle, "Did not find subtype Circle") - require.True(t, foundRectangle, "Did not find subtype Rectangle") - - // --- Step 2: Test 'typeHierarchy/supertypes' for Circle --- - circleSymbols, err := lspClient.FileStructure(ctx, circleURI) - require.NoError(t, err, "FileStructure request failed for Circle.java") - circleSymbol := findSymbolByName(circleSymbols, "Circle") - require.NotNil(t, circleSymbol, "Could not find 'Circle' class symbol") - - // Prepare the type hierarchy - circleItems, err := lspClient.PrepareTypeHierarchy(ctx, circleURI, circleSymbol.Location.Range.Start) - require.NoError(t, err, "textDocument/prepareTypeHierarchy request failed for Circle") - require.Len(t, circleItems, 1, "Expected one type hierarchy item for Circle") - circleItem := circleItems[0] - - // Get supertypes - supertypes, err := lspClient.TypeHierarchySupertypes(ctx, circleItem) - require.NoError(t, err, "typeHierarchy/supertypes request failed") - require.Len(t, supertypes, 1, "Expected to find 1 supertype of Circle") - - fmt.Println("\n--- Found 1 supertype for class 'Circle' ---") - require.Equal(t, "Shape", supertypes[0].Name, "Supertype of Circle should be Shape") -} diff --git a/lang/java/lib.go b/lang/java/pb/lib.go similarity index 98% rename from lang/java/lib.go rename to lang/java/pb/lib.go index df4384d7..59b5135f 100644 --- a/lang/java/lib.go +++ b/lang/java/pb/lib.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package java +package pb import ( "archive/tar" @@ -180,6 +180,10 @@ func setupJDTLS() (string, error) { } func GetDefaultLSP(LspOptions map[string]string) (lang uniast.Language, name string) { + if LspOptions["java_parser"] != "lsp" { + return uniast.Java, "" + } + return uniast.Java, generateExecuteCmd(LspOptions) } diff --git a/lang/java/pb/messages.go b/lang/java/pb/messages.go new file mode 100644 index 00000000..43ba8a28 --- /dev/null +++ b/lang/java/pb/messages.go @@ -0,0 +1,601 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package pb contains message definitions for Java Parser IPC using JSON serialization. +package pb + +// ==================== 顶层消息包装器 ==================== + +const ( + TYPE_ANALYZE_REQUEST = "analyze_request" + TYPE_ANALYZE_RESPONSE = "analyze_response" + TYPE_STOP_REQUEST = "stop_request" + TYPE_HEARTBEAT = "heartbeat" +) + +// Message 是所有 IPC JSON 消息的统一包装。 +// 说明:Java 侧会在 payload 里再嵌一层具体消息体(例如 AnalyzeResponse)。 +type Message struct { + Type string `json:"type"` + RequestId string `json:"requestId,omitempty"` + Payload interface{} `json:"payload,omitempty"` +} + +func (m *Message) GetAnalyzeRequest() *AnalyzeRequest { + if m == nil { + return nil + } + if v, ok := m.Payload.(*AnalyzeRequest); ok { + return v + } + return nil +} + +func (m *Message) GetAnalyzeResponse() *AnalyzeResponse { + if m == nil { + return nil + } + if v, ok := m.Payload.(*AnalyzeResponse); ok { + return v + } + return nil +} + +func (m *Message) GetStopRequest() *StopRequest { + if m == nil { + return nil + } + if v, ok := m.Payload.(*StopRequest); ok { + return v + } + return nil +} + +func (m *Message) GetHeartbeat() *Heartbeat { + if m == nil { + return nil + } + if v, ok := m.Payload.(*Heartbeat); ok { + return v + } + return nil +} + +// ==================== 类型枚举(JSON string) ==================== + +// ClassType enum +type ClassType string + +const ( + ClassType_CLASS_TYPE_UNKNOWN ClassType = "" + ClassType_CLASS_TYPE_CLASS ClassType = "class" + ClassType_CLASS_TYPE_INTERFACE ClassType = "interface" + ClassType_CLASS_TYPE_ENUM ClassType = "enum" + ClassType_CLASS_TYPE_ANNOTATION ClassType = "annotation" + ClassType_CLASS_TYPE_RECORD ClassType = "record" +) + +func (x ClassType) String() string { + switch x { + case ClassType_CLASS_TYPE_CLASS: + return "CLASS" + case ClassType_CLASS_TYPE_INTERFACE: + return "INTERFACE" + case ClassType_CLASS_TYPE_ENUM: + return "ENUM" + case ClassType_CLASS_TYPE_ANNOTATION: + return "ANNOTATION" + case ClassType_CLASS_TYPE_RECORD: + return "RECORD" + default: + return "UNKNOWN" + } +} + +// SourceType enum +type SourceType string + +const ( + SourceType_SOURCE_TYPE_UNKNOWN SourceType = "unknown" + SourceType_SOURCE_TYPE_LOCAL SourceType = "local" + SourceType_SOURCE_TYPE_MAVEN SourceType = "maven" + SourceType_SOURCE_TYPE_EXTERNAL_JAR SourceType = "external_jar" + SourceType_SOURCE_TYPE_JDK SourceType = "jdk" +) + +// DependencyDepth enum +type DependencyDepth string + +const ( + DependencyDepth_DEPTH_UNKNOWN DependencyDepth = "unknown" + DependencyDepth_DEPTH_LOCAL DependencyDepth = "local" + DependencyDepth_DEPTH_DIRECT DependencyDepth = "direct" + DependencyDepth_DEPTH_TRANSITIVE DependencyDepth = "transitive" + DependencyDepth_DEPTH_JDK DependencyDepth = "jdk" +) + +// DependencyKind 在新协议中为 string:import/extends/implements/field/method_param/method_return/method_call/annotation +type DependencyKind string + +const ( + DependencyKind_DEP_KIND_UNKNOWN DependencyKind = "" + DependencyKind_DEP_KIND_IMPORT DependencyKind = "import" + DependencyKind_DEP_KIND_EXTENDS DependencyKind = "extends" + DependencyKind_DEP_KIND_IMPLEMENTS DependencyKind = "implements" + DependencyKind_DEP_KIND_FIELD DependencyKind = "field" + DependencyKind_DEP_KIND_METHOD_PARAM DependencyKind = "method_param" + DependencyKind_DEP_KIND_METHOD_RETURN DependencyKind = "method_return" + DependencyKind_DEP_KIND_METHOD_CALL DependencyKind = "method_call" + DependencyKind_DEP_KIND_ANNOTATION DependencyKind = "annotation" +) + +// ErrorCode 在新协议中为 string:repo_not_found/parse_failed/config_invalid/io/timeout +type ErrorCode string + +const ( + ErrorCode_ERROR_UNKNOWN ErrorCode = "" + ErrorCode_ERROR_REPO_NOT_FOUND ErrorCode = "repo_not_found" + ErrorCode_ERROR_PARSE_FAILED ErrorCode = "parse_failed" + ErrorCode_ERROR_CONFIG_INVALID ErrorCode = "config_invalid" + ErrorCode_ERROR_IO ErrorCode = "io" + ErrorCode_ERROR_TIMEOUT ErrorCode = "timeout" +) + +// AnalyzerConfig holds configuration for the analyzer +type AnalyzerConfig struct { + ResolveMavenDependencies bool `json:"resolveMavenDependencies,omitempty"` + M2RepositoryPath string `json:"m2RepositoryPath,omitempty"` + ExtraJarPaths []string `json:"extraJarPaths,omitempty"` + IncludeExternalClasses bool `json:"includeExternalClasses,omitempty"` +} + +// AnalyzeRequest is the request message sent to Java parser +type AnalyzeRequest struct { + RequestId string `json:"requestId"` + RepoPath string `json:"repoPath"` + Config *AnalyzerConfig `json:"config,omitempty"` +} + +// StopRequest is the stop request message +type StopRequest struct { + RequestId string `json:"requestId"` +} + +// Heartbeat is heartbeat message +type Heartbeat struct { + Timestamp int64 `json:"timestamp"` +} + +// ProgressUpdate contains progress information +type ProgressUpdate struct { + Percentage int32 `json:"percentage"` + Phase string `json:"phase"` + Message string `json:"message,omitempty"` + ProcessedFiles int32 `json:"processedFiles,omitempty"` + TotalFiles int32 `json:"totalFiles,omitempty"` +} + +// FileInfo contains information about a source file +type FileInfo struct { + FilePath string `json:"filePath"` + AbsolutePath string `json:"absolutePath,omitempty"` + ClassNames []string `json:"classNames,omitempty"` + FileSize int64 `json:"fileSize,omitempty"` + LineCount int32 `json:"lineCount,omitempty"` +} + +// SourceInfo contains source information for a class +type SourceInfo struct { + Type SourceType `json:"type"` + MavenCoordinate string `json:"mavenCoordinate,omitempty"` + JarPath string `json:"jarPath,omitempty"` + Depth DependencyDepth `json:"depth,omitempty"` +} + +// DependencyInfo contains dependency information +type DependencyInfo struct { + ClassName string `json:"className"` + SourceType SourceType `json:"sourceType,omitempty"` + Depth DependencyDepth `json:"depth,omitempty"` + MavenCoordinate string `json:"mavenCoordinate,omitempty"` + Kind DependencyKind `json:"kind,omitempty"` +} + +// ==================== ClassInfo 细节结构(新协议) ==================== + +// SymbolText 表示符号原文 + 位置(用于 extends/implements 等)。 +type SymbolText struct { + Fqcn string `json:"fqcn,omitempty"` + RawText string `json:"rawText,omitempty"` + StartLine int32 `json:"startLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` +} + +// FieldDetail 字段明细。 +type FieldDetail struct { + Name string `json:"name,omitempty"` + TypeFqcn string `json:"typeFqcn,omitempty"` + TypeRawText string `json:"typeRawText,omitempty"` + RawText string `json:"rawText,omitempty"` + StartLine int32 `json:"startLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` +} + +// ReturnTypeDetail 返回值类型明细。 +type ReturnTypeDetail struct { + TypeFqcn string `json:"typeFqcn,omitempty"` + TypeRawText string `json:"typeRawText,omitempty"` + StartLine int32 `json:"startLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` +} + +// ParameterDetail 参数明细。 +type ParameterDetail struct { + Name string `json:"name,omitempty"` + TypeFqcn string `json:"typeFqcn,omitempty"` + TypeRawText string `json:"typeRawText,omitempty"` + RawText string `json:"rawText,omitempty"` + StartLine int32 `json:"startLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` +} + +// MethodDetail 方法/构造器明细。 +type MethodDetail struct { + Descriptor string `json:"descriptor,omitempty"` + RawText string `json:"rawText,omitempty"` + StartLine int32 `json:"startLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` + ReturnType *ReturnTypeDetail `json:"returnType,omitempty"` + Parameters []*ParameterDetail `json:"parameters,omitempty"` + MethodCalls []*MethodCallInfo `json:"methodCalls,omitempty"` +} + +// GetName 兼容旧 converter:优先使用 Name,否则从 Descriptor/Signature 做降级提取。 +func (m *MethodDetail) GetName() string { + if m == nil { + return "" + } + + // 可能的 descriptor 形式:"foo(int,java.lang.String)" 或 "(...)" + // 可能的 signature 形式:"public void foo(int)" + if m.Descriptor != "" { + for i := 0; i < len(m.Descriptor); i++ { + if m.Descriptor[i] == '(' { + return m.Descriptor[:i] + } + } + return m.Descriptor + } + return "" +} + +// GetStartLine 兼容旧 converter。 +func (m *MethodDetail) GetStartLine() int32 { + if m == nil { + return 0 + } + if m.StartLine != 0 { + return m.StartLine + } + return 0 +} + +// GetParameterTypes 兼容旧 converter:优先 parameters,否则返回空。 +func (m *MethodDetail) GetParameterTypes() []string { + if m == nil { + return nil + } + if len(m.Parameters) == 0 { + return nil + } + res := make([]string, 0, len(m.Parameters)) + for _, p := range m.Parameters { + if p == nil { + continue + } + if p.TypeFqcn != "" { + res = append(res, p.TypeFqcn) + } + } + return res +} + +// GetReturnType 兼容旧 converter。 +func (m *MethodDetail) GetReturnType() string { + if m == nil { + return "" + } + if m.ReturnType != nil { + return m.ReturnType.TypeFqcn + } + return "" +} + +// ClassInfo contains class information (core steaming unit) +type ClassInfo struct { + ClassName string `json:"className"` + PackageName string `json:"packageName"` + FilePath string `json:"filePath"` + ClassType ClassType `json:"classType,omitempty"` // class/interface/enum/annotation/record + Source *SourceInfo `json:"source,omitempty"` + + // 类定义原文(严格按源文件 Range 截取) + RawText string `json:"rawText,omitempty"` + + // 依赖信息 + Imports []string `json:"imports,omitempty"` + ExtendsTypes []string `json:"extendsTypes,omitempty"` + ImplementsTypes []string `json:"implementsTypes,omitempty"` + ExtendsDetails []*SymbolText `json:"extendsDetails,omitempty"` + ImplementsDetails []*SymbolText `json:"implementsDetails,omitempty"` + Fields []*FieldDetail `json:"fields,omitempty"` + Methods []*MethodDetail `json:"methods,omitempty"` + Dependencies []*DependencyInfo `json:"dependencies,omitempty"` + + // 位置信息 + StartLine int32 `json:"startLine,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + StartColumn int32 `json:"startColumn,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` + + // 旧协议兼容字段(不会在新协议中发送) + Content string `json:"content,omitempty"` +} + +// GetContent 兼容旧调用:优先 rawText。 +func (x *ClassInfo) GetContent() string { + if x == nil { + return "" + } + if x.RawText != "" { + return x.RawText + } + return x.Content +} + +// MethodCallInfo contains method call information +type MethodCallInfo struct { + CallerClass string `json:"callerClass,omitempty"` + CallerMethod string `json:"callerMethod,omitempty"` + CalleeClass string `json:"calleeClass,omitempty"` + CalleeMethod string `json:"calleeMethod,omitempty"` + ArgumentTypes []string `json:"argumentTypes,omitempty"` + ReturnType string `json:"returnType,omitempty"` + Resolved bool `json:"resolved,omitempty"` + RawText string `json:"rawText,omitempty"` + + // 位置 + FilePath string `json:"filePath,omitempty"` + Line int32 `json:"line,omitempty"` + Column int32 `json:"column,omitempty"` + EndLine int32 `json:"endLine,omitempty"` + EndColumn int32 `json:"endColumn,omitempty"` +} + +// Summary contains analysis summary +type Summary struct { + TotalTimeMs int64 `json:"totalTimeMs,omitempty"` + LocalClassCount int32 `json:"localClassCount,omitempty"` + ExternalClassCount int32 `json:"externalClassCount,omitempty"` + FileCount int32 `json:"fileCount,omitempty"` + MethodCallCount int32 `json:"methodCallCount,omitempty"` + DependencyCount int32 `json:"dependencyCount,omitempty"` + LoadTimeMs int64 `json:"loadTimeMs,omitempty"` + ParseTimeMs int64 `json:"parseTimeMs,omitempty"` + AnalyzeTimeMs int64 `json:"analyzeTimeMs,omitempty"` + Success bool `json:"success"` + Message string `json:"message,omitempty"` +} + +// ErrorInfo contains error information +type ErrorInfo struct { + Code ErrorCode `json:"code"` + Message string `json:"message"` + FilePath string `json:"filePath,omitempty"` + StackTrace string `json:"stackTrace,omitempty"` +} + +const ( + PAYLOAD_PROGRESS = "progress" + PAYLOAD_FILE_INFO = "file_info" + PAYLOAD_CLASS_INFO = "class_info" + PAYLOAD_METHOD_CALL = "method_call" + PAYLOAD_SUMMARY = "summary" + PAYLOAD_ERROR = "error" +) + +// AnalyzeResponse 是分析响应的内层消息体。 +// 外层会被 Message 包装:{"type":"analyze_response","requestId":"...","payload":{...AnalyzeResponse...}} +type AnalyzeResponse struct { + RequestId string `json:"requestId"` + PayloadType string `json:"payloadType"` // progress/file_info/class_info/method_call/summary/error + Payload interface{} `json:"payload"` +} + +func (x *AnalyzeResponse) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +func (x *AnalyzeResponse) GetProgress() *ProgressUpdate { + if x == nil || x.PayloadType != PAYLOAD_PROGRESS { + return nil + } + if v, ok := x.Payload.(*ProgressUpdate); ok { + return v + } + return nil +} + +func (x *AnalyzeResponse) GetFileInfo() *FileInfo { + if x == nil || x.PayloadType != PAYLOAD_FILE_INFO { + return nil + } + if v, ok := x.Payload.(*FileInfo); ok { + return v + } + return nil +} + +func (x *AnalyzeResponse) GetClassInfo() *ClassInfo { + if x == nil || x.PayloadType != PAYLOAD_CLASS_INFO { + return nil + } + if v, ok := x.Payload.(*ClassInfo); ok { + return v + } + return nil +} + +func (x *AnalyzeResponse) GetMethodCall() *MethodCallInfo { + if x == nil || x.PayloadType != PAYLOAD_METHOD_CALL { + return nil + } + if v, ok := x.Payload.(*MethodCallInfo); ok { + return v + } + return nil +} + +func (x *AnalyzeResponse) GetSummary() *Summary { + if x == nil || x.PayloadType != PAYLOAD_SUMMARY { + return nil + } + if v, ok := x.Payload.(*Summary); ok { + return v + } + return nil +} + +func (x *AnalyzeResponse) GetError() *ErrorInfo { + if x == nil || x.PayloadType != PAYLOAD_ERROR { + return nil + } + if v, ok := x.Payload.(*ErrorInfo); ok { + return v + } + return nil +} + +// Getter methods for ClassInfo +func (x *ClassInfo) GetClassName() string { + if x != nil { + return x.ClassName + } + return "" +} + +func (x *ClassInfo) GetFilePath() string { + if x != nil { + return x.FilePath + } + return "" +} + +func (x *ClassInfo) GetClassType() ClassType { + if x != nil { + return x.ClassType + } + return ClassType_CLASS_TYPE_UNKNOWN +} + +func (x *ClassInfo) GetImports() []string { + if x != nil { + return x.Imports + } + return nil +} + +func (x *ClassInfo) GetExtendsTypes() []string { + if x != nil { + return x.ExtendsTypes + } + return nil +} + +func (x *ClassInfo) GetImplementsTypes() []string { + if x != nil { + return x.ImplementsTypes + } + return nil +} + +func (x *ClassInfo) GetMethods() []*MethodDetail { + if x != nil { + return x.Methods + } + return nil +} + +func (x *ClassInfo) GetFields() []*FieldDetail { + if x != nil { + return x.Fields + } + return nil +} + +func (x *ClassInfo) GetStartLine() int32 { + if x != nil { + return x.StartLine + } + return 0 +} + +func (x *ClassInfo) GetEndLine() int32 { + if x != nil { + return x.EndLine + } + return 0 +} + +// Getter methods for Summary +func (x *Summary) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *Summary) GetLocalClassCount() int32 { + if x != nil { + return x.LocalClassCount + } + return 0 +} + +func (x *Summary) GetFileCount() int32 { + if x != nil { + return x.FileCount + } + return 0 +} + +func (x *Summary) GetTotalTimeMs() int64 { + if x != nil { + return x.TotalTimeMs + } + return 0 +} diff --git a/lang/java/spec.go b/lang/java/spec.go index 60764666..d7385d36 100644 --- a/lang/java/spec.go +++ b/lang/java/spec.go @@ -33,7 +33,8 @@ type JavaSpec struct { } func (c *JavaSpec) ProtectedSymbolKinds() []lsp.SymbolKind { - return []lsp.SymbolKind{lsp.SKFunction} + // Java methods/vars are nested inside class ranges; keep them during Export filterLocalSymbols. + return []lsp.SymbolKind{lsp.SKFunction, lsp.SKMethod, lsp.SKVariable, lsp.SKConstant} } type JavaPkg struct { diff --git a/lang/lsp/client.go b/lang/lsp/client.go index f4e3767c..a7ac4491 100644 --- a/lang/lsp/client.go +++ b/lang/lsp/client.go @@ -40,6 +40,7 @@ type LSPClient struct { files map[DocumentURI]*TextDocumentItem provider LanguageServiceProvider ClientOptions + LspOptions map[string]string } type ClientOptions struct { diff --git a/lang/parse.go b/lang/parse.go index 98e46381..84ef4f93 100644 --- a/lang/parse.go +++ b/lang/parse.go @@ -28,7 +28,7 @@ import ( "github.com/cloudwego/abcoder/lang/collect" "github.com/cloudwego/abcoder/lang/cxx" "github.com/cloudwego/abcoder/lang/golang/parser" - "github.com/cloudwego/abcoder/lang/java" + "github.com/cloudwego/abcoder/lang/java/pb" "github.com/cloudwego/abcoder/lang/log" "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/python" @@ -75,7 +75,7 @@ func Parse(ctx context.Context, uri string, args ParseOptions) ([]byte, error) { return nil, err } - var client *lsp.LSPClient + var client = &lsp.LSPClient{ClientOptions: lsp.ClientOptions{Language: args.Language}, LspOptions: args.LspOptions} if lspPath != "" { // Initialize the LSP client log.Info("start initialize LSP server %s...\n", lspPath) @@ -87,6 +87,7 @@ func Parse(ctx context.Context, uri string, args ParseOptions) ([]byte, error) { Verbose: args.Verbose, InitializationOptions: args.LspOptions, }) + client.LspOptions = args.LspOptions if err != nil { log.Error("failed to initialize LSP server: %v\n", err) return nil, err @@ -129,7 +130,7 @@ func checkRepoPath(repoPath string, language uniast.Language) (openfile string, case uniast.Python: openfile, wait = python.CheckRepo(repoPath) case uniast.Java: - openfile, wait = java.CheckRepo(repoPath) + openfile, wait = pb.CheckRepo(repoPath) default: openfile = "" wait = 0 @@ -154,7 +155,7 @@ func checkLSP(language uniast.Language, lspPath string, args ParseOptions) (l un case uniast.Python: l, s = python.GetDefaultLSP() case uniast.Java: - l, s = java.GetDefaultLSP(args.LspOptions) + l, s = pb.GetDefaultLSP(args.LspOptions) case uniast.Golang: if _, err := exec.LookPath("go"); err != nil { if _, err := os.Stat(lspPath); os.IsNotExist(err) { diff --git a/lang/parse_test.go b/lang/parse_test.go index cfff7353..8e14055d 100644 --- a/lang/parse_test.go +++ b/lang/parse_test.go @@ -47,7 +47,8 @@ func defaultOptions(lang string) ParseOptions { NotNeedTest: true, Excludes: []string{}, }, - RepoID: "", + RepoID: "", + LspOptions: make(map[string]string), } } diff --git a/main.go b/main.go index e46437b0..c20057e7 100644 --- a/main.go +++ b/main.go @@ -156,6 +156,7 @@ Language Support: if javaHome != "" { lspOptions["java.home"] = javaHome } + lspOptions["java_parser"] = "ipc" opts.LspOptions = lspOptions out, err := lang.Parse(context.Background(), uri, opts) diff --git a/testdata/asts/localsession_g.json b/testdata/asts/localsession_g.json new file mode 100644 index 00000000..a0915bb6 --- /dev/null +++ b/testdata/asts/localsession_g.json @@ -0,0 +1 @@ +{"id":"/Users/bytedance/golang/work/abcoder/tmp/localsession","ASTVersion":"v0.1.2","ToolVersion":"","Path":"","Modules":{"github.com/cloudwego/localsession":{"Language":"go","Version":"","Name":"github.com/cloudwego/localsession","Dir":".","Packages":{"github.com/cloudwego/localsession":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession","Functions":{"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":115,"StartOffset":3347,"EndOffset":3356}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"gls.go","Line":119,"StartOffset":3422,"EndOffset":3433}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":104,"StartOffset":3054,"EndOffset":3061}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"gls.go","Line":108,"StartOffset":3153,"EndOffset":3163}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":42,"StartOffset":1372,"EndOffset":1386}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"gls.go","Line":51,"StartOffset":1622,"EndOffset":1637}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":147,"StartOffset":4142,"EndOffset":4151}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":64,"StartOffset":2032,"EndOffset":2051}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"gls.go","Line":70,"StartOffset":2200,"EndOffset":2205}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":44,"StartOffset":1315,"EndOffset":1325}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":55,"StartOffset":1604,"EndOffset":1614}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":59,"StartOffset":1692,"EndOffset":1699}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":63,"StartOffset":1804,"EndOffset":1823}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":63,"StartOffset":1825,"EndOffset":1839}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":77,"StartOffset":2112,"EndOffset":2119}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":102,"StartOffset":2776,"EndOffset":2787}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":113,"StartOffset":3075,"EndOffset":3086}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":117,"StartOffset":3162,"EndOffset":3169}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":85,"StartOffset":2313,"EndOffset":2320}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":134,"StartOffset":3386,"EndOffset":3398},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":134,"StartOffset":3400,"EndOffset":3409}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":137,"StartOffset":3485,"EndOffset":3490}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"manager.go","Line":174,"StartOffset":4348,"EndOffset":4355}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":115,"StartOffset":2912,"EndOffset":2924}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":115,"StartOffset":2927,"EndOffset":2934}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":117,"StartOffset":3030,"EndOffset":3034}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":83,"StartOffset":2216,"EndOffset":2230}]},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":149,"StartOffset":3805,"EndOffset":3817}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":152,"StartOffset":3902,"EndOffset":3906},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":154,"StartOffset":3928,"EndOffset":3934}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":194,"StartOffset":4857,"EndOffset":4859}]},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":164,"StartOffset":4094,"EndOffset":4101}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"gls.go","Line":133,"StartOffset":3832,"EndOffset":3845}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":77,"StartOffset":2300,"EndOffset":2320}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":38,"StartOffset":1013,"EndOffset":1022}]},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":61,"StartOffset":1417,"EndOffset":1426}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":55,"StartOffset":1539,"EndOffset":1545}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":35,"StartOffset":917,"EndOffset":928}]},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":107,"StartOffset":2700,"EndOffset":2712}]},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":90,"StartOffset":2340,"EndOffset":2352}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":90,"StartOffset":2355,"EndOffset":2362}]},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":101,"StartOffset":2600,"EndOffset":2612},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":101,"StartOffset":2614,"EndOffset":2624}]},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":42,"StartOffset":1095,"EndOffset":1107}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":50,"StartOffset":1479,"EndOffset":1493}],"Methods":{"BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},"Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},"GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},"GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},"Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},"UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},"startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"}}},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":42,"StartOffset":1317,"EndOffset":1338}],"Methods":{"Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},"Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},"Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"}}}},"Vars":{"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Functions":{"ASSERT":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":24,"StartOffset":673,"EndOffset":729,"Content":"func ASSERT(v bool) {\n\tif !v {\n\t\tpanic(\"not true!\")\n\t}\n}","Signature":"func ASSERT(v bool)"},"BenchmarkGLS_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","File":"api_test.go","Line":548,"StartOffset":12073,"EndOffset":12559,"Content":"func BenchmarkGLS_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":549,"StartOffset":12117,"EndOffset":12130},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":556,"StartOffset":12267,"EndOffset":12278},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":558,"StartOffset":12319,"EndOffset":12333},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":560,"StartOffset":12353,"EndOffset":12366}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":558,"StartOffset":12336,"EndOffset":12339}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":550,"StartOffset":12161,"EndOffset":12168}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":551,"StartOffset":12190,"EndOffset":12191}]},"BenchmarkGLS_Set":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","File":"api_test.go","Line":574,"StartOffset":12561,"EndOffset":13082,"Content":"func BenchmarkGLS_Set(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Set(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":575,"StartOffset":12605,"EndOffset":12618},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":583,"StartOffset":12756,"EndOffset":12767},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":585,"StartOffset":12816,"EndOffset":12830},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":587,"StartOffset":12859,"EndOffset":12872}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":585,"StartOffset":12833,"EndOffset":12842}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":576,"StartOffset":12649,"EndOffset":12656}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":578,"StartOffset":12679,"EndOffset":12680}]},"BenchmarkLoops":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","File":"api_test.go","Line":630,"StartOffset":13770,"EndOffset":13883,"Content":"func BenchmarkLoops(b *testing.B) {\n\tfor i := 0; i \u003c b.N; i++ {\n\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t_ = b\n\t\t}\n\t}\n}","Signature":"func BenchmarkLoops(b *testing.B)"},"BenchmarkSessionCtx_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","File":"api_test.go","Line":482,"StartOffset":10854,"EndOffset":11245,"Content":"func BenchmarkSessionCtx_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":483,"StartOffset":10905,"EndOffset":10918}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":484,"StartOffset":10949,"EndOffset":10956}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":485,"StartOffset":10978,"EndOffset":10979}]},"BenchmarkSessionCtx_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","File":"api_test.go","Line":460,"StartOffset":10439,"EndOffset":10852,"Content":"func BenchmarkSessionCtx_WithValue(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":461,"StartOffset":10496,"EndOffset":10509}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":462,"StartOffset":10540,"EndOffset":10547}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":463,"StartOffset":10569,"EndOffset":10570}]},"BenchmarkSessionManager_BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","File":"api_test.go","Line":442,"StartOffset":10115,"EndOffset":10437,"Content":"func BenchmarkSessionManager_BindSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(s)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(s)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_BindSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":443,"StartOffset":10178,"EndOffset":10191},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":447,"StartOffset":10283,"EndOffset":10294}]},"BenchmarkSessionManager_CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","File":"api_test.go","Line":420,"StartOffset":9708,"EndOffset":10113,"Content":"func BenchmarkSessionManager_CurSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(s)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession()\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(s)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession()\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_CurSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":421,"StartOffset":9770,"EndOffset":9783},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":424,"StartOffset":9845,"EndOffset":9856},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":426,"StartOffset":9896,"EndOffset":9910},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":428,"StartOffset":9919,"EndOffset":9932}]},"BenchmarkSessionMap_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","File":"api_test.go","Line":526,"StartOffset":11671,"EndOffset":12071,"Content":"func BenchmarkSessionMap_Get(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":527,"StartOffset":11722,"EndOffset":11735}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":528,"StartOffset":11775,"EndOffset":11782}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":529,"StartOffset":11804,"EndOffset":11805}]},"BenchmarkSessionMap_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","File":"api_test.go","Line":504,"StartOffset":11247,"EndOffset":11669,"Content":"func BenchmarkSessionMap_WithValue(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":505,"StartOffset":11304,"EndOffset":11317}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":506,"StartOffset":11357,"EndOffset":11364}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":507,"StartOffset":11386,"EndOffset":11387}]},"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"ExampleSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","File":"example_test.go","Line":85,"StartOffset":2059,"EndOffset":4355,"Content":"func ExampleSessionCtx() {\n\t// initialize default manager first\n\tInitDefaultManager(DefaultManagerOptions())\n\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := GetCurSession().Get(key) // val exists\n\t\tASSERT(val == v)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := GetCurSession().WithValue(key2, v2)\n\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\tASSERT(val2 == nil)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(val == v)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 exists\n\t\t\tASSERT(val2 == v2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(v == val)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\t\tASSERT(val2 == nil)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = GetCurSession().Get(key2) // val2 exists\n\t\tASSERT(v2 == val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\tASSERT(next.IsValid() == false) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := GetCurSession().Get(key2) // val2 == nil\n\tASSERT(val2 == nil)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\tASSERT(start.IsValid() == false) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func ExampleSessionCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":87,"StartOffset":2124,"EndOffset":2142},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"example_test.go","Line":87,"StartOffset":2143,"EndOffset":2164},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"example_test.go","Line":96,"StartOffset":2368,"EndOffset":2381},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":102,"StartOffset":2517,"EndOffset":2528},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"example_test.go","Line":105,"StartOffset":2567,"EndOffset":2569},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":107,"StartOffset":2633,"EndOffset":2646},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":108,"StartOffset":2674,"EndOffset":2680},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"example_test.go","Line":118,"StartOffset":2995,"EndOffset":3004},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":186,"StartOffset":4338,"EndOffset":4351}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":107,"StartOffset":2649,"EndOffset":2652},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"example_test.go","Line":113,"StartOffset":2836,"EndOffset":2845},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"example_test.go","Line":130,"StartOffset":3291,"EndOffset":3298}]},"ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","File":"example_test.go","Line":38,"StartOffset":849,"EndOffset":2057,"Content":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync() {\n\t// EnableImplicitlyTransmitAsync must be true\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Hour,\n\t})\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tlabels := pprof.Labels(\"c\", \"d\")\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\tBindSession(s)\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\t// labels := pprof.Labels(\"c\", \"d\")\n\t// pprof.Do(context.Background(), labels, func(ctx context.Context){})\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\tASSERT(nil == mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(nil == mustCurSession())\n\t\t}()\n\n\t}()\n\twg.Wait()\n}","Signature":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":40,"StartOffset":954,"EndOffset":972},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"example_test.go","Line":51,"StartOffset":1357,"EndOffset":1370},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":54,"StartOffset":1417,"EndOffset":1428},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":65,"StartOffset":1743,"EndOffset":1749},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"example_test.go","Line":65,"StartOffset":1757,"EndOffset":1771},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":73,"StartOffset":1914,"EndOffset":1927}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":65,"StartOffset":1774,"EndOffset":1777}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"example_test.go","Line":40,"StartOffset":973,"EndOffset":987}]},"GetCurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":30,"StartOffset":731,"EndOffset":847,"Content":"func GetCurSession() Session {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tpanic(\"can't get current session!\")\n\t}\n\treturn s\n}","Signature":"func GetCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"example_test.go","Line":31,"StartOffset":772,"EndOffset":782}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","File":"api_test.go","Line":32,"StartOffset":759,"EndOffset":844,"Content":"func TestMain(m *testing.M) {\n\tInitDefaultManager(DefaultManagerOptions())\n\tm.Run()\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":33,"StartOffset":790,"EndOffset":808},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":33,"StartOffset":809,"EndOffset":830}]},"TestRace":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","File":"api_test.go","Line":394,"StartOffset":9150,"EndOffset":9706,"Content":"func TestRace(t *testing.T) {\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: 1,\n\t\tGCInterval: time.Second,\n\t})\n\tvar N = 1000\n\tvar start sync.RWMutex\n\tstart.Lock()\n\twg := sync.WaitGroup{}\n\tfor i := 0; i \u003c N; i++ {\n\t\twg.Add(1)\n\t\tgo func(i int) {\n\t\t\tdefer wg.Done()\n\t\t\ts := NewSessionMap(map[interface{}]interface{}{}).WithValue(\"a\", \"b\")\n\t\t\tstart.RLock()\n\t\t\tmanager.BindSession(SessionID(i), s)\n\t\t\tss, ok := manager.GetSession(SessionID(i))\n\t\t\tif !ok || ss.Get(\"a\") != \"b\" {\n\t\t\t\tt.Fatal(\"not equal\")\n\t\t\t}\n\t\t}(i)\n\t}\n\tstart.Unlock()\n\twg.Wait()\n}","Signature":"func TestRace(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":395,"StartOffset":9192,"EndOffset":9209},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":407,"StartOffset":9436,"EndOffset":9449}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"api_test.go","Line":407,"StartOffset":9481,"EndOffset":9490}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":395,"StartOffset":9210,"EndOffset":9224},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":409,"StartOffset":9541,"EndOffset":9550}]},"TestRealBizGLS":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","File":"api_test.go","Line":666,"StartOffset":14381,"EndOffset":15078,"Content":"func TestRealBizGLS(t *testing.T) {\n\tvar runner = func(N int) {\n\t\tm := NewSessionManager(ManagerOptions{\n\t\t\tShardNumber: 100,\n\t\t\tGCInterval: time.Second,\n\t\t})\n\t\ts := \u0026stat{\n\t\t\tmin: time.Duration(math.MaxInt64),\n\t\t}\n\t\tctx, _ := context.WithTimeout(context.Background(), time.Second*60)\n\t\temitLoops(\u0026m, ctx, N, s)\n\t\tgo func(ctx context.Context) {\n\t\t\ttt := time.NewTicker(time.Second)\n\t\t\tfor {\n\t\t\t\tselect {\n\t\t\t\tcase \u003c-tt.C:\n\t\t\t\t\t{\n\t\t\t\t\t\tprintln(s.String())\n\t\t\t\t\t}\n\t\t\t\tcase \u003c-ctx.Done():\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t}\n\t\t}(ctx)\n\t\t\u003c-ctx.Done()\n\t}\n\n\tt.Run(\"10\", func(t *testing.T) {\n\t\trunner(10)\n\t})\n\tt.Run(\"100\", func(t *testing.T) {\n\t\trunner(100)\n\t})\n\tt.Run(\"1000\", func(t *testing.T) {\n\t\trunner(1000)\n\t})\n}","Signature":"func TestRealBizGLS(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":668,"StartOffset":14452,"EndOffset":14469},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":676,"StartOffset":14669,"EndOffset":14678}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":668,"StartOffset":14470,"EndOffset":14484},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":672,"StartOffset":14549,"EndOffset":14553}]},"TestResetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","File":"api_test.go","Line":37,"StartOffset":846,"EndOffset":2463,"Content":"func TestResetDefaultManager(t *testing.T) {\n\told := defaultManagerObj\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\texp := ManagerOptions{\n\t\t\tShardNumber: 1,\n\t\t\tEnableImplicitlyTransmitAsync: true,\n\t\t\tGCInterval: time.Second * 2,\n\t\t}\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv := `true,10,10s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp := DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\texp.ShardNumber = 10\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 10\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1000`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1000\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `true,,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestResetDefaultManager(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":47,"StartOffset":1147,"EndOffset":1165},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":49,"StartOffset":1218,"EndOffset":1223},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":56,"StartOffset":1381,"EndOffset":1402}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":42,"StartOffset":997,"EndOffset":1011}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":38,"StartOffset":899,"EndOffset":916},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":41,"StartOffset":955,"EndOffset":973},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"api_test.go","Line":55,"StartOffset":1347,"EndOffset":1365}]},"TestSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","File":"api_test.go","Line":154,"StartOffset":3840,"EndOffset":6120,"Content":"func TestSessionCtx(t *testing.T) {\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\trequire.Nil(t, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\t\trequire.Nil(t, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 == nil\n\trequire.Nil(t, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionCtx(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":162,"StartOffset":4075,"EndOffset":4088},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":168,"StartOffset":4224,"EndOffset":4235},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":171,"StartOffset":4274,"EndOffset":4276},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":173,"StartOffset":4340,"EndOffset":4354},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":174,"StartOffset":4390,"EndOffset":4395},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":181,"StartOffset":4635,"EndOffset":4638},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":184,"StartOffset":4714,"EndOffset":4723},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":196,"StartOffset":5013,"EndOffset":5018},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":252,"StartOffset":6103,"EndOffset":6116}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":173,"StartOffset":4357,"EndOffset":4360},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":179,"StartOffset":4553,"EndOffset":4562},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":196,"StartOffset":5039,"EndOffset":5046}]},"TestSessionManager_GC":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","File":"api_test.go","Line":360,"StartOffset":8481,"EndOffset":9148,"Content":"func TestSessionManager_GC(t *testing.T) {\n\tinter := time.Second * 2\n\tsd := 10\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: sd,\n\t\tGCInterval: inter,\n\t})\n\n\tvar N = 1000\n\tfor i := 0; i \u003c N; i++ {\n\t\tm := map[interface{}]interface{}{}\n\t\ts := NewSessionMap(m)\n\t\tmanager.BindSession(SessionID(i), s)\n\t\tif i%2 == 1 {\n\t\t\ts.Disable()\n\t\t}\n\t}\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\trequire.Equal(t, N/sd, l)\n\t}\n\ttime.Sleep(inter + inter\u003e\u003e1)\n\tsum := 0\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\tsum += l\n\t}\n\trequire.Equal(t, N/2, sum)\n}","Signature":"func TestSessionManager_GC(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":363,"StartOffset":8572,"EndOffset":8589},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":371,"StartOffset":8736,"EndOffset":8749},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":381,"StartOffset":8942,"EndOffset":8947}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":363,"StartOffset":8590,"EndOffset":8604},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":372,"StartOffset":8775,"EndOffset":8784}]},"TestSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","File":"api_test.go","Line":260,"StartOffset":6189,"EndOffset":8479,"Content":"func TestSessionMap(t *testing.T) {\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionMap(map[interface{}]interface{}{}) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\trequire.Equal(t, v2, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 exists\n\trequire.Equal(t, v2, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionMap(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":267,"StartOffset":6392,"EndOffset":6405},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":273,"StartOffset":6567,"EndOffset":6578},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":276,"StartOffset":6617,"EndOffset":6619},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":278,"StartOffset":6683,"EndOffset":6697},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":279,"StartOffset":6733,"EndOffset":6738},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":289,"StartOffset":7062,"EndOffset":7071},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":301,"StartOffset":7361,"EndOffset":7366},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":357,"StartOffset":8462,"EndOffset":8475}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":278,"StartOffset":6700,"EndOffset":6703},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":284,"StartOffset":6896,"EndOffset":6905},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":301,"StartOffset":7387,"EndOffset":7394}]},"TestSessionTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","File":"api_test.go","Line":144,"StartOffset":3513,"EndOffset":3838,"Content":"func TestSessionTimeout(t *testing.T) {\n\ts := NewSessionCtxWithTimeout(context.Background(), time.Second)\n\tss := s.WithValue(1, 2)\n\tm := NewSessionMapWithTimeout(map[interface{}]interface{}{}, time.Second)\n\tmm := m.WithValue(1, 2)\n\ttime.Sleep(time.Second * 2)\n\trequire.False(t, ss.IsValid())\n\trequire.False(t, mm.IsValid())\n}","Signature":"func TestSessionTimeout(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"api_test.go","Line":145,"StartOffset":3559,"EndOffset":3583},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"api_test.go","Line":147,"StartOffset":3650,"EndOffset":3674},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":150,"StartOffset":3782,"EndOffset":3787}]},"TestTransparentTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","File":"api_test.go","Line":99,"StartOffset":2465,"EndOffset":3511,"Content":"//go:nocheckptr\nfunc TestTransparentTransmitAsync(t *testing.T) {\n\told := defaultManagerObj\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Second * 2,\n\t})\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\n\tlabels := pprof.Labels(\"c\", \"d\")\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\tBindSession(s)\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\trequire.Nil(t, mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Nil(t, mustCurSession())\n\t\t}()\n\t}()\n\n\twg.Wait()\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestTransparentTransmitAsync(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":101,"StartOffset":2558,"EndOffset":2576},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":106,"StartOffset":2729,"EndOffset":2742},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":116,"StartOffset":3028,"EndOffset":3039},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":122,"StartOffset":3120,"EndOffset":3125},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":122,"StartOffset":3134,"EndOffset":3148},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":130,"StartOffset":3307,"EndOffset":3320},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":131,"StartOffset":3333,"EndOffset":3336}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":122,"StartOffset":3151,"EndOffset":3154}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":101,"StartOffset":2577,"EndOffset":2591}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":100,"StartOffset":2539,"EndOffset":2556},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":141,"StartOffset":3477,"EndOffset":3495}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"emitLoops":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":601,"StartOffset":13084,"EndOffset":13768,"Content":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat) {\n\tfor i := 0; i \u003c N; i++ {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tif ctx.Err() != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tstart := time.Now()\n\t\t\t\tsession := NewSessionCtx(ctx)\n\t\t\t\tss := session.WithValue(\"a\", \"b\")\n\t\t\t\tm.BindSession(SessionID(goID()), ss)\n\t\t\t\tsss, _ := m.GetSession(SessionID(goID()))\n\t\t\t\tif val := sss.Get(\"a\"); val != \"b\" {\n\t\t\t\t\tpanic(fmt.Sprintf(\"unexpected val: %#v\", val))\n\t\t\t\t}\n\t\t\t\tm.UnbindSession(SessionID(goID()))\n\t\t\t\tcost := time.Now().Sub(start)\n\t\t\t\ts.Update(cost)\n\t\t\t\tfor a := 0; a \u003c 10; a++ {\n\t\t\t\t\ttime.Sleep(time.Microsecond * 50)\n\t\t\t\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t\t\t\t_ = b\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n}","Signature":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":609,"StartOffset":13289,"EndOffset":13302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"api_test.go","Line":611,"StartOffset":13374,"EndOffset":13378}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":611,"StartOffset":13364,"EndOffset":13373}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap"},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"mustCurSession":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":255,"StartOffset":6122,"EndOffset":6187,"Content":"func mustCurSession() Session {\n\ts, _ := CurSession()\n\treturn s\n}","Signature":"func mustCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"api_test.go","Line":256,"StartOffset":6163,"EndOffset":6173}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)"},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"stat.String":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","File":"api_test.go","Line":660,"StartOffset":14204,"EndOffset":14379,"Content":"func (st *stat) String() string {\n\tst.mux.RLock()\n\tdefer st.mux.RUnlock()\n\treturn fmt.Sprintf(\"min:%dns, max:%dns, avg:%dns\", st.min, st.max, st.sum/time.Duration(st.count))\n}","Signature":"func (st *stat) String() string","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"stat.Update":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","File":"api_test.go","Line":647,"StartOffset":14000,"EndOffset":14202,"Content":"func (st *stat) Update(cost time.Duration) {\n\tst.mux.Lock()\n\tdefer st.mux.Unlock()\n\tif cost \u003e st.max {\n\t\tst.max = cost\n\t} else if cost \u003c st.min {\n\t\tst.min = cost\n\t}\n\tst.count++\n\tst.sum += cost\n\treturn\n}","Signature":"func (st *stat) Update(cost time.Duration)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}"},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}"},"stat":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":638,"StartOffset":13885,"EndOffset":13998,"Content":"type stat struct {\n\tmax time.Duration\n\tmin time.Duration\n\tsum time.Duration\n\tcount int\n\n\tmux sync.RWMutex\n}"}},"Vars":{"N":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":30,"StartOffset":751,"EndOffset":757,"Type":{"ModPath":"","PkgPath":"","Name":"untyped int"},"Content":"const N untyped int = 10"},"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *localsession.SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession/backup":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession/backup","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":36,"StartOffset":1006,"EndOffset":1013}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":45,"StartOffset":1234,"EndOffset":1246}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":54,"StartOffset":1538,"EndOffset":1559}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{}},"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","File":"backup/metainfo_test.go","Line":27,"StartOffset":704,"EndOffset":854,"Content":"func TestMain(m *testing.M) {\n\topts := DefaultOptions()\n\topts.EnableImplicitlyTransmitAsync = true\n\topts.Enable = true\n\tInit(opts)\n\tos.Exit(m.Run())\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo_test.go","Line":28,"StartOffset":743,"EndOffset":757},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo_test.go","Line":31,"StartOffset":824,"EndOffset":828}]},"TestRecoverCtxOndemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","File":"backup/metainfo_test.go","Line":39,"StartOffset":918,"EndOffset":2703,"Content":"func TestRecoverCtxOndemands(t *testing.T) {\n\tctx := context.WithValue(context.Background(), CtxKeyTest1, \"c\")\n\tBackupCtx(metainfo.WithPersistentValues(ctx, \"a\", \"a\", \"b\", \"b\"))\n\n\thandler := BackupHandler(func(prev, cur context.Context) (ctx context.Context, backup bool) {\n\t\tif v := cur.Value(CtxKeyTest1); v == nil {\n\t\t\tv = prev.Value(CtxKeyTest1)\n\t\t\tif v != nil {\n\t\t\t\tctx = context.WithValue(cur, CtxKeyTest1, v)\n\t\t\t} else {\n\t\t\t\tctx = cur\n\t\t\t}\n\t\t\treturn ctx, true\n\t\t}\n\t\treturn cur, false\n\t})\n\ttype args struct {\n\t\tctx context.Context\n\t\thandler BackupHandler\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant context.Context\n\t}{\n\t\t{\n\t\t\tname: \"triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(context.Background(), \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithPersistentValues(ctx, \"a\", \"aa\", \"b\", \"b\"),\n\t\t},\n\t\t{\n\t\t\tname: \"not triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif got := RecoverCtxOnDemands(tt.args.ctx, tt.args.handler); got != nil {\n\t\t\t\tif v := got.Value(CtxKeyTest1); v == nil {\n\t\t\t\t\tt.Errorf(\"not got CtxKeyTest1\")\n\t\t\t\t}\n\t\t\t\ta, _ := metainfo.GetPersistentValue(got, \"a\")\n\t\t\t\tae, _ := metainfo.GetPersistentValue(tt.want, \"a\")\n\t\t\t\tif a != ae {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", a, ae)\n\t\t\t\t}\n\t\t\t\tb, _ := metainfo.GetPersistentValue(got, \"b\")\n\t\t\t\tbe, _ := metainfo.GetPersistentValue(tt.want, \"b\")\n\t\t\t\tif b != be {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", b, be)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tt.Fatal(\"no got\")\n\t\t\t}\n\t\t})\n\t}\n}","Signature":"func TestRecoverCtxOndemands(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo_test.go","Line":41,"StartOffset":1030,"EndOffset":1039},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo_test.go","Line":41,"StartOffset":1049,"EndOffset":1069},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1623,"EndOffset":1632},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1642,"EndOffset":1661},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo_test.go","Line":83,"StartOffset":2143,"EndOffset":2162},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","File":"backup/metainfo_test.go","Line":87,"StartOffset":2318,"EndOffset":2336}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo_test.go","Line":43,"StartOffset":1109,"EndOffset":1122},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","File":"backup/metainfo_test.go","Line":61,"StartOffset":1528,"EndOffset":1532}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":40,"StartOffset":1011,"EndOffset":1022}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"CtxKeyTestType":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","File":"backup/metainfo_test.go","Line":35,"StartOffset":856,"EndOffset":884,"Content":"type CtxKeyTestType struct{}"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{"CtxKeyTest1":{"IsExported":true,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":37,"StartOffset":890,"EndOffset":916,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"},"Content":"var CtxKeyTest1 backup.CtxKeyTestType"}}}},"Dependencies":{"github.com/bytedance/gopkg":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","github.com/cloudwego/runtimex":"github.com/cloudwego/runtimex@v0.1.1","github.com/davecgh/go-spew":"github.com/davecgh/go-spew@v1.1.0","github.com/modern-go/reflect2":"github.com/modern-go/reflect2@v1.0.2","github.com/pmezard/go-difflib":"github.com/pmezard/go-difflib@v1.0.0","github.com/stretchr/testify":"github.com/stretchr/testify@v1.7.0","golang.org/x/net":"golang.org/x/net@v0.0.0-20221014081412-f15817d10f9b","golang.org/x/text":"golang.org/x/text@v0.3.7","gopkg.in/yaml.v3":"gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c"},"Files":{"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d":{"Path":"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession.test"},"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d":{"Path":"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession/backup\""}],"Package":"github.com/cloudwego/localsession/backup.test"},".github/ISSUE_TEMPLATE/bug_report.md":{"Path":".github/ISSUE_TEMPLATE/bug_report.md"},".github/ISSUE_TEMPLATE/feature_request.md":{"Path":".github/ISSUE_TEMPLATE/feature_request.md"},".github/PULL_REQUEST_TEMPLATE.md":{"Path":".github/PULL_REQUEST_TEMPLATE.md"},".github/workflows/release-check.yml":{"Path":".github/workflows/release-check.yml"},".github/workflows/tests.yml":{"Path":".github/workflows/tests.yml"},".gitignore":{"Path":".gitignore"},".golangci.yaml":{"Path":".golangci.yaml"},".licenserc.yaml":{"Path":".licenserc.yaml"},"CODE_OF_CONDUCT.md":{"Path":"CODE_OF_CONDUCT.md"},"CONTRIBUTING.md":{"Path":"CONTRIBUTING.md"},"LICENSE-APACHE":{"Path":"LICENSE-APACHE"},"README.md":{"Path":"README.md"},"_typos.toml":{"Path":"_typos.toml"},"api_test.go":{"Path":"api_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"fmt\""},{"Path":"\"math\""},{"Path":"\"os\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"testing\""},{"Path":"\"time\""},{"Path":"\"github.com/stretchr/testify/require\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"backup/metainfo.go":{"Path":"backup/metainfo.go","Imports":[{"Path":"\"context\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""},{"Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession/backup"},"backup/metainfo_test.go":{"Path":"backup/metainfo_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"os\""},{"Path":"\"testing\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""}],"Package":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]"},"check_branch_name.sh":{"Path":"check_branch_name.sh"},"example_test.go":{"Path":"example_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"gls.go":{"Path":"gls.go","Imports":[{"Path":"\"fmt\""},{"Path":"\"os\""},{"Path":"\"strconv\""},{"Path":"\"strings\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"go.mod":{"Path":"go.mod"},"go.sum":{"Path":"go.sum"},"manager.go":{"Path":"manager.go","Imports":[{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"session.go":{"Path":"session.go","Imports":[{"Path":"\"context\""},{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"stubs.go":{"Path":"stubs.go","Imports":[{"Path":"\"strconv\""},{"Alias":"_","Path":"\"unsafe\""},{"Path":"\"github.com/cloudwego/runtimex\""}],"Package":"github.com/cloudwego/localsession"}}}},"Graph":{"?#int":{"ModPath":"","PkgPath":"","Name":"int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap"}]},"?#untyped int":{"ModPath":"","PkgPath":"","Name":"untyped int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N"}]},"?#untyped string":{"ModPath":"","PkgPath":"","Name":"untyped string","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY"}]},"?github.com/cloudwego/localsession#Session.Get":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":45},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":24},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":25}]},"?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid"}]},"?github.com/cloudwego/localsession#SessionManager":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj"}]},"?github.com/cloudwego/localsession#SessionMap":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid"}]},"?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13}]},"?github.com/cloudwego/localsession#shard":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load"}]},"?github.com/cloudwego/localsession#stat":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update"}]},"?github.com/cloudwego/localsession/backup#CtxKeyTestType":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1"}]},"?sync#Once":{"ModPath":"","PkgPath":"sync","Name":"Once","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce"}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":22}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetAllPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":25},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":25}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":48}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#RangePersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":30},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":30}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ASSERT":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":23}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":12},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Set":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":101},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":22},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":28},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":45}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":35},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":17}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":29},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":30}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#N":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":18}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":3}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":2},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":15},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":3}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRace":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":15}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRealBizGLS":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestResetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":10},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":18}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":19},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":20},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":30},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":98},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":19},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":25},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionManager_GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":11},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":18},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":29},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":97},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":18},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":24},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":41}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":3},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestTransparentTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":31},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":32},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":31},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":35},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":101},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":97},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":98}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#emitLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":10}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#mustCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.String":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.Update":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":11}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":8}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":7}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":16}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTest1":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTestType":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","Type":"TYPE"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":44}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestRecoverCtxOndemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":44},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Line":48},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#args":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init"}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}]},"github.com/cloudwego/runtimex@v0.1.1?github.com/cloudwego/runtimex#GID":{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":1}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Equal":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":20}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#False":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Nil":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":32},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":27}]}}} \ No newline at end of file diff --git a/testdata/asts/metainfo.json b/testdata/asts/metainfo.json index 18095e14..99b96d79 100644 --- a/testdata/asts/metainfo.json +++ b/testdata/asts/metainfo.json @@ -1,15042 +1,15042 @@ { - "id": "/Users/bytedance/golang/work/abcoder/tmp/metainfo", - "Modules": { - "ahash@0.8.11": { - "Language": "rust", - "Version": "0.8.11", - "Name": "ahash", - "Dir": "", - "Packages": { - "ahash::hash_map": { - "IsMain": false, - "IsTest": false, - "PkgPath": "ahash::hash_map", - "Functions": { - "AHashMap.deref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.deref", - "File": "hash_map.rs", - "Line": 280, - "StartOffset": 8076, - "EndOffset": 8132, - "Content": "impl Deref for AHashMap {\n type Target = HashMap;\n fn deref(&self) -> &Self::Target {\n &self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.deref_mut": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.deref_mut", - "File": "hash_map.rs", - "Line": 286, - "StartOffset": 8187, - "EndOffset": 8259, - "Content": "impl DerefMut for AHashMap {\n fn deref_mut(&mut self) -> &mut Self::Target {\n &mut self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.eq", - "File": "hash_map.rs", - "Line": 304, - "StartOffset": 8473, - "EndOffset": 8556, - "Content": "impl PartialEq for AHashMap\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(&self, other: &AHashMap) -> bool {\n self.0.eq(&other.0)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.extend": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "File": "hash_map.rs", - "Line": 389, - "StartOffset": 10454, - "EndOffset": 10565, - "Content": "impl Extend<(K, V)> for AHashMap\nwhere\n K: Eq + Hash,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend>(&mut self, iter: T) {\n self.0.extend(iter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.fmt", - "File": "hash_map.rs", - "Line": 342, - "StartOffset": 9170, - "EndOffset": 9256, - "Content": "impl Debug for AHashMap\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n self.0.fmt(fmt)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.get": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "hash_map.rs", - "Line": 85, - "StartOffset": 2421, - "EndOffset": 3065, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n pub fn get(&self, k: &Q) -> Option<&V>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get(k)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.get_key_value": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_key_value", - "File": "hash_map.rs", - "Line": 110, - "StartOffset": 3071, - "EndOffset": 3779, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns the key-value pair corresponding to the supplied key.\n ///\n /// The supplied key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\n /// assert_eq!(map.get_key_value(&2), None);\n /// ```\n #[inline]\n pub fn get_key_value(&self, k: &Q) -> Option<(&K, &V)>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get_key_value(k)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.get_mut": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_mut", - "File": "hash_map.rs", - "Line": 135, - "StartOffset": 3785, - "EndOffset": 4478, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns a mutable reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// if let Some(x) = map.get_mut(&1) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[&1], \"b\");\n /// ```\n #[inline]\n pub fn get_mut(&mut self, k: &Q) -> Option<&mut V>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get_mut(k)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.index": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.index", - "File": "hash_map.rs", - "Line": 325, - "StartOffset": 8818, - "EndOffset": 9064, - "Content": "impl Index<&Q> for AHashMap\nwhere\n K: Eq + Hash + Borrow,\n Q: Eq + Hash,\n S: BuildHasher,\n{\n type Output = V;\n\n /// Returns a reference to the value corresponding to the supplied key.\n ///\n /// # Panics\n ///\n /// Panics if the key is not present in the `HashMap`.\n #[inline]\n /// Returns a reference to the value corresponding to the supplied key.\n ///\n /// # Panics\n ///\n /// Panics if the key is not present in the `HashMap`.\n #[inline]\n fn index(&self, key: &Q) -> &V {\n self.0.index(key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.insert": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "File": "hash_map.rs", - "Line": 162, - "StartOffset": 4484, - "EndOffset": 5343, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Inserts a key-value pair into the map.\n ///\n /// If the map did not have this key present, [`None`] is returned.\n ///\n /// If the map did have this key present, the value is updated, and the old\n /// value is returned. The key is not updated, though; this matters for\n /// types that can be `==` without being identical. See the [module-level\n /// documentation] for more.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// assert_eq!(map.insert(37, \"a\"), None);\n /// assert_eq!(map.is_empty(), false);\n ///\n /// map.insert(37, \"b\");\n /// assert_eq!(map.insert(37, \"c\"), Some(\"b\"));\n /// assert_eq!(map[&37], \"c\");\n /// ```\n #[inline]\n pub fn insert(&mut self, k: K, v: V) -> Option {\n self.0.insert(k, v)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.into": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into", - "File": "hash_map.rs", - "Line": 48, - "StartOffset": 1311, - "EndOffset": 1384, - "Content": "impl Into> for AHashMap {\n fn into(self) -> HashMap {\n self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.into_iter": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "File": "hash_map.rs", - "Line": 363, - "StartOffset": 9847, - "EndOffset": 9916, - "Content": "impl<'a, K, V, S> IntoIterator for &'a AHashMap {\n type Item = (&'a K, &'a V);\n type IntoIter = hash_map::Iter<'a, K, V>;\n fn into_iter(self) -> Self::IntoIter {\n (&self.0).iter()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.into_keys": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_keys", - "File": "hash_map.rs", - "Line": 189, - "StartOffset": 5349, - "EndOffset": 6305, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Creates a consuming iterator visiting all the keys in arbitrary order.\n /// The map cannot be used after calling this.\n /// The iterator element type is `K`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let map = HashMap::from([\n /// (\"a\", 1),\n /// (\"b\", 2),\n /// (\"c\", 3),\n /// ]);\n ///\n /// let mut vec: Vec<&str> = map.into_keys().collect();\n /// // The `IntoKeys` iterator produces keys in arbitrary order, so the\n /// // keys must be sorted to test them against a sorted array.\n /// vec.sort_unstable();\n /// assert_eq!(vec, [\"a\", \"b\", \"c\"]);\n /// ```\n ///\n /// # Performance\n ///\n /// In the current implementation, iterating over keys takes O(capacity) time\n /// instead of O(len) because it internally visits empty buckets too.\n #[inline]\n pub fn into_keys(self) -> IntoKeys {\n self.0.into_keys()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.into_values": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_values", - "File": "hash_map.rs", - "Line": 220, - "StartOffset": 6311, - "EndOffset": 7278, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Creates a consuming iterator visiting all the values in arbitrary order.\n /// The map cannot be used after calling this.\n /// The iterator element type is `V`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let map = HashMap::from([\n /// (\"a\", 1),\n /// (\"b\", 2),\n /// (\"c\", 3),\n /// ]);\n ///\n /// let mut vec: Vec = map.into_values().collect();\n /// // The `IntoValues` iterator produces values in arbitrary order, so\n /// // the values must be sorted to test them against a sorted array.\n /// vec.sort_unstable();\n /// assert_eq!(vec, [1, 2, 3]);\n /// ```\n ///\n /// # Performance\n ///\n /// In the current implementation, iterating over values takes O(capacity) time\n /// instead of O(len) because it internally visits empty buckets too.\n #[inline]\n pub fn into_values(self) -> IntoValues {\n self.0.into_values()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.remove": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "File": "hash_map.rs", - "Line": 251, - "StartOffset": 7284, - "EndOffset": 7988, - "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Removes a key from the map, returning the value at the key if the key\n /// was previously in the map.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.remove(&1), Some(\"a\"));\n /// assert_eq!(map.remove(&1), None);\n /// ```\n #[inline]\n pub fn remove(&mut self, k: &Q) -> Option\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.remove(k)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.serialize": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.serialize", - "File": "hash_map.rs", - "Line": 424, - "StartOffset": 11502, - "EndOffset": 11629, - "Content": "#[cfg(feature = \"serde\")]\nimpl Serialize for AHashMap\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize(&self, serializer: S) -> Result {\n self.deref().serialize(serializer)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::with_capacity": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "hash_map.rs", - "Line": 60, - "StartOffset": 1703, - "EndOffset": 2000, - "Content": "impl AHashMap {\n /// This crates a hashmap using [RandomState::new] which obtains its keys from [RandomSource].\n /// See the documentation in [RandomSource] for notes about key strength.\n /// This crates a hashmap with the specified capacity using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n pub fn with_capacity(capacity: usize) -> Self {\n AHashMap(HashMap::with_capacity_and_hasher(capacity, RandomState::new()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - } - }, - "Types": { - "AHashMap": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "hash_map.rs", - "Line": 18, - "StartOffset": 426, - "EndOffset": 665, - "Content": "/// A [`HashMap`](std::collections::HashMap) using [`RandomState`](crate::RandomState) to hash the items.\n/// (Requires the `std` feature to be enabled.)\n#[derive(Clone)]\npub struct AHashMap(HashMap);", - "Methods": { - "deref": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.deref" - }, - "deref_mut": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.deref_mut" - }, - "eq": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.eq" - }, - "extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend" - }, - "fmt": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.fmt" - }, - "get": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get" - }, - "get_key_value": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_key_value" - }, - "get_mut": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_mut" - }, - "index": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.index" - }, - "insert": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert" - }, - "into": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into" - }, - "into_iter": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter" - }, - "into_keys": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_keys" - }, - "into_values": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_values" - }, - "remove": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove" - }, - "serialize": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.serialize" - } - } - } - }, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "hash_map.rs": { - "Path": "hash_map.rs" - } + "id": "/Users/bytedance/golang/work/abcoder/tmp/metainfo", + "Modules": { + "ahash@0.8.11": { + "Language": "rust", + "Version": "0.8.11", + "Name": "ahash", + "Dir": "", + "Packages": { + "ahash::hash_map": { + "IsMain": false, + "IsTest": false, + "PkgPath": "ahash::hash_map", + "Functions": { + "AHashMap.deref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.deref", + "File": "hash_map.rs", + "Line": 280, + "StartOffset": 8076, + "EndOffset": 8132, + "Content": "impl Deref for AHashMap {\n type Target = HashMap;\n fn deref(&self) -> &Self::Target {\n &self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.deref_mut": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.deref_mut", + "File": "hash_map.rs", + "Line": 286, + "StartOffset": 8187, + "EndOffset": 8259, + "Content": "impl DerefMut for AHashMap {\n fn deref_mut(&mut self) -> &mut Self::Target {\n &mut self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.eq", + "File": "hash_map.rs", + "Line": 304, + "StartOffset": 8473, + "EndOffset": 8556, + "Content": "impl PartialEq for AHashMap\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(&self, other: &AHashMap) -> bool {\n self.0.eq(&other.0)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.extend": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "File": "hash_map.rs", + "Line": 389, + "StartOffset": 10454, + "EndOffset": 10565, + "Content": "impl Extend<(K, V)> for AHashMap\nwhere\n K: Eq + Hash,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend>(&mut self, iter: T) {\n self.0.extend(iter)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.fmt", + "File": "hash_map.rs", + "Line": 342, + "StartOffset": 9170, + "EndOffset": 9256, + "Content": "impl Debug for AHashMap\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n self.0.fmt(fmt)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.get": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "hash_map.rs", + "Line": 85, + "StartOffset": 2421, + "EndOffset": 3065, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n pub fn get(&self, k: &Q) -> Option<&V>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get(k)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.get_key_value": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_key_value", + "File": "hash_map.rs", + "Line": 110, + "StartOffset": 3071, + "EndOffset": 3779, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns the key-value pair corresponding to the supplied key.\n ///\n /// The supplied key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\n /// assert_eq!(map.get_key_value(&2), None);\n /// ```\n #[inline]\n pub fn get_key_value(&self, k: &Q) -> Option<(&K, &V)>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get_key_value(k)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.get_mut": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_mut", + "File": "hash_map.rs", + "Line": 135, + "StartOffset": 3785, + "EndOffset": 4478, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Returns a mutable reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// if let Some(x) = map.get_mut(&1) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[&1], \"b\");\n /// ```\n #[inline]\n pub fn get_mut(&mut self, k: &Q) -> Option<&mut V>\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.get_mut(k)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.index": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.index", + "File": "hash_map.rs", + "Line": 325, + "StartOffset": 8818, + "EndOffset": 9064, + "Content": "impl Index<&Q> for AHashMap\nwhere\n K: Eq + Hash + Borrow,\n Q: Eq + Hash,\n S: BuildHasher,\n{\n type Output = V;\n\n /// Returns a reference to the value corresponding to the supplied key.\n ///\n /// # Panics\n ///\n /// Panics if the key is not present in the `HashMap`.\n #[inline]\n /// Returns a reference to the value corresponding to the supplied key.\n ///\n /// # Panics\n ///\n /// Panics if the key is not present in the `HashMap`.\n #[inline]\n fn index(&self, key: &Q) -> &V {\n self.0.index(key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.insert": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "File": "hash_map.rs", + "Line": 162, + "StartOffset": 4484, + "EndOffset": 5343, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Inserts a key-value pair into the map.\n ///\n /// If the map did not have this key present, [`None`] is returned.\n ///\n /// If the map did have this key present, the value is updated, and the old\n /// value is returned. The key is not updated, though; this matters for\n /// types that can be `==` without being identical. See the [module-level\n /// documentation] for more.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// assert_eq!(map.insert(37, \"a\"), None);\n /// assert_eq!(map.is_empty(), false);\n ///\n /// map.insert(37, \"b\");\n /// assert_eq!(map.insert(37, \"c\"), Some(\"b\"));\n /// assert_eq!(map[&37], \"c\");\n /// ```\n #[inline]\n pub fn insert(&mut self, k: K, v: V) -> Option {\n self.0.insert(k, v)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.into": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into", + "File": "hash_map.rs", + "Line": 48, + "StartOffset": 1311, + "EndOffset": 1384, + "Content": "impl Into> for AHashMap {\n fn into(self) -> HashMap {\n self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.into_iter": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "File": "hash_map.rs", + "Line": 363, + "StartOffset": 9847, + "EndOffset": 9916, + "Content": "impl<'a, K, V, S> IntoIterator for &'a AHashMap {\n type Item = (&'a K, &'a V);\n type IntoIter = hash_map::Iter<'a, K, V>;\n fn into_iter(self) -> Self::IntoIter {\n (&self.0).iter()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.into_keys": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_keys", + "File": "hash_map.rs", + "Line": 189, + "StartOffset": 5349, + "EndOffset": 6305, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Creates a consuming iterator visiting all the keys in arbitrary order.\n /// The map cannot be used after calling this.\n /// The iterator element type is `K`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let map = HashMap::from([\n /// (\"a\", 1),\n /// (\"b\", 2),\n /// (\"c\", 3),\n /// ]);\n ///\n /// let mut vec: Vec<&str> = map.into_keys().collect();\n /// // The `IntoKeys` iterator produces keys in arbitrary order, so the\n /// // keys must be sorted to test them against a sorted array.\n /// vec.sort_unstable();\n /// assert_eq!(vec, [\"a\", \"b\", \"c\"]);\n /// ```\n ///\n /// # Performance\n ///\n /// In the current implementation, iterating over keys takes O(capacity) time\n /// instead of O(len) because it internally visits empty buckets too.\n #[inline]\n pub fn into_keys(self) -> IntoKeys {\n self.0.into_keys()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.into_values": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_values", + "File": "hash_map.rs", + "Line": 220, + "StartOffset": 6311, + "EndOffset": 7278, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Creates a consuming iterator visiting all the values in arbitrary order.\n /// The map cannot be used after calling this.\n /// The iterator element type is `V`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let map = HashMap::from([\n /// (\"a\", 1),\n /// (\"b\", 2),\n /// (\"c\", 3),\n /// ]);\n ///\n /// let mut vec: Vec = map.into_values().collect();\n /// // The `IntoValues` iterator produces values in arbitrary order, so\n /// // the values must be sorted to test them against a sorted array.\n /// vec.sort_unstable();\n /// assert_eq!(vec, [1, 2, 3]);\n /// ```\n ///\n /// # Performance\n ///\n /// In the current implementation, iterating over values takes O(capacity) time\n /// instead of O(len) because it internally visits empty buckets too.\n #[inline]\n pub fn into_values(self) -> IntoValues {\n self.0.into_values()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.remove": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "File": "hash_map.rs", + "Line": 251, + "StartOffset": 7284, + "EndOffset": 7988, + "Content": "impl AHashMap\nwhere\n K: Hash + Eq,\n S: BuildHasher,\n{\n /// Returns a reference to the value corresponding to the key.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.get(&1), Some(&\"a\"));\n /// assert_eq!(map.get(&2), None);\n /// ```\n #[inline]\n /// Removes a key from the map, returning the value at the key if the key\n /// was previously in the map.\n ///\n /// The key may be any borrowed form of the map's key type, but\n /// [`Hash`] and [`Eq`] on the borrowed form *must* match those for\n /// the key type.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::collections::HashMap;\n ///\n /// let mut map = HashMap::new();\n /// map.insert(1, \"a\");\n /// assert_eq!(map.remove(&1), Some(\"a\"));\n /// assert_eq!(map.remove(&1), None);\n /// ```\n #[inline]\n pub fn remove(&mut self, k: &Q) -> Option\n where\n K: Borrow,\n Q: Hash + Eq,\n {\n self.0.remove(k)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.serialize": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.serialize", + "File": "hash_map.rs", + "Line": 424, + "StartOffset": 11502, + "EndOffset": 11629, + "Content": "#[cfg(feature = \"serde\")]\nimpl Serialize for AHashMap\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize(&self, serializer: S) -> Result {\n self.deref().serialize(serializer)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap::with_capacity": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "hash_map.rs", + "Line": 60, + "StartOffset": 1703, + "EndOffset": 2000, + "Content": "impl AHashMap {\n /// This crates a hashmap using [RandomState::new] which obtains its keys from [RandomSource].\n /// See the documentation in [RandomSource] for notes about key strength.\n /// This crates a hashmap with the specified capacity using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n pub fn with_capacity(capacity: usize) -> Self {\n AHashMap(HashMap::with_capacity_and_hasher(capacity, RandomState::new()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } } - }, - "bytes@1.10.0": { - "Language": "rust", - "Version": "1.10.0", - "Name": "bytes", - "Dir": "", - "Packages": { - "bytes::bytes": { - "IsMain": false, - "IsTest": false, - "PkgPath": "bytes::bytes", - "Functions": { - "_split_off_must_use": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "_split_off_must_use", - "File": "bytes.rs", - "Line": 1635, - "StartOffset": 47713, - "EndOffset": 47905, - "Content": "/// ```compile_fail\n/// use bytes::Bytes;\n/// #[deny(unused_must_use)]\n/// {\n/// let mut b1 = Bytes::from(\"hello world\");\n/// b1.split_off(6);\n/// }\n/// ```\nfn _split_off_must_use() {}" - }, - "_split_to_must_use": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "_split_to_must_use", - "File": "bytes.rs", - "Line": 1625, - "StartOffset": 47521, - "EndOffset": 47711, - "Content": "/// ```compile_fail\n/// use bytes::Bytes;\n/// #[deny(unused_must_use)]\n/// {\n/// let mut b1 = Bytes::from(\"hello world\");\n/// b1.split_to(6);\n/// }\n/// ```\nfn _split_to_must_use() {}" - }, - "free_boxed_slice": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "free_boxed_slice", - "File": "bytes.rs", - "Line": 1346, - "StartOffset": 37917, - "EndOffset": 38097, - "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = offset_from(offset, buf) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" - }, - "owned_box_and_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_box_and_drop", - "File": "bytes.rs", - "Line": 1123, - "StartOffset": 31463, - "EndOffset": 31577, - "Content": "unsafe fn owned_box_and_drop(ptr: *mut ()) {\n let b: Box> = Box::from_raw(ptr as _);\n drop(b);\n}" - }, - "owned_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_clone", - "File": "bytes.rs", - "Line": 1128, - "StartOffset": 31579, - "EndOffset": 32011, - "Content": "unsafe fn owned_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let owned = data.load(Ordering::Relaxed);\n let ref_cnt = &(*owned.cast::()).ref_cnt;\n let old_cnt = ref_cnt.fetch_add(1, Ordering::Relaxed);\n if old_cnt > usize::MAX >> 1 {\n crate::abort()\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(owned as _),\n vtable: &OWNED_VTABLE,\n }\n}" - }, - "owned_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_drop", - "File": "bytes.rs", - "Line": 1173, - "StartOffset": 32803, - "EndOffset": 32957, - "Content": "unsafe fn owned_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {\n let owned = data.load(Ordering::Relaxed);\n owned_drop_impl(owned);\n}" - }, - "owned_drop_impl": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_drop_impl", - "File": "bytes.rs", - "Line": 1159, - "StartOffset": 32468, - "EndOffset": 32801, - "Content": "unsafe fn owned_drop_impl(owned: *mut ()) {\n let lifetime = owned.cast::();\n let ref_cnt = &(*lifetime).ref_cnt;\n\n let old_cnt = ref_cnt.fetch_sub(1, Ordering::Release);\n if old_cnt != 1 {\n return;\n }\n ref_cnt.load(Ordering::Acquire);\n\n let drop_fn = &(*lifetime).drop;\n drop_fn(owned)\n}" - }, - "owned_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_is_unique", - "File": "bytes.rs", - "Line": 1155, - "StartOffset": 32396, - "EndOffset": 32466, - "Content": "unsafe fn owned_is_unique(_data: &AtomicPtr<()>) -> bool {\n false\n}" - }, - "owned_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_to_mut", - "File": "bytes.rs", - "Line": 1149, - "StartOffset": 32171, - "EndOffset": 32394, - "Content": "unsafe fn owned_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n let bytes_mut = BytesMut::from_vec(owned_to_vec(data, ptr, len));\n owned_drop_impl(data.load(Ordering::Relaxed));\n bytes_mut\n}" - }, - "owned_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "owned_to_vec", - "File": "bytes.rs", - "Line": 1144, - "StartOffset": 32013, - "EndOffset": 32169, - "Content": "unsafe fn owned_to_vec(_data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" - }, - "promotable_even_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_clone", - "File": "bytes.rs", - "Line": 1204, - "StartOffset": 33621, - "EndOffset": 34068, - "Content": "unsafe fn promotable_even_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shallow_clone_arc(shared.cast(), ptr, len)\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n let buf = ptr_map(shared.cast(), |addr| addr & !KIND_MASK);\n shallow_clone_vec(data, shared, buf, ptr, len)\n }\n}" - }, - "promotable_even_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_drop", - "File": "bytes.rs", - "Line": 1284, - "StartOffset": 36013, - "EndOffset": 36480, - "Content": "unsafe fn promotable_even_drop(data: &mut AtomicPtr<()>, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n release_shared(shared.cast());\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n let buf = ptr_map(shared.cast(), |addr| addr & !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" - }, - "promotable_even_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_to_mut", - "File": "bytes.rs", - "Line": 1278, - "StartOffset": 35800, - "EndOffset": 36011, - "Content": "unsafe fn promotable_even_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n promotable_to_mut(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr & !KIND_MASK)\n })\n}" - }, - "promotable_even_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_to_vec", - "File": "bytes.rs", - "Line": 1272, - "StartOffset": 35588, - "EndOffset": 35798, - "Content": "unsafe fn promotable_even_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr & !KIND_MASK)\n })\n}" - }, - "promotable_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_is_unique", - "File": "bytes.rs", - "Line": 1334, - "StartOffset": 37598, - "EndOffset": 37915, - "Content": "unsafe fn promotable_is_unique(data: &AtomicPtr<()>) -> bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n } else {\n true\n }\n}" - }, - "promotable_odd_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_clone", - "File": "bytes.rs", - "Line": 1299, - "StartOffset": 36482, - "EndOffset": 36868, - "Content": "unsafe fn promotable_odd_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shallow_clone_arc(shared as _, ptr, len)\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n shallow_clone_vec(data, shared, shared.cast(), ptr, len)\n }\n}" - }, - "promotable_odd_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_drop", - "File": "bytes.rs", - "Line": 1319, - "StartOffset": 37191, - "EndOffset": 37596, - "Content": "unsafe fn promotable_odd_drop(data: &mut AtomicPtr<()>, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n release_shared(shared.cast());\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n\n free_boxed_slice(shared.cast(), ptr, len);\n }\n });\n}" - }, - "promotable_odd_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_to_mut", - "File": "bytes.rs", - "Line": 1315, - "StartOffset": 37030, - "EndOffset": 37189, - "Content": "unsafe fn promotable_odd_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n promotable_to_mut(data, ptr, len, |shared| shared.cast())\n}" - }, - "promotable_odd_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_to_vec", - "File": "bytes.rs", - "Line": 1311, - "StartOffset": 36870, - "EndOffset": 37028, - "Content": "unsafe fn promotable_odd_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" - }, - "promotable_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_to_mut", - "File": "bytes.rs", - "Line": 1243, - "StartOffset": 34686, - "EndOffset": 35586, - "Content": "unsafe fn promotable_to_mut(\n data: &AtomicPtr<()>,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -> *mut u8,\n) -> BytesMut {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shared_to_mut_impl(shared.cast(), ptr, len)\n } else {\n // KIND_VEC is a view of an underlying buffer at a certain offset.\n // The ptr + len always represents the end of that buffer.\n // Before truncating it, it is first promoted to KIND_ARC.\n // Thus, we can safely reconstruct a Vec from it without leaking memory.\n debug_assert_eq!(kind, KIND_VEC);\n\n let buf = f(shared);\n let off = offset_from(ptr, buf);\n let cap = off + len;\n let v = Vec::from_raw_parts(buf, cap, cap);\n\n let mut b = BytesMut::from_vec(v);\n b.advance_unchecked(off);\n b\n }\n}" - }, - "promotable_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_to_vec", - "File": "bytes.rs", - "Line": 1217, - "StartOffset": 34070, - "EndOffset": 34684, - "Content": "unsafe fn promotable_to_vec(\n data: &AtomicPtr<()>,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -> *mut u8,\n) -> Vec {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shared_to_vec_impl(shared.cast(), ptr, len)\n } else {\n // If Bytes holds a Vec, then the offset must be 0.\n debug_assert_eq!(kind, KIND_VEC);\n\n let buf = f(shared);\n\n let cap = offset_from(ptr, buf) + len;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n }\n}" - }, - "ptr_map": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "ptr_map", - "File": "bytes.rs", - "Line": 1592, - "StartOffset": 46647, - "EndOffset": 47209, - "Content": "// Ideally we would always use this version of `ptr_map` since it is strict\n// provenance compatible, but it results in worse codegen. We will however still\n// use it on miri because it gives better diagnostics for people who test bytes\n// code with miri.\n//\n// See https://github.com/tokio-rs/bytes/pull/545 for more info.\n#[cfg(miri)]\nfn ptr_map(ptr: *mut u8, f: F) -> *mut u8\nwhere\n F: FnOnce(usize) -> usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n let diff = new_addr.wrapping_sub(old_addr);\n ptr.wrapping_add(diff)\n}" - }, - "release_shared": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "release_shared", - "File": "bytes.rs", - "Line": 1560, - "StartOffset": 45279, - "EndOffset": 46645, - "Content": "unsafe fn release_shared(ptr: *mut Shared) {\n // `Shared` storage... follow the drop steps from Arc.\n if (*ptr).ref_cnt.fetch_sub(1, Ordering::Release) != 1 {\n return;\n }\n\n // This fence is needed to prevent reordering of use of the data and\n // deletion of the data. Because it is marked `Release`, the decreasing\n // of the reference count synchronizes with this `Acquire` fence. This\n // means that use of the data happens before decreasing the reference\n // count, which happens before this fence, which happens before the\n // deletion of the data.\n //\n // As explained in the [Boost documentation][1],\n //\n // > It is important to enforce any possible access to the object in one\n // > thread (through an existing reference) to *happen before* deleting\n // > the object in a different thread. This is achieved by a \"release\"\n // > operation after dropping a reference (any access to the object\n // > through this reference must obviously happened before), and an\n // > \"acquire\" operation before deleting the object.\n //\n // [1]: (www.boost.org/doc/libs/1_55_0/doc/html/atomic/usage_examples.html)\n //\n // Thread sanitizer does not support atomic fences. Use an atomic load\n // instead.\n (*ptr).ref_cnt.load(Ordering::Acquire);\n\n // Drop the data\n drop(Box::from_raw(ptr));\n}" - }, - "shallow_clone_arc": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_arc", - "File": "bytes.rs", - "Line": 1473, - "StartOffset": 42288, - "EndOffset": 42634, - "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -> Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size > usize::MAX >> 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: &SHARED_VTABLE,\n }\n}" - }, - "shallow_clone_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_vec", - "File": "bytes.rs", - "Line": 1488, - "StartOffset": 42636, - "EndOffset": 45277, - "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: &AtomicPtr<()>,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -> Bytes {\n // If the buffer is still tracked in a `Vec`. It is time to\n // promote the vec to an `Arc`. This could potentially be called\n // concurrently, so some care must be taken.\n\n // First, allocate a new `Shared` instance containing the\n // `Vec` fields. It's important to note that `ptr`, `len`,\n // and `cap` cannot be mutated without having `&mut self`.\n // This means that these fields will not be concurrently\n // updated and since the buffer hasn't been promoted to an\n // `Arc`, those three fields still are the components of the\n // vector.\n let shared = Box::new(Shared {\n buf,\n cap: offset_from(offset, buf) + len,\n // Initialize refcount to 2. One for this reference, and one\n // for the new clone that will be returned from\n // `shallow_clone`.\n ref_cnt: AtomicUsize::new(2),\n });\n\n let shared = Box::into_raw(shared);\n\n // The pointer should be aligned, so this assert should\n // always succeed.\n debug_assert!(\n 0 == (shared as usize & KIND_MASK),\n \"internal: Box should have an aligned pointer\",\n );\n\n // Try compare & swapping the pointer into the `arc` field.\n // `Release` is used synchronize with other threads that\n // will load the `arc` field.\n //\n // If the `compare_exchange` fails, then the thread lost the\n // race to promote the buffer to shared. The `Acquire`\n // ordering will synchronize with the `compare_exchange`\n // that happened in the other thread and the `Shared`\n // pointed to by `actual` will be visible.\n match atom.compare_exchange(ptr as _, shared as _, Ordering::AcqRel, Ordering::Acquire) {\n Ok(actual) => {\n debug_assert!(actual as usize == ptr as usize);\n // The upgrade was successful, the new handle can be\n // returned.\n Bytes {\n ptr: offset,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: &SHARED_VTABLE,\n }\n }\n Err(actual) => {\n // The upgrade failed, a concurrent clone happened. Release\n // the allocation that was made in this thread, it will not\n // be needed.\n let shared = Box::from_raw(shared);\n mem::forget(*shared);\n\n // Buffer already promoted to shared storage, so increment ref\n // count.\n shallow_clone_arc(actual as _, offset, len)\n }\n }\n}" - }, - "shared_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_clone", - "File": "bytes.rs", - "Line": 1384, - "StartOffset": 39059, - "EndOffset": 39236, - "Content": "unsafe fn shared_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Relaxed);\n shallow_clone_arc(shared as _, ptr, len)\n}" - }, - "shared_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_drop", - "File": "bytes.rs", - "Line": 1467, - "StartOffset": 42129, - "EndOffset": 42286, - "Content": "unsafe fn shared_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {\n data.with_mut(|shared| {\n release_shared(shared.cast());\n });\n}" - }, - "shared_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_is_unique", - "File": "bytes.rs", - "Line": 1461, - "StartOffset": 41914, - "EndOffset": 42127, - "Content": "pub(crate) unsafe fn shared_is_unique(data: &AtomicPtr<()>) -> bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" - }, - "shared_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_mut", - "File": "bytes.rs", - "Line": 1457, - "StartOffset": 41753, - "EndOffset": 41912, - "Content": "unsafe fn shared_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n shared_to_mut_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" - }, - "shared_to_mut_impl": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_mut_impl", - "File": "bytes.rs", - "Line": 1422, - "StartOffset": 40308, - "EndOffset": 41751, - "Content": "unsafe fn shared_to_mut_impl(shared: *mut Shared, ptr: *const u8, len: usize) -> BytesMut {\n // The goal is to check if the current handle is the only handle\n // that currently has access to the buffer. This is done by\n // checking if the `ref_cnt` is currently 1.\n //\n // The `Acquire` ordering synchronizes with the `Release` as\n // part of the `fetch_sub` in `release_shared`. The `fetch_sub`\n // operation guarantees that any mutations done in other threads\n // are ordered before the `ref_cnt` is decremented. As such,\n // this `Acquire` will guarantee that those mutations are\n // visible to the current thread.\n //\n // Otherwise, we take the other branch, copy the data and call `release_shared`.\n if (*shared).ref_cnt.load(Ordering::Acquire) == 1 {\n // Deallocate the `Shared` instance without running its destructor.\n let shared = *Box::from_raw(shared);\n let shared = ManuallyDrop::new(shared);\n let buf = shared.buf;\n let cap = shared.cap;\n\n // Rebuild Vec\n let off = offset_from(ptr, buf);\n let v = Vec::from_raw_parts(buf, len + off, cap);\n\n let mut b = BytesMut::from_vec(v);\n b.advance_unchecked(off);\n b\n } else {\n // Copy the data from Shared in a new Vec, then release it\n let v = slice::from_raw_parts(ptr, len).to_vec();\n release_shared(shared);\n BytesMut::from_vec(v)\n }\n}" - }, - "shared_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec", - "File": "bytes.rs", - "Line": 1418, - "StartOffset": 40148, - "EndOffset": 40306, - "Content": "unsafe fn shared_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n shared_to_vec_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" - }, - "shared_to_vec_impl": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec_impl", - "File": "bytes.rs", - "Line": 1389, - "StartOffset": 39238, - "EndOffset": 40146, - "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -> Vec {\n // Check that the ref_cnt is 1 (unique).\n //\n // If it is unique, then it is set to 0 with AcqRel fence for the same\n // reason in release_shared.\n //\n // Otherwise, we take the other branch and call release_shared.\n if (*shared)\n .ref_cnt\n .compare_exchange(1, 0, Ordering::AcqRel, Ordering::Relaxed)\n .is_ok()\n {\n // Deallocate the `Shared` instance without running its destructor.\n let shared = *Box::from_raw(shared);\n let shared = ManuallyDrop::new(shared);\n let buf = shared.buf;\n let cap = shared.cap;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n } else {\n let v = slice::from_raw_parts(ptr, len).to_vec();\n release_shared(shared);\n v\n }\n}" - }, - "static_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "static_clone", - "File": "bytes.rs", - "Line": 1086, - "StartOffset": 30604, - "EndOffset": 30765, - "Content": "unsafe fn static_clone(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let slice = slice::from_raw_parts(ptr, len);\n Bytes::from_static(slice)\n}" - }, - "static_drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "static_drop", - "File": "bytes.rs", - "Line": 1105, - "StartOffset": 31147, - "EndOffset": 31260, - "Content": "unsafe fn static_drop(_: &mut AtomicPtr<()>, _: *const u8, _: usize) {\n // nothing to drop for &'static [u8]\n}" - }, - "static_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "static_is_unique", - "File": "bytes.rs", - "Line": 1101, - "StartOffset": 31085, - "EndOffset": 31145, - "Content": "fn static_is_unique(_: &AtomicPtr<()>) -> bool {\n false\n}" - }, - "static_to_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "static_to_mut", - "File": "bytes.rs", - "Line": 1096, - "StartOffset": 30922, - "EndOffset": 31083, - "Content": "unsafe fn static_to_mut(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n let slice = slice::from_raw_parts(ptr, len);\n BytesMut::from(slice)\n}" - }, - "static_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "static_to_vec", - "File": "bytes.rs", - "Line": 1091, - "StartOffset": 30767, - "EndOffset": 30920, - "Content": "unsafe fn static_to_vec(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" - }, - "without_provenance": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "without_provenance", - "File": "bytes.rs", - "Line": 1619, - "StartOffset": 47405, - "EndOffset": 47501, - "Content": "fn without_provenance(ptr: usize) -> *const u8 {\n core::ptr::null::().wrapping_add(ptr)\n}" - } - }, - "Types": { - "Bytes": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "Bytes", - "File": "bytes.rs", - "Line": 21, - "StartOffset": 487, - "EndOffset": 4236, - "Content": "/// A cheaply cloneable and sliceable chunk of contiguous memory.\n///\n/// `Bytes` is an efficient container for storing and operating on contiguous\n/// slices of memory. It is intended for use primarily in networking code, but\n/// could have applications elsewhere as well.\n///\n/// `Bytes` values facilitate zero-copy network programming by allowing multiple\n/// `Bytes` objects to point to the same underlying memory.\n///\n/// `Bytes` does not have a single implementation. It is an interface, whose\n/// exact behavior is implemented through dynamic dispatch in several underlying\n/// implementations of `Bytes`.\n///\n/// All `Bytes` implementations must fulfill the following requirements:\n/// - They are cheaply cloneable and thereby shareable between an unlimited amount\n/// of components, for example by modifying a reference count.\n/// - Instances can be sliced to refer to a subset of the original buffer.\n///\n/// ```\n/// use bytes::Bytes;\n///\n/// let mut mem = Bytes::from(\"Hello world\");\n/// let a = mem.slice(0..5);\n///\n/// assert_eq!(a, \"Hello\");\n///\n/// let b = mem.split_to(6);\n///\n/// assert_eq!(mem, \"world\");\n/// assert_eq!(b, \"Hello \");\n/// ```\n///\n/// # Memory layout\n///\n/// The `Bytes` struct itself is fairly small, limited to 4 `usize` fields used\n/// to track information about which segment of the underlying memory the\n/// `Bytes` handle has access to.\n///\n/// `Bytes` keeps both a pointer to the shared state containing the full memory\n/// slice and a pointer to the start of the region visible by the handle.\n/// `Bytes` also tracks the length of its view into the memory.\n///\n/// # Sharing\n///\n/// `Bytes` contains a vtable, which allows implementations of `Bytes` to define\n/// how sharing/cloning is implemented in detail.\n/// When `Bytes::clone()` is called, `Bytes` will call the vtable function for\n/// cloning the backing storage in order to share it behind multiple `Bytes`\n/// instances.\n///\n/// For `Bytes` implementations which refer to constant memory (e.g. created\n/// via `Bytes::from_static()`) the cloning implementation will be a no-op.\n///\n/// For `Bytes` implementations which point to a reference counted shared storage\n/// (e.g. an `Arc<[u8]>`), sharing will be implemented by increasing the\n/// reference count.\n///\n/// Due to this mechanism, multiple `Bytes` instances may point to the same\n/// shared memory region.\n/// Each `Bytes` instance can point to different sections within that\n/// memory region, and `Bytes` instances may or may not have overlapping views\n/// into the memory.\n///\n/// The following diagram visualizes a scenario where 2 `Bytes` instances make\n/// use of an `Arc`-based backing storage, and provide access to different views:\n///\n/// ```text\n///\n/// Arc ptrs ┌─────────┐\n/// ________________________ / │ Bytes 2 │\n/// / └─────────┘\n/// / ┌───────────┐ | |\n/// |_________/ │ Bytes 1 │ | |\n/// | └───────────┘ | |\n/// | | | ___/ data | tail\n/// | data | tail |/ |\n/// v v v v\n/// ┌─────┬─────┬───────────┬───────────────┬─────┐\n/// │ Arc │ │ │ │ │\n/// └─────┴─────┴───────────┴───────────────┴─────┘\n/// ```\npub struct Bytes {\n ptr: *const u8,\n len: usize,\n // inlined \"trait object\"\n data: AtomicPtr<()>,\n vtable: &'static Vtable,\n}" - }, - "Owned": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "Owned", - "File": "bytes.rs", - "Line": 1117, - "StartOffset": 31388, - "EndOffset": 31461, - "Content": "#[repr(C)]\nstruct Owned {\n lifetime: OwnedLifetime,\n owner: T,\n}" - }, - "OwnedLifetime": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "OwnedLifetime", - "File": "bytes.rs", - "Line": 1111, - "StartOffset": 31295, - "EndOffset": 31386, - "Content": "#[repr(C)]\nstruct OwnedLifetime {\n ref_cnt: AtomicUsize,\n drop: unsafe fn(*mut ()),\n}" - }, - "Shared": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "Shared", - "File": "bytes.rs", - "Line": 1353, - "StartOffset": 38133, - "EndOffset": 38286, - "Content": "struct Shared {\n // Holds arguments to dealloc upon Drop, but otherwise doesn't use them\n buf: *mut u8,\n cap: usize,\n ref_cnt: AtomicUsize,\n}" - }, - "Vtable": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "Vtable", - "File": "bytes.rs", - "Line": 110, - "StartOffset": 4238, - "EndOffset": 4734, - "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> Vec,\n pub to_mut: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> BytesMut,\n /// fn(data)\n pub is_unique: unsafe fn(&AtomicPtr<()>) -> bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(&mut AtomicPtr<()>, *const u8, usize),\n}" - } - }, - "Vars": { - "KIND_ARC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_ARC", - "File": "bytes.rs", - "Line": 1380, - "StartOffset": 38970, - "EndOffset": 38998, - "Content": "const KIND_ARC: usize = 0b0;" - }, - "KIND_MASK": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_MASK", - "File": "bytes.rs", - "Line": 1382, - "StartOffset": 39028, - "EndOffset": 39057, - "Content": "const KIND_MASK: usize = 0b1;" - }, - "KIND_VEC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_VEC", - "File": "bytes.rs", - "Line": 1381, - "StartOffset": 38999, - "EndOffset": 39027, - "Content": "const KIND_VEC: usize = 0b1;" - }, - "OWNED_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "OWNED_VTABLE", - "File": "bytes.rs", - "Line": 1178, - "StartOffset": 32959, - "EndOffset": 33130, - "Content": "static OWNED_VTABLE: Vtable = Vtable {\n clone: owned_clone,\n to_vec: owned_to_vec,\n to_mut: owned_to_mut,\n is_unique: owned_is_unique,\n drop: owned_drop,\n};" - }, - "PROMOTABLE_EVEN_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_EVEN_VTABLE", - "File": "bytes.rs", - "Line": 1188, - "StartOffset": 33170, - "EndOffset": 33396, - "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n to_mut: promotable_even_to_mut,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" - }, - "PROMOTABLE_ODD_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_ODD_VTABLE", - "File": "bytes.rs", - "Line": 1196, - "StartOffset": 33398, - "EndOffset": 33619, - "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n to_mut: promotable_odd_to_mut,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" - }, - "SHARED_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "SHARED_VTABLE", - "File": "bytes.rs", - "Line": 1372, - "StartOffset": 38791, - "EndOffset": 38968, - "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n to_mut: shared_to_mut,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" - }, - "STATIC_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.10.0", - "PkgPath": "bytes::bytes", - "Name": "STATIC_VTABLE", - "File": "bytes.rs", - "Line": 1078, - "StartOffset": 30426, - "EndOffset": 30602, - "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n to_mut: static_to_mut,\n is_unique: static_is_unique,\n drop: static_drop,\n};" - } - } - } - }, - "Dependencies": {}, - "Files": { - "bytes.rs": { - "Path": "bytes.rs" - } + }, + "Types": { + "AHashMap": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "hash_map.rs", + "Line": 18, + "StartOffset": 426, + "EndOffset": 665, + "Content": "/// A [`HashMap`](std::collections::HashMap) using [`RandomState`](crate::RandomState) to hash the items.\n/// (Requires the `std` feature to be enabled.)\n#[derive(Clone)]\npub struct AHashMap(HashMap);", + "Methods": { + "deref": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.deref" + }, + "deref_mut": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.deref_mut" + }, + "eq": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.eq" + }, + "extend": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend" + }, + "fmt": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.fmt" + }, + "get": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get" + }, + "get_key_value": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_key_value" + }, + "get_mut": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_mut" + }, + "index": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.index" + }, + "insert": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert" + }, + "into": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into" + }, + "into_iter": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter" + }, + "into_keys": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_keys" + }, + "into_values": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_values" + }, + "remove": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove" + }, + "serialize": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.serialize" + } + } } - }, - "faststr@0.2.31": { - "Language": "rust", - "Version": "0.2.31", - "Name": "faststr", - "Dir": "", - "Packages": { - "faststr": { - "IsMain": false, - "IsTest": false, - "PkgPath": "faststr", - "Functions": { - "FastStr.as_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.as_ref", - "File": "lib.rs", - "Line": 322, - "StartOffset": 10088, - "EndOffset": 10164, - "Content": "impl AsRef for FastStr {\n #[inline(always)]\n #[inline(always)]\n fn as_ref(&self) -> &str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.as_str", - "File": "lib.rs", - "Line": 209, - "StartOffset": 6596, - "EndOffset": 6726, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n pub fn as_str(&self) -> &str {\n self.0.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.borrow": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.borrow", - "File": "lib.rs", - "Line": 505, - "StartOffset": 14086, - "EndOffset": 14154, - "Content": "impl Borrow for FastStr {\n #[inline]\n #[inline]\n fn borrow(&self) -> &str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.cmp": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.cmp", - "File": "lib.rs", - "Line": 418, - "StartOffset": 11783, - "EndOffset": 11889, - "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(&self, other: &FastStr) -> Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.deep_clone_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes", - "File": "lib.rs", - "Line": 266, - "StartOffset": 8368, - "EndOffset": 8832, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// If the inner repr of FastStr is a Bytes, then it will be deep cloned and returned as a new FastStr.\n /// Otherwise, it will return a new FastStr with the same repr which has no cost.\n ///\n /// This is used to free the original memory of the Bytes.\n ///\n /// This is not stable and may be removed or renamed in the future.\n #[inline]\n #[doc(hidden)]\n pub fn deep_clone_bytes(&self) -> Self {\n Self(self.0.deep_clone_bytes())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.deref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.deref", - "File": "lib.rs", - "Line": 331, - "StartOffset": 10221, - "EndOffset": 10288, - "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(&self) -> &str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.eq", - "File": "lib.rs", - "Line": 404, - "StartOffset": 11539, - "EndOffset": 11624, - "Content": "impl<'a> PartialEq<&'a String> for FastStr {\n #[inline]\n #[inline]\n fn eq(&self, other: &&'a String) -> bool {\n self == *other\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.fmt", - "File": "lib.rs", - "Line": 439, - "StartOffset": 12217, - "EndOffset": 12333, - "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.hash": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.hash", - "File": "lib.rs", - "Line": 432, - "StartOffset": 12075, - "EndOffset": 12179, - "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash(&self, hasher: &mut H) {\n self.as_str().hash(hasher)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.index": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.index", - "File": "lib.rs", - "Line": 245, - "StartOffset": 7633, - "EndOffset": 8008, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return a new `FastStr` starting at index `start` and ending at index `end`. `[start..end)`\n ///\n /// # Safety\n ///\n /// The caller must guarantee that the string between `start` and `end` is valid utf-8.\n #[inline(always)]\n pub unsafe fn index(&self, start: usize, end: usize) -> Self {\n Self(self.0.slice_ref(&self.as_bytes()[start..end]))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.into_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes", - "File": "lib.rs", - "Line": 215, - "StartOffset": 6732, - "EndOffset": 6889, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Consumes and converts the `FastStr` into a `Bytes` object.\n #[inline(always)]\n pub fn into_bytes(self) -> Bytes {\n self.0.into_bytes()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.into_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.into_string", - "File": "lib.rs", - "Line": 255, - "StartOffset": 8014, - "EndOffset": 8362, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Consumes and converts the `FastStr` into a `String` at best effort.\n #[deprecated(\n since = \"0.2.13\",\n note = \"This method does not really express the `into` semantic. Use `to_string` instead.\"\n )]\n #[inline(always)]\n pub fn into_string(self) -> String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.is_empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.is_empty", - "File": "lib.rs", - "Line": 227, - "StartOffset": 7015, - "EndOffset": 7150, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return `true` if the `FastStr` is empty.\n #[inline(always)]\n pub fn is_empty(&self) -> bool {\n self.0.is_empty()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.len", - "File": "lib.rs", - "Line": 221, - "StartOffset": 6895, - "EndOffset": 7009, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return the `FastStr` length.\n #[inline(always)]\n pub fn len(&self) -> usize {\n self.0.len()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.partial_cmp": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.partial_cmp", - "File": "lib.rs", - "Line": 425, - "StartOffset": 11927, - "EndOffset": 12037, - "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(&self, other: &FastStr) -> Option {\n Some(self.cmp(other))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.slice_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref", - "File": "lib.rs", - "Line": 233, - "StartOffset": 7156, - "EndOffset": 7627, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return a new `FastStr` that represents a subset of the current string.\n ///\n /// Note: If the subset is small enough, it will be inlined.\n #[inline(always)]\n pub fn slice_ref(&self, subset: &str) -> Self {\n if subset.len() <= INLINE_CAP {\n // Safety: we have checked the length of subset <= `INLINE_CAP`.\n return Self(unsafe { Repr::new_inline_impl(subset) });\n }\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr::from_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "lib.rs", - "Line": 92, - "StartOffset": 2770, - "EndOffset": 2989, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a `String`.\n #[inline]\n pub fn from_string(s: String) -> Self {\n if Self::can_inline(&s) {\n return Self::new(s);\n }\n Self(Repr::from_string(s))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr::from_vec_u8_unchecked": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "File": "lib.rs", - "Line": 170, - "StartOffset": 5347, - "EndOffset": 5693, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a `Vec`. This is an unsafe method because\n /// the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `v` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_vec_u8_unchecked(v: Vec) -> Self {\n Self::from_bytes_unchecked(v.into())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr::new": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new", - "File": "lib.rs", - "Line": 30, - "StartOffset": 890, - "EndOffset": 1261, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n pub fn new(text: T) -> Self\n where\n T: AsRef,\n {\n Self(Repr::new(text))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr::new_u8_slice_unchecked": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "File": "lib.rs", - "Line": 65, - "StartOffset": 2025, - "EndOffset": 2413, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a byte slice `v`. This is an unsafe method because\n /// the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `v` must be valid UTF-8.\n #[inline]\n pub unsafe fn new_u8_slice_unchecked(v: &[u8]) -> Self {\n let s = unsafe { core::str::from_utf8_unchecked(v) };\n Self::new(s)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Repr.as_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.as_ref", - "File": "lib.rs", - "Line": 786, - "StartOffset": 22288, - "EndOffset": 22674, - "Content": "impl AsRef<[u8]> for Repr {\n #[inline]\n #[inline]\n fn as_ref(&self) -> &[u8] {\n match self {\n Self::Empty => &[],\n Self::Bytes(bytes) => bytes.as_ref(),\n Self::ArcStr(arc_str) => arc_str.as_bytes(),\n Self::ArcString(arc_string) => arc_string.as_bytes(),\n Self::StaticStr(s) => s.as_bytes(),\n Self::Inline { len, buf } => &buf[..*len],\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.as_str", - "File": "lib.rs", - "Line": 674, - "StartOffset": 18135, - "EndOffset": 18646, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(&self) -> &str {\n match self {\n Self::Empty => \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) => unsafe { core::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) => arc_str,\n Self::ArcString(arc_string) => arc_string,\n Self::StaticStr(s) => s,\n Self::Inline { len, buf } => unsafe { core::str::from_utf8_unchecked(&buf[..*len]) },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.deep_clone_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes", - "File": "lib.rs", - "Line": 718, - "StartOffset": 19810, - "EndOffset": 20450, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(&self) -> Self {\n match self {\n Self::Empty => Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) => unsafe { Self::new(core::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) => Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) => Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) => Self::StaticStr(s),\n Self::Inline { len, buf } => Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.into_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.into_bytes", - "File": "lib.rs", - "Line": 704, - "StartOffset": 19266, - "EndOffset": 19804, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -> Bytes {\n match self {\n Self::Empty => Bytes::new(),\n Self::Bytes(bytes) => bytes,\n Self::ArcStr(arc_str) => Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) => {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) => Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } => Bytes::from(buf[..len].to_vec()),\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.into_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.into_string", - "File": "lib.rs", - "Line": 687, - "StartOffset": 18652, - "EndOffset": 19260, - "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -> String {\n match self {\n Self::Empty => String::new(),\n Self::Bytes(bytes) => unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) => arc_str.to_string(),\n Self::ArcString(arc_string) => {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) => s.to_string(),\n Self::Inline { len, buf } => unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.is_empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.is_empty", - "File": "lib.rs", - "Line": 662, - "StartOffset": 17743, - "EndOffset": 18129, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(&self) -> bool {\n match self {\n Self::Empty => true,\n Self::Bytes(bytes) => bytes.is_empty(),\n Self::ArcStr(arc_str) => arc_str.is_empty(),\n Self::ArcString(arc_string) => arc_string.is_empty(),\n Self::StaticStr(s) => s.is_empty(),\n Self::Inline { len, .. } => *len == 0,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.len", - "File": "lib.rs", - "Line": 650, - "StartOffset": 17383, - "EndOffset": 17737, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(&self) -> usize {\n match self {\n Self::Empty => 0,\n Self::Bytes(bytes) => bytes.len(),\n Self::ArcStr(arc_str) => arc_str.len(),\n Self::ArcString(arc_string) => arc_string.len(),\n Self::StaticStr(s) => s.len(),\n Self::Inline { len, .. } => *len,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.slice_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.slice_ref", - "File": "lib.rs", - "Line": 734, - "StartOffset": 20456, - "EndOffset": 22252, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(&self, subset: &[u8]) -> Self {\n if subset.is_empty() {\n return Self::Empty;\n }\n let bytes_p = self.as_ref().as_ptr() as usize;\n let bytes_len = self.len();\n\n let sub_p = subset.as_ptr() as usize;\n let sub_len = subset.len();\n\n assert!(\n sub_p >= bytes_p,\n \"subset pointer ({:p}) is smaller than self pointer ({:p})\",\n subset.as_ptr(),\n self.as_ref().as_ptr(),\n );\n assert!(\n sub_p + sub_len <= bytes_p + bytes_len,\n \"subset is out of bounds: self = ({:p}, {}), subset = ({:p}, {})\",\n self.as_ref().as_ptr(),\n bytes_len,\n subset.as_ptr(),\n sub_len,\n );\n\n let sub_offset = sub_p - bytes_p;\n match self {\n Repr::Empty => panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) => Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) => Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) => Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) => Self::StaticStr(unsafe {\n core::str::from_utf8_unchecked(&s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } => Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(&buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "build_from_str_iter": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "build_from_str_iter", - "File": "lib.rs", - "Line": 460, - "StartOffset": 12709, - "EndOffset": 13436, - "Content": "fn build_from_str_iter(mut iter: impl Iterator) -> FastStr\nwhere\n T: AsRef,\n String: iter::Extend,\n{\n let mut len = 0;\n let mut buf = [0u8; INLINE_CAP];\n while let Some(slice) = iter.next() {\n let slice = slice.as_ref();\n let size = slice.len();\n if size + len > INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(&buf[..len]) });\n s.push_str(slice);\n s.extend(iter);\n return FastStr(Repr::Bytes(Bytes::from(s)));\n }\n buf[len..][..size].copy_from_slice(slice.as_bytes());\n len += size;\n }\n FastStr(Repr::Inline { len, buf })\n}" - } - }, - "Types": { - "FastStr": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "lib.rs", - "Line": 18, - "StartOffset": 412, - "EndOffset": 722, - "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n///\n/// **Note:** The memory size of `FastStr` is not `24`, so switching from [`String`] or [`SmolStr`](https://docs.rs/smol_str/latest/smol_str/struct.SmolStr.html) to `FastStr` may not be harmless.\n#[derive(Clone)]\npub struct FastStr(Repr);", - "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.as_ref" - }, - "as_str": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.as_str" - }, - "borrow": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.borrow" - }, - "cmp": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.cmp" - }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes" - }, - "deref": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.deref" - }, - "eq": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.eq" - }, - "fmt": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.fmt" - }, - "hash": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.hash" - }, - "index": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.index" - }, - "into_bytes": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes" - }, - "into_string": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.into_string" - }, - "is_empty": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.is_empty" - }, - "len": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.len" - }, - "partial_cmp": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.partial_cmp" - }, - "slice_ref": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref" - } - } - }, - "Repr": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr", - "File": "lib.rs", - "Line": 571, - "StartOffset": 15351, - "EndOffset": 15539, - "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc),\n ArcString(Arc),\n StaticStr(&'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", - "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.as_ref" - }, - "as_str": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.as_str" - }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes" - }, - "into_bytes": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.into_bytes" - }, - "into_string": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.into_string" - }, - "is_empty": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.is_empty" - }, - "len": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.len" - }, - "slice_ref": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "Repr.slice_ref" - } - } - } - }, - "Vars": { - "INLINE_CAP": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "INLINE_CAP", - "File": "lib.rs", - "Line": 569, - "StartOffset": 15320, - "EndOffset": 15349, - "Content": "const INLINE_CAP: usize = 24;" - } - } - } - }, - "Dependencies": {}, - "Files": { - "lib.rs": { - "Path": "lib.rs" - } + }, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "hash_map.rs": { + "Path": "hash_map.rs" + } + } + }, + "bytes@1.10.0": { + "Language": "rust", + "Version": "1.10.0", + "Name": "bytes", + "Dir": "", + "Packages": { + "bytes::bytes": { + "IsMain": false, + "IsTest": false, + "PkgPath": "bytes::bytes", + "Functions": { + "_split_off_must_use": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "_split_off_must_use", + "File": "bytes.rs", + "Line": 1635, + "StartOffset": 47713, + "EndOffset": 47905, + "Content": "/// ```compile_fail\n/// use bytes::Bytes;\n/// #[deny(unused_must_use)]\n/// {\n/// let mut b1 = Bytes::from(\"hello world\");\n/// b1.split_off(6);\n/// }\n/// ```\nfn _split_off_must_use() {}" + }, + "_split_to_must_use": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "_split_to_must_use", + "File": "bytes.rs", + "Line": 1625, + "StartOffset": 47521, + "EndOffset": 47711, + "Content": "/// ```compile_fail\n/// use bytes::Bytes;\n/// #[deny(unused_must_use)]\n/// {\n/// let mut b1 = Bytes::from(\"hello world\");\n/// b1.split_to(6);\n/// }\n/// ```\nfn _split_to_must_use() {}" + }, + "free_boxed_slice": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "free_boxed_slice", + "File": "bytes.rs", + "Line": 1346, + "StartOffset": 37917, + "EndOffset": 38097, + "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = offset_from(offset, buf) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" + }, + "owned_box_and_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_box_and_drop", + "File": "bytes.rs", + "Line": 1123, + "StartOffset": 31463, + "EndOffset": 31577, + "Content": "unsafe fn owned_box_and_drop(ptr: *mut ()) {\n let b: Box> = Box::from_raw(ptr as _);\n drop(b);\n}" + }, + "owned_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_clone", + "File": "bytes.rs", + "Line": 1128, + "StartOffset": 31579, + "EndOffset": 32011, + "Content": "unsafe fn owned_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let owned = data.load(Ordering::Relaxed);\n let ref_cnt = &(*owned.cast::()).ref_cnt;\n let old_cnt = ref_cnt.fetch_add(1, Ordering::Relaxed);\n if old_cnt > usize::MAX >> 1 {\n crate::abort()\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(owned as _),\n vtable: &OWNED_VTABLE,\n }\n}" + }, + "owned_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_drop", + "File": "bytes.rs", + "Line": 1173, + "StartOffset": 32803, + "EndOffset": 32957, + "Content": "unsafe fn owned_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {\n let owned = data.load(Ordering::Relaxed);\n owned_drop_impl(owned);\n}" + }, + "owned_drop_impl": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_drop_impl", + "File": "bytes.rs", + "Line": 1159, + "StartOffset": 32468, + "EndOffset": 32801, + "Content": "unsafe fn owned_drop_impl(owned: *mut ()) {\n let lifetime = owned.cast::();\n let ref_cnt = &(*lifetime).ref_cnt;\n\n let old_cnt = ref_cnt.fetch_sub(1, Ordering::Release);\n if old_cnt != 1 {\n return;\n }\n ref_cnt.load(Ordering::Acquire);\n\n let drop_fn = &(*lifetime).drop;\n drop_fn(owned)\n}" + }, + "owned_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_is_unique", + "File": "bytes.rs", + "Line": 1155, + "StartOffset": 32396, + "EndOffset": 32466, + "Content": "unsafe fn owned_is_unique(_data: &AtomicPtr<()>) -> bool {\n false\n}" + }, + "owned_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_to_mut", + "File": "bytes.rs", + "Line": 1149, + "StartOffset": 32171, + "EndOffset": 32394, + "Content": "unsafe fn owned_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n let bytes_mut = BytesMut::from_vec(owned_to_vec(data, ptr, len));\n owned_drop_impl(data.load(Ordering::Relaxed));\n bytes_mut\n}" + }, + "owned_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "owned_to_vec", + "File": "bytes.rs", + "Line": 1144, + "StartOffset": 32013, + "EndOffset": 32169, + "Content": "unsafe fn owned_to_vec(_data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" + }, + "promotable_even_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_clone", + "File": "bytes.rs", + "Line": 1204, + "StartOffset": 33621, + "EndOffset": 34068, + "Content": "unsafe fn promotable_even_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shallow_clone_arc(shared.cast(), ptr, len)\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n let buf = ptr_map(shared.cast(), |addr| addr & !KIND_MASK);\n shallow_clone_vec(data, shared, buf, ptr, len)\n }\n}" + }, + "promotable_even_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_drop", + "File": "bytes.rs", + "Line": 1284, + "StartOffset": 36013, + "EndOffset": 36480, + "Content": "unsafe fn promotable_even_drop(data: &mut AtomicPtr<()>, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n release_shared(shared.cast());\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n let buf = ptr_map(shared.cast(), |addr| addr & !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" + }, + "promotable_even_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_to_mut", + "File": "bytes.rs", + "Line": 1278, + "StartOffset": 35800, + "EndOffset": 36011, + "Content": "unsafe fn promotable_even_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n promotable_to_mut(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr & !KIND_MASK)\n })\n}" + }, + "promotable_even_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_to_vec", + "File": "bytes.rs", + "Line": 1272, + "StartOffset": 35588, + "EndOffset": 35798, + "Content": "unsafe fn promotable_even_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr & !KIND_MASK)\n })\n}" + }, + "promotable_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_is_unique", + "File": "bytes.rs", + "Line": 1334, + "StartOffset": 37598, + "EndOffset": 37915, + "Content": "unsafe fn promotable_is_unique(data: &AtomicPtr<()>) -> bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n } else {\n true\n }\n}" + }, + "promotable_odd_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_clone", + "File": "bytes.rs", + "Line": 1299, + "StartOffset": 36482, + "EndOffset": 36868, + "Content": "unsafe fn promotable_odd_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shallow_clone_arc(shared as _, ptr, len)\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n shallow_clone_vec(data, shared, shared.cast(), ptr, len)\n }\n}" + }, + "promotable_odd_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_drop", + "File": "bytes.rs", + "Line": 1319, + "StartOffset": 37191, + "EndOffset": 37596, + "Content": "unsafe fn promotable_odd_drop(data: &mut AtomicPtr<()>, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n release_shared(shared.cast());\n } else {\n debug_assert_eq!(kind, KIND_VEC);\n\n free_boxed_slice(shared.cast(), ptr, len);\n }\n });\n}" + }, + "promotable_odd_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_to_mut", + "File": "bytes.rs", + "Line": 1315, + "StartOffset": 37030, + "EndOffset": 37189, + "Content": "unsafe fn promotable_odd_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n promotable_to_mut(data, ptr, len, |shared| shared.cast())\n}" + }, + "promotable_odd_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_to_vec", + "File": "bytes.rs", + "Line": 1311, + "StartOffset": 36870, + "EndOffset": 37028, + "Content": "unsafe fn promotable_odd_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" + }, + "promotable_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_to_mut", + "File": "bytes.rs", + "Line": 1243, + "StartOffset": 34686, + "EndOffset": 35586, + "Content": "unsafe fn promotable_to_mut(\n data: &AtomicPtr<()>,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -> *mut u8,\n) -> BytesMut {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shared_to_mut_impl(shared.cast(), ptr, len)\n } else {\n // KIND_VEC is a view of an underlying buffer at a certain offset.\n // The ptr + len always represents the end of that buffer.\n // Before truncating it, it is first promoted to KIND_ARC.\n // Thus, we can safely reconstruct a Vec from it without leaking memory.\n debug_assert_eq!(kind, KIND_VEC);\n\n let buf = f(shared);\n let off = offset_from(ptr, buf);\n let cap = off + len;\n let v = Vec::from_raw_parts(buf, cap, cap);\n\n let mut b = BytesMut::from_vec(v);\n b.advance_unchecked(off);\n b\n }\n}" + }, + "promotable_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_to_vec", + "File": "bytes.rs", + "Line": 1217, + "StartOffset": 34070, + "EndOffset": 34684, + "Content": "unsafe fn promotable_to_vec(\n data: &AtomicPtr<()>,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -> *mut u8,\n) -> Vec {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize & KIND_MASK;\n\n if kind == KIND_ARC {\n shared_to_vec_impl(shared.cast(), ptr, len)\n } else {\n // If Bytes holds a Vec, then the offset must be 0.\n debug_assert_eq!(kind, KIND_VEC);\n\n let buf = f(shared);\n\n let cap = offset_from(ptr, buf) + len;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n }\n}" + }, + "ptr_map": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "ptr_map", + "File": "bytes.rs", + "Line": 1592, + "StartOffset": 46647, + "EndOffset": 47209, + "Content": "// Ideally we would always use this version of `ptr_map` since it is strict\n// provenance compatible, but it results in worse codegen. We will however still\n// use it on miri because it gives better diagnostics for people who test bytes\n// code with miri.\n//\n// See https://github.com/tokio-rs/bytes/pull/545 for more info.\n#[cfg(miri)]\nfn ptr_map(ptr: *mut u8, f: F) -> *mut u8\nwhere\n F: FnOnce(usize) -> usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n let diff = new_addr.wrapping_sub(old_addr);\n ptr.wrapping_add(diff)\n}" + }, + "release_shared": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "release_shared", + "File": "bytes.rs", + "Line": 1560, + "StartOffset": 45279, + "EndOffset": 46645, + "Content": "unsafe fn release_shared(ptr: *mut Shared) {\n // `Shared` storage... follow the drop steps from Arc.\n if (*ptr).ref_cnt.fetch_sub(1, Ordering::Release) != 1 {\n return;\n }\n\n // This fence is needed to prevent reordering of use of the data and\n // deletion of the data. Because it is marked `Release`, the decreasing\n // of the reference count synchronizes with this `Acquire` fence. This\n // means that use of the data happens before decreasing the reference\n // count, which happens before this fence, which happens before the\n // deletion of the data.\n //\n // As explained in the [Boost documentation][1],\n //\n // > It is important to enforce any possible access to the object in one\n // > thread (through an existing reference) to *happen before* deleting\n // > the object in a different thread. This is achieved by a \"release\"\n // > operation after dropping a reference (any access to the object\n // > through this reference must obviously happened before), and an\n // > \"acquire\" operation before deleting the object.\n //\n // [1]: (www.boost.org/doc/libs/1_55_0/doc/html/atomic/usage_examples.html)\n //\n // Thread sanitizer does not support atomic fences. Use an atomic load\n // instead.\n (*ptr).ref_cnt.load(Ordering::Acquire);\n\n // Drop the data\n drop(Box::from_raw(ptr));\n}" + }, + "shallow_clone_arc": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shallow_clone_arc", + "File": "bytes.rs", + "Line": 1473, + "StartOffset": 42288, + "EndOffset": 42634, + "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -> Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size > usize::MAX >> 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: &SHARED_VTABLE,\n }\n}" + }, + "shallow_clone_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shallow_clone_vec", + "File": "bytes.rs", + "Line": 1488, + "StartOffset": 42636, + "EndOffset": 45277, + "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: &AtomicPtr<()>,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -> Bytes {\n // If the buffer is still tracked in a `Vec`. It is time to\n // promote the vec to an `Arc`. This could potentially be called\n // concurrently, so some care must be taken.\n\n // First, allocate a new `Shared` instance containing the\n // `Vec` fields. It's important to note that `ptr`, `len`,\n // and `cap` cannot be mutated without having `&mut self`.\n // This means that these fields will not be concurrently\n // updated and since the buffer hasn't been promoted to an\n // `Arc`, those three fields still are the components of the\n // vector.\n let shared = Box::new(Shared {\n buf,\n cap: offset_from(offset, buf) + len,\n // Initialize refcount to 2. One for this reference, and one\n // for the new clone that will be returned from\n // `shallow_clone`.\n ref_cnt: AtomicUsize::new(2),\n });\n\n let shared = Box::into_raw(shared);\n\n // The pointer should be aligned, so this assert should\n // always succeed.\n debug_assert!(\n 0 == (shared as usize & KIND_MASK),\n \"internal: Box should have an aligned pointer\",\n );\n\n // Try compare & swapping the pointer into the `arc` field.\n // `Release` is used synchronize with other threads that\n // will load the `arc` field.\n //\n // If the `compare_exchange` fails, then the thread lost the\n // race to promote the buffer to shared. The `Acquire`\n // ordering will synchronize with the `compare_exchange`\n // that happened in the other thread and the `Shared`\n // pointed to by `actual` will be visible.\n match atom.compare_exchange(ptr as _, shared as _, Ordering::AcqRel, Ordering::Acquire) {\n Ok(actual) => {\n debug_assert!(actual as usize == ptr as usize);\n // The upgrade was successful, the new handle can be\n // returned.\n Bytes {\n ptr: offset,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: &SHARED_VTABLE,\n }\n }\n Err(actual) => {\n // The upgrade failed, a concurrent clone happened. Release\n // the allocation that was made in this thread, it will not\n // be needed.\n let shared = Box::from_raw(shared);\n mem::forget(*shared);\n\n // Buffer already promoted to shared storage, so increment ref\n // count.\n shallow_clone_arc(actual as _, offset, len)\n }\n }\n}" + }, + "shared_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_clone", + "File": "bytes.rs", + "Line": 1384, + "StartOffset": 39059, + "EndOffset": 39236, + "Content": "unsafe fn shared_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let shared = data.load(Ordering::Relaxed);\n shallow_clone_arc(shared as _, ptr, len)\n}" + }, + "shared_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_drop", + "File": "bytes.rs", + "Line": 1467, + "StartOffset": 42129, + "EndOffset": 42286, + "Content": "unsafe fn shared_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {\n data.with_mut(|shared| {\n release_shared(shared.cast());\n });\n}" + }, + "shared_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_is_unique", + "File": "bytes.rs", + "Line": 1461, + "StartOffset": 41914, + "EndOffset": 42127, + "Content": "pub(crate) unsafe fn shared_is_unique(data: &AtomicPtr<()>) -> bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" + }, + "shared_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_mut", + "File": "bytes.rs", + "Line": 1457, + "StartOffset": 41753, + "EndOffset": 41912, + "Content": "unsafe fn shared_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n shared_to_mut_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" + }, + "shared_to_mut_impl": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_mut_impl", + "File": "bytes.rs", + "Line": 1422, + "StartOffset": 40308, + "EndOffset": 41751, + "Content": "unsafe fn shared_to_mut_impl(shared: *mut Shared, ptr: *const u8, len: usize) -> BytesMut {\n // The goal is to check if the current handle is the only handle\n // that currently has access to the buffer. This is done by\n // checking if the `ref_cnt` is currently 1.\n //\n // The `Acquire` ordering synchronizes with the `Release` as\n // part of the `fetch_sub` in `release_shared`. The `fetch_sub`\n // operation guarantees that any mutations done in other threads\n // are ordered before the `ref_cnt` is decremented. As such,\n // this `Acquire` will guarantee that those mutations are\n // visible to the current thread.\n //\n // Otherwise, we take the other branch, copy the data and call `release_shared`.\n if (*shared).ref_cnt.load(Ordering::Acquire) == 1 {\n // Deallocate the `Shared` instance without running its destructor.\n let shared = *Box::from_raw(shared);\n let shared = ManuallyDrop::new(shared);\n let buf = shared.buf;\n let cap = shared.cap;\n\n // Rebuild Vec\n let off = offset_from(ptr, buf);\n let v = Vec::from_raw_parts(buf, len + off, cap);\n\n let mut b = BytesMut::from_vec(v);\n b.advance_unchecked(off);\n b\n } else {\n // Copy the data from Shared in a new Vec, then release it\n let v = slice::from_raw_parts(ptr, len).to_vec();\n release_shared(shared);\n BytesMut::from_vec(v)\n }\n}" + }, + "shared_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_vec", + "File": "bytes.rs", + "Line": 1418, + "StartOffset": 40148, + "EndOffset": 40306, + "Content": "unsafe fn shared_to_vec(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n shared_to_vec_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" + }, + "shared_to_vec_impl": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_vec_impl", + "File": "bytes.rs", + "Line": 1389, + "StartOffset": 39238, + "EndOffset": 40146, + "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -> Vec {\n // Check that the ref_cnt is 1 (unique).\n //\n // If it is unique, then it is set to 0 with AcqRel fence for the same\n // reason in release_shared.\n //\n // Otherwise, we take the other branch and call release_shared.\n if (*shared)\n .ref_cnt\n .compare_exchange(1, 0, Ordering::AcqRel, Ordering::Relaxed)\n .is_ok()\n {\n // Deallocate the `Shared` instance without running its destructor.\n let shared = *Box::from_raw(shared);\n let shared = ManuallyDrop::new(shared);\n let buf = shared.buf;\n let cap = shared.cap;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n } else {\n let v = slice::from_raw_parts(ptr, len).to_vec();\n release_shared(shared);\n v\n }\n}" + }, + "static_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "static_clone", + "File": "bytes.rs", + "Line": 1086, + "StartOffset": 30604, + "EndOffset": 30765, + "Content": "unsafe fn static_clone(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes {\n let slice = slice::from_raw_parts(ptr, len);\n Bytes::from_static(slice)\n}" + }, + "static_drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "static_drop", + "File": "bytes.rs", + "Line": 1105, + "StartOffset": 31147, + "EndOffset": 31260, + "Content": "unsafe fn static_drop(_: &mut AtomicPtr<()>, _: *const u8, _: usize) {\n // nothing to drop for &'static [u8]\n}" + }, + "static_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "static_is_unique", + "File": "bytes.rs", + "Line": 1101, + "StartOffset": 31085, + "EndOffset": 31145, + "Content": "fn static_is_unique(_: &AtomicPtr<()>) -> bool {\n false\n}" + }, + "static_to_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "static_to_mut", + "File": "bytes.rs", + "Line": 1096, + "StartOffset": 30922, + "EndOffset": 31083, + "Content": "unsafe fn static_to_mut(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> BytesMut {\n let slice = slice::from_raw_parts(ptr, len);\n BytesMut::from(slice)\n}" + }, + "static_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "static_to_vec", + "File": "bytes.rs", + "Line": 1091, + "StartOffset": 30767, + "EndOffset": 30920, + "Content": "unsafe fn static_to_vec(_: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Vec {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" + }, + "without_provenance": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "without_provenance", + "File": "bytes.rs", + "Line": 1619, + "StartOffset": 47405, + "EndOffset": 47501, + "Content": "fn without_provenance(ptr: usize) -> *const u8 {\n core::ptr::null::().wrapping_add(ptr)\n}" } - }, - "metainfo": { - "Language": "rust", - "Version": "", - "Name": "metainfo", - "Dir": "src", - "Packages": { - "metainfo": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo", - "Functions": { - "Backward.get_all_backward_downstreams": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16325, - "EndOffset": 16539, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_downstreams(&self) -> Option<&AHashMap> {\n match self.backward_node.as_ref() {\n Some(node) => node.get_all_stales(),\n None => None,\n }\n }\n}", - "Signature": "fn get_all_backward_downstreams(&self) -> Option<&AHashMap> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16375, - "EndOffset": 16383 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16384, - "EndOffset": 16391 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 543, - "StartOffset": 16480, - "EndOffset": 16494 - } - ] - }, - "Backward.get_all_backward_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients", - "File": "src/lib.rs", - "Line": 534, - "StartOffset": 16102, - "EndOffset": 16319, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients(&self) -> Option<&AHashMap> {\n match self.backward_node.as_ref() {\n Some(node) => node.get_all_transients(),\n None => None,\n }\n }\n}", - "Signature": "fn get_all_backward_transients(&self) -> Option<&AHashMap> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 534, - "StartOffset": 16151, - "EndOffset": 16159 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 534, - "StartOffset": 16160, - "EndOffset": 16167 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 536, - "StartOffset": 16256, - "EndOffset": 16274 - } - ] - }, - "Backward.get_all_backward_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 552, - "StartOffset": 16717, - "EndOffset": 16885, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients_with_http_prefix(&self) -> Option> {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", - "Signature": "fn get_all_backward_transients_with_http_prefix(&self) -> Option> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 552, - "StartOffset": 16782, - "EndOffset": 16790 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 552, - "StartOffset": 16791, - "EndOffset": 16798 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 553, - "StartOffset": 16825, - "EndOffset": 16864 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 553, - "StartOffset": 16865, - "EndOffset": 16878 - } - ] - }, - "Backward.get_all_backward_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 548, - "StartOffset": 16545, - "EndOffset": 16711, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients_with_rpc_prefix(&self) -> Option> {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", - "Signature": "fn get_all_backward_transients_with_rpc_prefix(&self) -> Option> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 548, - "StartOffset": 16609, - "EndOffset": 16617 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 548, - "StartOffset": 16618, - "EndOffset": 16625 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 549, - "StartOffset": 16652, - "EndOffset": 16691 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 549, - "StartOffset": 16692, - "EndOffset": 16704 - } - ] - }, - "Backward.iter_backward_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 562, - "StartOffset": 17083, - "EndOffset": 17271, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_backword_transients_with_prefix(HttpConverter)\n }\n}", - "Signature": "fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 564, - "StartOffset": 17175, - "EndOffset": 17182 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17210, - "EndOffset": 17250 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17251, - "EndOffset": 17264 - } - ] - }, - "Backward.iter_backward_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 556, - "StartOffset": 16891, - "EndOffset": 17077, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn iter_backward_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_backword_transients_with_prefix(RpcConverter)\n }\n}", - "Signature": "fn iter_backward_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 558, - "StartOffset": 16982, - "EndOffset": 16989 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 559, - "StartOffset": 17017, - "EndOffset": 17057 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 559, - "StartOffset": 17058, - "EndOffset": 17070 - } - ] - }, - "Backward.strip_http_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 579, - "StartOffset": 17597, - "EndOffset": 17913, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_backward_prefix(key) {\n self.set_backward_downstream(key, value);\n }\n }\n}", - "Signature": "fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 586, - "StartOffset": 17861, - "EndOffset": 17884 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 585, - "StartOffset": 17814, - "EndOffset": 17836 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 579, - "StartOffset": 17669, - "EndOffset": 17676 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 585, - "StartOffset": 17800, - "EndOffset": 17813 - } - ] - }, - "Backward.strip_rpc_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 568, - "StartOffset": 17277, - "EndOffset": 17591, - "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_backward_prefix(key) {\n self.set_backward_downstream(key, value);\n }\n }\n}", - "Signature": "fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 575, - "StartOffset": 17539, - "EndOffset": 17562 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 574, - "StartOffset": 17492, - "EndOffset": 17514 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 568, - "StartOffset": 17348, - "EndOffset": 17355 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 574, - "StartOffset": 17479, - "EndOffset": 17491 - } - ] - }, - "Forward.get_all_persistents": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents", - "File": "src/lib.rs", - "Line": 423, - "StartOffset": 12913, - "EndOffset": 13136, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_persistents(),\n None => None,\n }\n }\n}", - "Signature": "#[inline]\n fn get_all_persistents(&self) -> Option<&AHashMap> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 424, - "StartOffset": 12968, - "EndOffset": 12976 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 424, - "StartOffset": 12977, - "EndOffset": 12984 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 426, - "StartOffset": 13072, - "EndOffset": 13091 - } - ] - }, - "Forward.get_all_persistents_and_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 454, - "StartOffset": 13806, - "EndOffset": 14017, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option> {\n self.get_all_persistents_and_transients_with_prefix(HttpConverter)\n }\n}", - "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 457, - "StartOffset": 13907, - "EndOffset": 13915 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 457, - "StartOffset": 13916, - "EndOffset": 13923 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 458, - "StartOffset": 13950, - "EndOffset": 13996 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 458, - "StartOffset": 13997, - "EndOffset": 14010 - } - ] - }, - "Forward.get_all_persistents_and_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 447, - "StartOffset": 13591, - "EndOffset": 13800, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option> {\n self.get_all_persistents_and_transients_with_prefix(RpcConverter)\n }\n}", - "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 450, - "StartOffset": 13691, - "EndOffset": 13699 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 450, - "StartOffset": 13700, - "EndOffset": 13707 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 451, - "StartOffset": 13734, - "EndOffset": 13780 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 451, - "StartOffset": 13781, - "EndOffset": 13793 - } - ] - }, - "Forward.get_all_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients", - "File": "src/lib.rs", - "Line": 431, - "StartOffset": 13142, - "EndOffset": 13363, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_transients(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_transients(),\n None => None,\n }\n }\n}", - "Signature": "#[inline]\n fn get_all_transients(&self) -> Option<&AHashMap> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 432, - "StartOffset": 13196, - "EndOffset": 13204 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 432, - "StartOffset": 13205, - "EndOffset": 13212 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 434, - "StartOffset": 13300, - "EndOffset": 13318 - } - ] - }, - "Forward.get_all_upstreams": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13369, - "EndOffset": 13585, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_upstreams(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_stales(),\n None => None,\n }\n }\n}", - "Signature": "#[inline]\n fn get_all_upstreams(&self) -> Option<&AHashMap> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 440, - "StartOffset": 13422, - "EndOffset": 13430 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 440, - "StartOffset": 13431, - "EndOffset": 13438 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 442, - "StartOffset": 13526, - "EndOffset": 13540 - } - ] - }, - "Forward.iter_persistents_and_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 468, - "StartOffset": 14243, - "EndOffset": 14459, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_persistents_and_transients_with_prefix(HttpConverter)\n }\n}", - "Signature": "#[inline]\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 471, - "StartOffset": 14356, - "EndOffset": 14363 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 472, - "StartOffset": 14391, - "EndOffset": 14438 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 472, - "StartOffset": 14439, - "EndOffset": 14452 - } - ] - }, - "Forward.iter_persistents_and_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 461, - "StartOffset": 14023, - "EndOffset": 14237, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_persistents_and_transients_with_prefix(RpcConverter)\n }\n}", - "Signature": "#[inline]\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 464, - "StartOffset": 14135, - "EndOffset": 14142 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 465, - "StartOffset": 14170, - "EndOffset": 14217 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 465, - "StartOffset": 14218, - "EndOffset": 14230 - } - ] - }, - "Forward.strip_http_prefix_and_set_persistent": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 499, - "StartOffset": 15096, - "EndOffset": 15410, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_http_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_persistent_prefix(key) {\n self.set_persistent(key, value);\n }\n }\n}", - "Signature": "#[inline]\n fn strip_http_prefix_and_set_persistent, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 500, - "StartOffset": 15113, - "EndOffset": 15149 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 500, - "StartOffset": 15173, - "EndOffset": 15180 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 507, - "StartOffset": 15367, - "EndOffset": 15381 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 506, - "StartOffset": 15318, - "EndOffset": 15342 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 500, - "StartOffset": 15173, - "EndOffset": 15180 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 506, - "StartOffset": 15304, - "EndOffset": 15317 - } - ] - }, - "Forward.strip_http_prefix_and_set_upstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 511, - "StartOffset": 15416, - "EndOffset": 15725, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_http_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_transient_prefix(key) {\n self.set_upstream(key, value);\n }\n }\n}", - "Signature": "#[inline]\n fn strip_http_prefix_and_set_upstream, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 512, - "StartOffset": 15433, - "EndOffset": 15467 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 512, - "StartOffset": 15491, - "EndOffset": 15498 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 519, - "StartOffset": 15684, - "EndOffset": 15696 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 518, - "StartOffset": 15636, - "EndOffset": 15659 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 512, - "StartOffset": 15491, - "EndOffset": 15498 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 518, - "StartOffset": 15622, - "EndOffset": 15635 - } - ] - }, - "Forward.strip_rpc_prefix_and_set_persistent": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 475, - "StartOffset": 14465, - "EndOffset": 14777, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_persistent_prefix(key) {\n self.set_persistent(key, value);\n }\n }\n}", - "Signature": "#[inline]\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 476, - "StartOffset": 14482, - "EndOffset": 14517 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 476, - "StartOffset": 14541, - "EndOffset": 14548 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 483, - "StartOffset": 14734, - "EndOffset": 14748 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 482, - "StartOffset": 14685, - "EndOffset": 14709 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 476, - "StartOffset": 14541, - "EndOffset": 14548 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 482, - "StartOffset": 14672, - "EndOffset": 14684 - } - ] - }, - "Forward.strip_rpc_prefix_and_set_upstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 487, - "StartOffset": 14783, - "EndOffset": 15090, - "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_transient_prefix(key) {\n self.set_upstream(key, value);\n }\n }\n}", - "Signature": "#[inline]\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 488, - "StartOffset": 14800, - "EndOffset": 14833 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 488, - "StartOffset": 14857, - "EndOffset": 14864 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 495, - "StartOffset": 15049, - "EndOffset": 15061 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 494, - "StartOffset": 15001, - "EndOffset": 15024 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 488, - "StartOffset": 14857, - "EndOffset": 14864 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 494, - "StartOffset": 14988, - "EndOffset": 15000 - } - ] - }, - "MetaInfo.clear": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "File": "src/lib.rs", - "Line": 288, - "StartOffset": 8875, - "EndOffset": 9538, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Clear the `MetaInfo` of all inserted MetaInfo.\n /// This will not clear the parent.\n #[inline]\n pub fn clear(&mut self) {\n self.parent = None;\n if let Some(tmap) = self.tmap.as_mut() {\n tmap.clear()\n }\n if let Some(smap) = self.smap.as_mut() {\n smap.clear()\n }\n if let Some(faststr_tmap) = self.faststr_tmap.as_mut() {\n faststr_tmap.clear()\n }\n if let Some(forward_node) = self.forward_node.as_mut() {\n forward_node.clear()\n }\n if let Some(backward_node) = self.backward_node.as_mut() {\n backward_node.clear()\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "File": "src/lib.rs", - "Line": 294, - "StartOffset": 9104, - "EndOffset": 9109 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/lib.rs", - "Line": 297, - "StartOffset": 9188, - "EndOffset": 9193 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "File": "src/lib.rs", - "Line": 300, - "StartOffset": 9296, - "EndOffset": 9301 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "File": "src/lib.rs", - "Line": 303, - "StartOffset": 9404, - "EndOffset": 9409 - } - ] - }, - "MetaInfo.contains": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "File": "src/lib.rs", - "Line": 176, - "StartOffset": 5363, - "EndOffset": 5778, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains entry\n #[inline]\n pub fn contains(&self) -> bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::())\n .unwrap_or(false)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "File": "src/lib.rs", - "Line": 182, - "StartOffset": 5550, - "EndOffset": 5558 - } - ] - }, - "MetaInfo.contains_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "File": "src/lib.rs", - "Line": 193, - "StartOffset": 5784, - "EndOffset": 6259, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains the given Faststr newtype\n #[inline]\n pub fn contains_faststr(&self) -> bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::())\n .unwrap_or(false)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "File": "src/lib.rs", - "Line": 199, - "StartOffset": 6023, - "EndOffset": 6031 - } - ] - }, - "MetaInfo.contains_string": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "File": "src/lib.rs", - "Line": 210, - "StartOffset": 6265, - "EndOffset": 6729, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains the given string k-v\n #[inline]\n pub fn contains_string>(&self, key: K) -> bool {\n if self\n .smap\n .as_ref()\n .map(|smap| smap.contains_key(key.as_ref()))\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_string(key))\n .unwrap_or(false)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/lib.rs", - "Line": 216, - "StartOffset": 6485, - "EndOffset": 6497 - } - ] - }, - "MetaInfo.derive": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "File": "src/lib.rs", - "Line": 106, - "StartOffset": 2976, - "EndOffset": 4134, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Derives the current [`MetaInfo`], returns two new equivalent `Metainfo`s.\n ///\n /// When the info is not found in the current scope, `MetaInfo` will try to get from parent.\n ///\n /// This is the recommended way.\n #[inline]\n pub fn derive(mut self) -> (MetaInfo, MetaInfo) {\n if self.tmap.is_none() && self.smap.is_none() && self.faststr_tmap.is_none() {\n // we can use the same parent as self to make the tree small\n let new = MetaInfo {\n parent: self.parent.clone(),\n tmap: None,\n smap: None,\n faststr_tmap: None,\n forward_node: self.forward_node.clone(),\n backward_node: self.backward_node.clone(),\n };\n (self, new)\n } else {\n let forward_node = self.forward_node.take();\n let backward_node = self.backward_node.take();\n let mi = Arc::new(self);\n (\n MetaInfo::from_node(mi.clone(), forward_node.clone(), backward_node.clone()),\n MetaInfo::from_node(mi, forward_node, backward_node),\n )\n }\n }\n}", - "Signature": "/// Derives the current [`MetaInfo`]", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 106, - "StartOffset": 3000, - "EndOffset": 3012 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "File": "src/lib.rs", - "Line": 129, - "StartOffset": 3967, - "EndOffset": 3976 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 112, - "StartOffset": 3250, - "EndOffset": 3258 - } - ] - }, - "MetaInfo.ensure_backward_node": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "File": "src/lib.rs", - "Line": 355, - "StartOffset": 10983, - "EndOffset": 11132, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(&mut self) {\n if self.backward_node.is_none() {\n self.backward_node = Some(Node::default())\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 357, - "StartOffset": 11100, - "EndOffset": 11104 - } - ] - }, - "MetaInfo.ensure_forward_node": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "File": "src/lib.rs", - "Line": 349, - "StartOffset": 10831, - "EndOffset": 10977, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(&mut self) {\n if self.forward_node.is_none() {\n self.forward_node = Some(Node::default())\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 351, - "StartOffset": 10945, - "EndOffset": 10949 - } - ] - }, - "MetaInfo.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "File": "src/lib.rs", - "Line": 310, - "StartOffset": 9544, - "EndOffset": 10825, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Extends self with the items from another `MetaInfo`.\n /// Only extend the items in the current scope.\n #[inline]\n pub fn extend(&mut self, other: MetaInfo) {\n if let Some(tmap) = other.tmap {\n self.tmap\n .get_or_insert_with(|| TypeMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(tmap);\n }\n\n if let Some(smap) = other.smap {\n self.smap\n .get_or_insert_with(|| AHashMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(smap);\n }\n\n if let Some(faststr_tmap) = other.faststr_tmap {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(faststr_tmap);\n }\n\n if let Some(node) = other.forward_node {\n if self.forward_node.is_none() {\n self.forward_node = Some(node);\n } else {\n self.forward_node.as_mut().unwrap().extend(node);\n }\n }\n\n if let Some(node) = other.backward_node {\n if self.backward_node.is_none() {\n self.backward_node = Some(node);\n } else {\n self.backward_node.as_mut().unwrap().extend(node);\n }\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9826, - "EndOffset": 9839 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 322, - "StartOffset": 10013, - "EndOffset": 10026 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/lib.rs", - "Line": 328, - "StartOffset": 10226, - "EndOffset": 10239 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "File": "src/lib.rs", - "Line": 317, - "StartOffset": 9876, - "EndOffset": 9882 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "File": "src/lib.rs", - "Line": 323, - "StartOffset": 10063, - "EndOffset": 10069 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "File": "src/lib.rs", - "Line": 329, - "StartOffset": 10276, - "EndOffset": 10282 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/lib.rs", - "Line": 336, - "StartOffset": 10524, - "EndOffset": 10530 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 313, - "StartOffset": 9703, - "EndOffset": 9711 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9817, - "EndOffset": 9824 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 322, - "StartOffset": 10003, - "EndOffset": 10011 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 328, - "StartOffset": 10214, - "EndOffset": 10224 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9840, - "EndOffset": 9856 - } - ] - }, - "MetaInfo.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.fmt", - "File": "src/lib.rs", - "Line": 704, - "StartOffset": 21541, - "EndOffset": 21649, - "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", - "Signature": "fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - } - }, - "MetaInfo.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 227, - "StartOffset": 6735, - "EndOffset": 7066, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a type previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get(&self) -> Option<&T> {\n self.tmap.as_ref().and_then(|tmap| tmap.get()).or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get::())\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "File": "src/lib.rs", - "Line": 230, - "StartOffset": 6917, - "EndOffset": 6920 - } - ] - }, - "MetaInfo.get_all_backword_transients_with_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 654, - "StartOffset": 20125, - "EndOffset": 20978, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) => {\n if let Some(t) = node.get_all_transients() {\n let new_cap = t.len();\n if new_cap == 0 {\n return None;\n }\n let mut map = AHashMap::with_capacity(new_cap);\n map.extend(\n t.iter()\n .map(|(k, v)| (converter.add_transient_prefix(k), v.clone())),\n );\n Some(map)\n } else {\n None\n }\n }\n None => None,\n }\n }\n}", - "Signature": "#[inline]\n fn get_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 655, - "StartOffset": 20142, - "EndOffset": 20181 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 658, - "StartOffset": 20239, - "EndOffset": 20247 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 658, - "StartOffset": 20248, - "EndOffset": 20255 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 664, - "StartOffset": 20415, - "EndOffset": 20433 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 669, - "StartOffset": 20622, - "EndOffset": 20635 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 665, - "StartOffset": 20474, - "EndOffset": 20477 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "File": "src/lib.rs", - "Line": 670, - "StartOffset": 20670, - "EndOffset": 20676 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 671, - "StartOffset": 20704, - "EndOffset": 20708 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 672, - "StartOffset": 20764, - "EndOffset": 20784 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 660, - "StartOffset": 20288, - "EndOffset": 20297 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 669, - "StartOffset": 20612, - "EndOffset": 20620 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 672, - "StartOffset": 20791, - "EndOffset": 20796 - } - ] - }, - "MetaInfo.get_all_persistents_and_transients_with_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 592, - "StartOffset": 17937, - "EndOffset": 19267, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) => {\n let persistents = node.get_all_persistents();\n let transients = node.get_all_transients();\n let new_cap = persistents.map(|p| p.len()).unwrap_or(0)\n + transients.map(|t| t.len()).unwrap_or(0);\n if new_cap == 0 {\n return None;\n }\n let mut map = AHashMap::with_capacity(new_cap);\n if let Some(persistents) = persistents {\n map.extend(\n persistents\n .iter()\n .map(|(k, v)| (converter.add_persistent_prefix(k), v.clone())),\n );\n }\n if let Some(transients) = transients {\n map.extend(\n transients\n .iter()\n .map(|(k, v)| (converter.add_transient_prefix(k), v.clone())),\n );\n }\n Some(map)\n }\n None => None,\n }\n }\n}", - "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 593, - "StartOffset": 17954, - "EndOffset": 18000 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 596, - "StartOffset": 18058, - "EndOffset": 18066 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 596, - "StartOffset": 18067, - "EndOffset": 18074 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 602, - "StartOffset": 18234, - "EndOffset": 18253 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 609, - "StartOffset": 18578, - "EndOffset": 18591 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 604, - "StartOffset": 18369, - "EndOffset": 18372 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "File": "src/lib.rs", - "Line": 611, - "StartOffset": 18683, - "EndOffset": 18689 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 613, - "StartOffset": 18756, - "EndOffset": 18760 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_persistent_prefix", - "File": "src/lib.rs", - "Line": 614, - "StartOffset": 18816, - "EndOffset": 18837 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 621, - "StartOffset": 19107, - "EndOffset": 19127 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 598, - "StartOffset": 18107, - "EndOffset": 18116 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 609, - "StartOffset": 18568, - "EndOffset": 18576 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 614, - "StartOffset": 18844, - "EndOffset": 18849 - } - ] - }, - "MetaInfo.get_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "File": "src/lib.rs", - "Line": 244, - "StartOffset": 7325, - "EndOffset": 7786, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a faststr newtype previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get_faststr(&self) -> Option<&FastStr> {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: &FastStrMap| faststr_tmap.get::())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::())\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7595, - "EndOffset": 7598 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 246, - "StartOffset": 7473, - "EndOffset": 7480 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7570, - "EndOffset": 7580 - } - ] - }, - "MetaInfo.get_string": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "File": "src/lib.rs", - "Line": 266, - "StartOffset": 8120, - "EndOffset": 8553, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a string k-v previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get_string>(&self, key: K) -> Option<&FastStr> {\n self.smap\n .as_ref()\n .and_then(|smap| smap.get(key.as_ref()))\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_string(key))\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "src/lib.rs", - "Line": 271, - "StartOffset": 8358, - "EndOffset": 8361 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 268, - "StartOffset": 8273, - "EndOffset": 8280 - } - ] - }, - "MetaInfo.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 152, - "StartOffset": 4556, - "EndOffset": 4801, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a type into this `MetaInfo`.\n #[inline]\n pub fn insert(&mut self, val: T) {\n self.tmap\n .get_or_insert_with(|| TypeMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert(val);\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4737, - "EndOffset": 4750 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "File": "src/lib.rs", - "Line": 157, - "StartOffset": 4783, - "EndOffset": 4789 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4728, - "EndOffset": 4735 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4751, - "EndOffset": 4767 - } - ] - }, - "MetaInfo.insert_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "File": "src/lib.rs", - "Line": 160, - "StartOffset": 4807, - "EndOffset": 5093, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a faststr newtype into this `MetaInfo`.\n #[inline]\n pub fn insert_faststr(&mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::(val);\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 5024, - "EndOffset": 5037 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "File": "src/lib.rs", - "Line": 165, - "StartOffset": 5070, - "EndOffset": 5076 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 162, - "StartOffset": 4940, - "EndOffset": 4947 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 5012, - "EndOffset": 5022 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 5038, - "EndOffset": 5054 - } - ] - }, - "MetaInfo.insert_string": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "File": "src/lib.rs", - "Line": 168, - "StartOffset": 5099, - "EndOffset": 5357, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a string k-v into this `MetaInfo`.\n #[inline]\n pub fn insert_string(&mut self, key: FastStr, val: FastStr) {\n self.smap\n .get_or_insert_with(|| AHashMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert(key, val);\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5288, - "EndOffset": 5301 - } - ], - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "File": "src/lib.rs", - "Line": 173, - "StartOffset": 5334, - "EndOffset": 5340 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 170, - "StartOffset": 5200, - "EndOffset": 5207 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5278, - "EndOffset": 5286 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5302, - "EndOffset": 5318 - } - ] - }, - "MetaInfo.iter_all_backword_transients_with_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 683, - "StartOffset": 20984, - "EndOffset": 21502, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn iter_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n where\n C: Converter + 'static,\n {\n self.backward_node\n .as_ref()\n .into_iter()\n .flat_map(|node| {\n node.get_all_transients()\n .into_iter()\n .flat_map(|t| t.into_iter())\n })\n .map(move |(k, v)| (converter.add_transient_prefix(k), v))\n }\n}", - "Signature": "#[inline]\n fn iter_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 684, - "StartOffset": 21001, - "EndOffset": 21041 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 687, - "StartOffset": 21114, - "EndOffset": 21121 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 695, - "StartOffset": 21308, - "EndOffset": 21326 - } - ], - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "File": "src/lib.rs", - "Line": 697, - "StartOffset": 21398, - "EndOffset": 21407 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 699, - "StartOffset": 21468, - "EndOffset": 21488 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 689, - "StartOffset": 21155, - "EndOffset": 21164 - } - ] - }, - "MetaInfo.iter_all_persistents_and_transients_with_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 630, - "StartOffset": 19273, - "EndOffset": 20119, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn iter_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n where\n C: Converter + Copy + 'static,\n {\n self.forward_node\n .as_ref()\n .into_iter()\n .flat_map(move |node| {\n let persistents = node.get_all_persistents().into_iter().flat_map(move |p| {\n p.into_iter()\n .map(move |(k, v)| (converter.add_persistent_prefix(k), v))\n });\n let transients = node.get_all_transients().into_iter().flat_map(move |t| {\n t.into_iter()\n .map(move |(k, v)| (converter.add_transient_prefix(k), v))\n });\n persistents.chain(transients)\n })\n }\n}", - "Signature": "#[inline]\n fn iter_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_persistents_and_transients_with_prefix", - "File": "src/lib.rs", - "Line": 631, - "StartOffset": 19290, - "EndOffset": 19337 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 634, - "StartOffset": 19410, - "EndOffset": 19417 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 642, - "StartOffset": 19633, - "EndOffset": 19652 - } - ], - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "File": "src/lib.rs", - "Line": 643, - "StartOffset": 19709, - "EndOffset": 19718 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_persistent_prefix", - "File": "src/lib.rs", - "Line": 644, - "StartOffset": 19775, - "EndOffset": 19796 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 648, - "StartOffset": 20004, - "EndOffset": 20024 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 636, - "StartOffset": 19451, - "EndOffset": 19460 - } - ] - }, - "MetaInfo.remove": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 237, - "StartOffset": 7072, - "EndOffset": 7319, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a type from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "File": "src/lib.rs", - "Line": 241, - "StartOffset": 7299, - "EndOffset": 7305 - } - ] - }, - "MetaInfo.remove_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "File": "src/lib.rs", - "Line": 257, - "StartOffset": 7792, - "EndOffset": 8114, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a faststr newtype from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove_faststr(&mut self) -> Option {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "File": "src/lib.rs", - "Line": 263, - "StartOffset": 8094, - "EndOffset": 8100 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 260, - "StartOffset": 7985, - "EndOffset": 7992 - } - ] - }, - "MetaInfo.remove_string": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "File": "src/lib.rs", - "Line": 279, - "StartOffset": 8559, - "EndOffset": 8869, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a string k-v from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove_string>(&mut self, key: K) -> Option {\n self.smap\n .as_mut()\n .and_then(|smap| smap.remove(key.as_ref()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "File": "src/lib.rs", - "Line": 285, - "StartOffset": 8842, - "EndOffset": 8848 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 282, - "StartOffset": 8757, - "EndOffset": 8764 - } - ] - }, - "MetaInfo::from_node": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "File": "src/lib.rs", - "Line": 135, - "StartOffset": 4140, - "EndOffset": 4550, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an `MetaInfo` with the parent and node given.\n fn from_node(\n parent: Arc,\n forward_node: Option,\n backward_node: Option,\n ) -> MetaInfo {\n MetaInfo {\n parent: Some(parent),\n tmap: None,\n smap: None,\n faststr_tmap: None,\n\n forward_node,\n backward_node,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 137, - "StartOffset": 4236, - "EndOffset": 4244 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 138, - "StartOffset": 4280, - "EndOffset": 4284 - } - ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "File": "src/lib.rs", - "Line": 395, - "StartOffset": 12044, - "EndOffset": 12462, - "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn []>(&mut self, key: K) -> Option {\n if let Some(node) = self.[<$node _node>].as_mut() {\n node.[](key)\n } else {\n None\n }\n }\n }\n };\n}", - "Signature": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "File": "src/lib.rs", - "Line": 395, - "StartOffset": 12057, - "EndOffset": 12065 - } - ] - }, - "get_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 362, - "StartOffset": 11136, - "EndOffset": 11535, - "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn []>(&self, key: K) -> Option {\n match self.[<$node _node>].as_ref() {\n Some(node) => node.[](key),\n None => None,\n }\n }\n }\n };\n}", - "Signature": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 362, - "StartOffset": 11149, - "EndOffset": 11157 - } - ] - }, - "set_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 376, - "StartOffset": 11537, - "EndOffset": 12042, - "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn [], V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n self.[]();\n self.[<$node _node>]\n .as_mut()\n .unwrap()\n .[](key, value)\n }\n }\n };\n}", - "Signature": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 376, - "StartOffset": 11550, - "EndOffset": 11558 - } - ] - } - }, - "Types": { - "MetaInfo": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 37, - "StartOffset": 892, - "EndOffset": 2186, - "Content": "/// `MetaInfo` is used to passthrough information between components and even client-server.\n///\n/// It supports two types of info: typed map and string k-v.\n///\n/// It is designed to be tree-like, which means you can share a `MetaInfo` with multiple children.\n///\n/// Note: only the current scope is mutable.\n///\n/// Examples:\n/// ```rust\n/// use metainfo::MetaInfo;\n///\n/// fn test() {\n/// let mut m1 = MetaInfo::new();\n/// m1.insert::(2);\n/// assert_eq!(*m1.get::().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::().unwrap(), 2);\n///\n/// m2.insert::(4);\n/// assert_eq!(*m2.get::().unwrap(), 4);\n///\n/// m2.remove::();\n/// assert_eq!(*m2.get::().unwrap(), 2);\n/// }\n/// ```\n#[derive(Default)]\npub struct MetaInfo {\n /// Parent is read-only, if we can't find the specified key in the current,\n /// we search it in the parent scope.\n parent: Option>,\n tmap: Option,\n smap: Option>, // for str k-v\n faststr_tmap: Option, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option,\n backward_node: Option,\n}", - "SubStruct": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1882, - "EndOffset": 1889 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1909, - "EndOffset": 1917 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1918, - "EndOffset": 1925 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 71, - "StartOffset": 1978, - "EndOffset": 1988 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 75, - "StartOffset": 2141, - "EndOffset": 2145 - } - ], - "Methods": { - "clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear" - }, - "contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains" - }, - "contains_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr" - }, - "contains_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string" - }, - "derive": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive" - }, - "ensure_backward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node" - }, - "ensure_forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node" - }, - "extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend" - }, - "fmt": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.fmt" - }, - "get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get" - }, - "get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams" - }, - "get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients" - }, - "get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix" - }, - "get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix" - }, - "get_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix" - }, - "get_all_persistents": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents" - }, - "get_all_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix" - }, - "get_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix" - }, - "get_all_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix" - }, - "get_all_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients" - }, - "get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams" - }, - "get_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr" - }, - "get_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string" - }, - "insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert" - }, - "insert_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr" - }, - "insert_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string" - }, - "iter_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix" - }, - "iter_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix" - }, - "iter_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix" - }, - "iter_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix" - }, - "iter_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix" - }, - "iter_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix" - }, - "remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove" - }, - "remove_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr" - }, - "remove_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string" - }, - "strip_http_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream" - }, - "strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent" - }, - "strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream" - }, - "strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" - }, - "strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent" - }, - "strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream" - } - } - } - }, - "Vars": { - "DEFAULT_MAP_SIZE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 35, - "StartOffset": 855, - "EndOffset": 890, - "Content": "const DEFAULT_MAP_SIZE: usize = 10;" - }, - "HTTP_PREFIX_BACKWARD": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/lib.rs", - "Line": 33, - "StartOffset": 798, - "EndOffset": 853, - "Content": "pub const HTTP_PREFIX_BACKWARD: &str = \"rpc-backward-\";" - }, - "HTTP_PREFIX_PERSISTENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/lib.rs", - "Line": 31, - "StartOffset": 685, - "EndOffset": 741, - "Content": "pub const HTTP_PREFIX_PERSISTENT: &str = \"rpc-persist-\";" - }, - "HTTP_PREFIX_TRANSIENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/lib.rs", - "Line": 32, - "StartOffset": 742, - "EndOffset": 797, - "Content": "pub const HTTP_PREFIX_TRANSIENT: &str = \"rpc-transit-\";" - }, - "RPC_PREFIX_BACKWARD": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/lib.rs", - "Line": 30, - "StartOffset": 630, - "EndOffset": 684, - "Content": "pub const RPC_PREFIX_BACKWARD: &str = \"RPC_BACKWARD_\";" - }, - "RPC_PREFIX_PERSISTENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/lib.rs", - "Line": 26, - "StartOffset": 472, - "EndOffset": 574, - "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: &str = \"RPC_PERSIST_\";" - }, - "RPC_PREFIX_TRANSIENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/lib.rs", - "Line": 29, - "StartOffset": 575, - "EndOffset": 629, - "Content": "pub const RPC_PREFIX_TRANSIENT: &str = \"RPC_TRANSIT_\";" - } - } - }, - "metainfo::backward": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::backward", - "Functions": {}, - "Types": { - "Backward": { - "Exported": true, - "TypeKind": "interface", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "File": "src/backward.rs", - "Line": 4, - "StartOffset": 44, - "EndOffset": 1530, - "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient>(&self, key: K) -> Option;\n fn get_backward_downstream>(&self, key: K) -> Option;\n\n fn get_all_backward_transients(&self) -> Option<&AHashMap>;\n fn get_all_backward_downstreams(&self) -> Option<&AHashMap>;\n\n fn get_all_backward_transients_with_rpc_prefix(&self) -> Option>;\n fn get_all_backward_transients_with_http_prefix(&self) -> Option>;\n\n fn iter_backward_transients_with_rpc_prefix(&self)\n -> impl Iterator;\n fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator;\n\n fn set_backward_transient, V: Into>(&mut self, key: K, value: V);\n fn set_backward_downstream, V: Into>(&mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient>(&mut self, key: K) -> Option;\n fn del_backward_downstream>(&mut self, key: K) -> Option;\n}", - "SubStruct": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 190, - "EndOffset": 197 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 335, - "EndOffset": 343 - } - ] - } - }, - "Vars": {} - }, - "metainfo::convert": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::convert", - "Functions": { - "Converter.add_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "File": "src/convert.rs", - "Line": 209, - "StartOffset": 6674, - "EndOffset": 6817, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", - "Signature": "#[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 210, - "StartOffset": 6732, - "EndOffset": 6739 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 211, - "StartOffset": 6755, - "EndOffset": 6784 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 211, - "StartOffset": 6785, - "EndOffset": 6805 - } - ] - }, - "Converter.add_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 199, - "StartOffset": 6370, - "EndOffset": 6517, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", - "Signature": "#[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 200, - "StartOffset": 6430, - "EndOffset": 6437 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 201, - "StartOffset": 6453, - "EndOffset": 6482 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 201, - "StartOffset": 6483, - "EndOffset": 6505 - } - ] - }, - "Converter.add_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "File": "src/convert.rs", - "Line": 204, - "StartOffset": 6523, - "EndOffset": 6668, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", - "Signature": "#[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 205, - "StartOffset": 6582, - "EndOffset": 6589 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 206, - "StartOffset": 6605, - "EndOffset": 6634 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 206, - "StartOffset": 6635, - "EndOffset": 6656 - } - ] - }, - "Converter.remove_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 224, - "StartOffset": 7153, - "EndOffset": 7309, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", - "Signature": "#[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 225, - "StartOffset": 7221, - "EndOffset": 7228 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 226, - "StartOffset": 7245, - "EndOffset": 7276 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 226, - "StartOffset": 7277, - "EndOffset": 7297 - } - ] - }, - "Converter.remove_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 214, - "StartOffset": 6823, - "EndOffset": 6983, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", - "Signature": "#[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 215, - "StartOffset": 6893, - "EndOffset": 6900 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 216, - "StartOffset": 6917, - "EndOffset": 6948 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 216, - "StartOffset": 6949, - "EndOffset": 6971 - } - ] - }, - "Converter.remove_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 219, - "StartOffset": 6989, - "EndOffset": 7147, - "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", - "Signature": "#[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 220, - "StartOffset": 7058, - "EndOffset": 7065 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 221, - "StartOffset": 7082, - "EndOffset": 7113 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 221, - "StartOffset": 7114, - "EndOffset": 7135 - } - ] - }, - "Converter.add_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "File": "src/convert.rs", - "Line": 72, - "StartOffset": 2244, - "EndOffset": 2367, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", - "Signature": "#[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 73, - "StartOffset": 2302, - "EndOffset": 2309 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 74, - "StartOffset": 2325, - "EndOffset": 2335 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 74, - "StartOffset": 2336, - "EndOffset": 2355 - } - ] - }, - "Converter.add_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 62, - "StartOffset": 1980, - "EndOffset": 2107, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", - "Signature": "#[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 63, - "StartOffset": 2040, - "EndOffset": 2047 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 64, - "StartOffset": 2063, - "EndOffset": 2073 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 64, - "StartOffset": 2074, - "EndOffset": 2095 - } - ] - }, - "Converter.add_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "File": "src/convert.rs", - "Line": 67, - "StartOffset": 2113, - "EndOffset": 2238, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", - "Signature": "#[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 68, - "StartOffset": 2172, - "EndOffset": 2179 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 69, - "StartOffset": 2195, - "EndOffset": 2205 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 69, - "StartOffset": 2206, - "EndOffset": 2226 - } - ] - }, - "Converter.remove_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 87, - "StartOffset": 2665, - "EndOffset": 2802, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", - "Signature": "#[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 88, - "StartOffset": 2733, - "EndOffset": 2740 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 89, - "StartOffset": 2757, - "EndOffset": 2770 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 89, - "StartOffset": 2771, - "EndOffset": 2790 - } - ] - }, - "Converter.remove_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 77, - "StartOffset": 2373, - "EndOffset": 2514, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", - "Signature": "#[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 78, - "StartOffset": 2443, - "EndOffset": 2450 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 79, - "StartOffset": 2467, - "EndOffset": 2480 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 79, - "StartOffset": 2481, - "EndOffset": 2502 - } - ] - }, - "Converter.remove_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 82, - "StartOffset": 2520, - "EndOffset": 2659, - "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", - "Signature": "#[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 83, - "StartOffset": 2589, - "EndOffset": 2596 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 84, - "StartOffset": 2613, - "EndOffset": 2626 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 84, - "StartOffset": 2627, - "EndOffset": 2647 - } - ] - }, - "HttpConverter.add_prefix_and_to_http_format": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 151, - "StartOffset": 4562, - "EndOffset": 5596, - "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n #[inline]\n fn add_prefix_and_to_http_format(&self, prefix: &'static str, key: &str) -> FastStr {\n // checks if we can use the inline buffer to reduce heap allocations\n if prefix.len() + key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n unsafe {\n std::ptr::copy_nonoverlapping(\n prefix.as_ptr(),\n inline_buf.as_mut_ptr(),\n prefix.len(),\n );\n self.to_http_format(key, &mut inline_buf[prefix.len()..]);\n }\n return unsafe {\n FastStr::new_u8_slice_unchecked(&inline_buf[..prefix.len() + key.len()])\n };\n }\n\n let mut buf = Vec::with_capacity(prefix.len() + key.len());\n buf.extend_from_slice(prefix.as_bytes());\n unsafe {\n buf.set_len(prefix.len() + key.len());\n }\n self.to_http_format(key, &mut buf);\n unsafe { FastStr::from_vec_u8_unchecked(buf) }\n }\n}", - "Signature": "#[inline]\n fn add_prefix_and_to_http_format(&self, prefix: &'static str, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 152, - "StartOffset": 4652, - "EndOffset": 4659 - } - ], - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "File": "src/convert.rs", - "Line": 165, - "StartOffset": 5206, - "EndOffset": 5228 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "File": "src/convert.rs", - "Line": 175, - "StartOffset": 5562, - "EndOffset": 5583 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 162, - "StartOffset": 5085, - "EndOffset": 5099 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 165, - "StartOffset": 5197, - "EndOffset": 5204 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "File": "src/convert.rs", - "Line": 154, - "StartOffset": 4778, - "EndOffset": 4797 - } - ] - }, - "HttpConverter.remove_prefix_and_to_rpc_format": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 178, - "StartOffset": 5602, - "EndOffset": 6327, - "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n #[inline]\n fn remove_prefix_and_to_rpc_format(&self, prefix: &'static str, key: &str) -> Option {\n let key = key.strip_prefix(prefix)?;\n\n // checks if we can use the inline buffer to reduce heap allocations\n if key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n self.to_rpc_format(key, &mut inline_buf);\n return Some(unsafe { FastStr::new_u8_slice_unchecked(&inline_buf[..key.len()]) });\n }\n\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_rpc_format(key, &mut buf);\n unsafe { Some(FastStr::from_vec_u8_unchecked(buf)) }\n }\n}", - "Signature": "#[inline]\n fn remove_prefix_and_to_rpc_format(&self, prefix: &'static str, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 179, - "StartOffset": 5701, - "EndOffset": 5708 - } - ], - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "File": "src/convert.rs", - "Line": 186, - "StartOffset": 6038, - "EndOffset": 6060 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "File": "src/convert.rs", - "Line": 194, - "StartOffset": 6292, - "EndOffset": 6313 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 185, - "StartOffset": 5959, - "EndOffset": 5972 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 186, - "StartOffset": 6029, - "EndOffset": 6036 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "File": "src/convert.rs", - "Line": 183, - "StartOffset": 5859, - "EndOffset": 5878 - } - ] - }, - "HttpConverter.to_http_format": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 97, - "StartOffset": 2881, - "EndOffset": 3716, - "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n fn to_http_format(&self, key: &str, buf: &mut [u8]) {\n let mut l = 0;\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' => ch.to_ascii_lowercase(),\n '_' => '-',\n _ => ch,\n };\n let len = ch.len_utf8();\n match len {\n 1 => unsafe {\n *buf.get_unchecked_mut(l) = ch as u8;\n },\n _ => unsafe {\n std::ptr::copy_nonoverlapping(\n ch.encode_utf8(&mut [0; 4]).as_bytes().as_ptr(),\n buf.as_mut_ptr().add(l),\n len,\n );\n },\n }\n l += len;\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - } - }, - "HttpConverter.to_http_format_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 340, - "StartOffset": 10459, - "EndOffset": 10747, - "Content": "impl HttpConverter {\n fn to_http_format_string(&self, key: &str) -> String {\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_http_format(key, &mut buf);\n String::from_utf8(buf).unwrap()\n }\n}", - "Signature": "fn to_http_format_string(&self, key: &str) -> String {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 345, - "StartOffset": 10663, - "EndOffset": 10677 - } - ] - }, - "HttpConverter.to_rpc_format": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 124, - "StartOffset": 3722, - "EndOffset": 4556, - "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n /// Convert `rpc-persist-test-key` to `RPC_PERSIST_TEST_KEY`\n #[inline]\n fn to_rpc_format(&self, key: &str, buf: &mut [u8]) {\n let mut l = 0;\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' => ch.to_ascii_uppercase(),\n '-' => '_',\n _ => ch,\n };\n let len = ch.len_utf8();\n match len {\n 1 => unsafe {\n *buf.get_unchecked_mut(l) = ch as u8;\n },\n _ => unsafe {\n std::ptr::copy_nonoverlapping(\n ch.encode_utf8(&mut [0; 4]).as_bytes().as_ptr(),\n buf.as_mut_ptr().add(l),\n len,\n );\n },\n }\n l += len;\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - } - }, - "HttpConverter.to_rpc_format_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 349, - "StartOffset": 10757, - "EndOffset": 11043, - "Content": "impl HttpConverter {\n fn to_rpc_format_string(&self, key: &str) -> String {\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_rpc_format(key, &mut buf);\n String::from_utf8(buf).unwrap()\n }\n}", - "Signature": "fn to_rpc_format_string(&self, key: &str) -> String {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 354, - "StartOffset": 10960, - "EndOffset": 10973 - } - ] - }, - "RpcConverter.add_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 27, - "StartOffset": 758, - "EndOffset": 1758, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(&self, prefix: &'static str, key: &str) -> FastStr {\n // checks if we can use the inline buffer to reduce heap allocations\n if prefix.len() + key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n unsafe {\n std::ptr::copy_nonoverlapping(\n prefix.as_ptr(),\n inline_buf.as_mut_ptr(),\n prefix.len(),\n );\n std::ptr::copy_nonoverlapping(\n key.as_ptr(),\n inline_buf.as_mut_ptr().add(prefix.len()),\n key.len(),\n );\n }\n return unsafe {\n FastStr::new_u8_slice_unchecked(&inline_buf[..prefix.len() + key.len()])\n };\n }\n let mut res = String::with_capacity(prefix.len() + key.len());\n res.push_str(prefix);\n res.push_str(key);\n FastStr::from_string(res)\n }\n}", - "Signature": "#[inline]\n fn add_prefix(&self, prefix: &'static str, key: &str) -> FastStr {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 28, - "StartOffset": 829, - "EndOffset": 836 - } - ], - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "File": "src/convert.rs", - "Line": 45, - "StartOffset": 1502, - "EndOffset": 1524 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 51, - "StartOffset": 1736, - "EndOffset": 1747 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 45, - "StartOffset": 1493, - "EndOffset": 1500 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "File": "src/convert.rs", - "Line": 30, - "StartOffset": 955, - "EndOffset": 974 - } - ] - }, - "RpcConverter.remove_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1764, - "EndOffset": 1938, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(&self, prefix: &'static str, key: &str) -> Option {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::new(key))\n }\n}", - "Signature": "#[inline]\n fn remove_prefix(&self, prefix: &'static str, key: &str) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 55, - "StartOffset": 1845, - "EndOffset": 1852 - } - ], - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new", - "File": "src/convert.rs", - "Line": 57, - "StartOffset": 1923, - "EndOffset": 1926 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 57, - "StartOffset": 1914, - "EndOffset": 1921 - } - ] - } - }, - "Types": { - "Converter": { - "Exported": true, - "TypeKind": "interface", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/convert.rs", - "Line": 10, - "StartOffset": 214, - "EndOffset": 643, - "Content": "pub trait Converter {\n fn add_persistent_prefix(&self, key: &str) -> FastStr;\n fn add_transient_prefix(&self, key: &str) -> FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(&self, key: &str) -> FastStr;\n\n fn remove_persistent_prefix(&self, key: &str) -> Option;\n fn remove_transient_prefix(&self, key: &str) -> Option;\n fn remove_backward_prefix(&self, key: &str) -> Option;\n}", - "SubStruct": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 11, - "StartOffset": 286, - "EndOffset": 293 - } - ] - }, - "HttpConverter": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 93, - "StartOffset": 2806, - "EndOffset": 2854, - "Content": "#[derive(Clone, Copy)]\npub struct HttpConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix" - }, - "add_prefix_and_to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format" - }, - "add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix" - }, - "remove_prefix_and_to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format" - }, - "remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix" - }, - "to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format" - }, - "to_http_format_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string" - }, - "to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format" - }, - "to_rpc_format_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string" - } - } - }, - "RpcConverter": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/convert.rs", - "Line": 23, - "StartOffset": 685, - "EndOffset": 732, - "Content": "#[derive(Clone, Copy)]\npub struct RpcConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix" - }, - "add_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix" - }, - "add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix" - }, - "remove_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix" - }, - "remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix" - } - } - } - }, - "Vars": { - "FASTSTR_INLINE_SIZE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "File": "src/convert.rs", - "Line": 21, - "StartOffset": 645, - "EndOffset": 683, - "Content": "const FASTSTR_INLINE_SIZE: usize = 24;" - } - } - }, - "metainfo::faststr_map": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::faststr_map", - "Functions": { - "FastStrMap.capacity": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity", - "File": "src/faststr_map.rs", - "Line": 84, - "StartOffset": 1986, - "EndOffset": 2069, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(&self) -> usize {\n self.inner.capacity()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "File": "src/faststr_map.rs", - "Line": 86, - "StartOffset": 2053, - "EndOffset": 2061 - } - ] - }, - "FastStrMap.clear": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "File": "src/faststr_map.rs", - "Line": 54, - "StartOffset": 1362, - "EndOffset": 1435, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n self.inner.clear();\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/faststr_map.rs", - "Line": 56, - "StartOffset": 1421, - "EndOffset": 1426 - } - ] - }, - "FastStrMap.contains": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "File": "src/faststr_map.rs", - "Line": 44, - "StartOffset": 1111, - "EndOffset": 1227, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains(&self) -> bool {\n self.inner.contains_key(&TypeId::of::())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/faststr_map.rs", - "Line": 46, - "StartOffset": 1189, - "EndOffset": 1201 - } - ] - }, - "FastStrMap.entry": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "File": "src/faststr_map.rs", - "Line": 69, - "StartOffset": 1682, - "EndOffset": 1813, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, FastStr> {\n self.inner.entry(TypeId::of::())\n }\n}", - "Signature": "#[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, FastStr> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1735, - "EndOffset": 1740 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1753, - "EndOffset": 1760 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/faststr_map.rs", - "Line": 71, - "StartOffset": 1783, - "EndOffset": 1788 - } - ] - }, - "FastStrMap.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "File": "src/faststr_map.rs", - "Line": 59, - "StartOffset": 1441, - "EndOffset": 1545, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", - "Signature": "#[inline]\n pub fn extend(&mut self, other: FastStrMap) {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Params": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 60, - "StartOffset": 1487, - "EndOffset": 1497 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/faststr_map.rs", - "Line": 61, - "StartOffset": 1520, - "EndOffset": 1526 - } - ] - }, - "FastStrMap.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "File": "src/faststr_map.rs", - "Line": 34, - "StartOffset": 855, - "EndOffset": 969, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get(&self) -> Option<&FastStr> {\n self.inner.get(&TypeId::of::())\n }\n}", - "Signature": "#[inline]\n pub fn get(&self) -> Option<&FastStr> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 910, - "EndOffset": 917 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/faststr_map.rs", - "Line": 36, - "StartOffset": 940, - "EndOffset": 943 - } - ] - }, - "FastStrMap.get_mut": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "File": "src/faststr_map.rs", - "Line": 39, - "StartOffset": 975, - "EndOffset": 1105, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut(&mut self) -> Option<&mut FastStr> {\n self.inner.get_mut(&TypeId::of::())\n }\n}", - "Signature": "#[inline]\n pub fn get_mut(&mut self) -> Option<&mut FastStr> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1042, - "EndOffset": 1049 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/faststr_map.rs", - "Line": 41, - "StartOffset": 1072, - "EndOffset": 1079 - } - ] - }, - "FastStrMap.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "File": "src/faststr_map.rs", - "Line": 29, - "StartOffset": 716, - "EndOffset": 849, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert(&mut self, t: FastStr) {\n self.inner.insert(TypeId::of::(), t);\n }\n}", - "Signature": "#[inline]\n pub fn insert(&mut self, t: FastStr) {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Params": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 784, - "EndOffset": 791 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "src/faststr_map.rs", - "Line": 31, - "StartOffset": 814, - "EndOffset": 820 - } - ] - }, - "FastStrMap.is_empty": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty", - "File": "src/faststr_map.rs", - "Line": 74, - "StartOffset": 1819, - "EndOffset": 1901, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(&self) -> bool {\n self.inner.is_empty()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "File": "src/faststr_map.rs", - "Line": 76, - "StartOffset": 1885, - "EndOffset": 1893 - } - ] - }, - "FastStrMap.iter": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "File": "src/faststr_map.rs", - "Line": 64, - "StartOffset": 1551, - "EndOffset": 1676, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, FastStr> {\n self.inner.iter()\n }\n}", - "Signature": "#[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, FastStr> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "src/faststr_map.rs", - "Line": 65, - "StartOffset": 1617, - "EndOffset": 1621 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 65, - "StartOffset": 1634, - "EndOffset": 1641 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/faststr_map.rs", - "Line": 66, - "StartOffset": 1664, - "EndOffset": 1668 - } - ] - }, - "FastStrMap.len": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", - "File": "src/faststr_map.rs", - "Line": 79, - "StartOffset": 1907, - "EndOffset": 1980, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(&self) -> usize {\n self.inner.len()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/faststr_map.rs", - "Line": 81, - "StartOffset": 1969, - "EndOffset": 1972 - } - ] - }, - "FastStrMap.remove": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "File": "src/faststr_map.rs", - "Line": 49, - "StartOffset": 1233, - "EndOffset": 1356, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.inner.remove(&TypeId::of::())\n }\n}", - "Signature": "#[inline]\n pub fn remove(&mut self) -> Option {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1294, - "EndOffset": 1301 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/faststr_map.rs", - "Line": 51, - "StartOffset": 1324, - "EndOffset": 1330 - } - ] - }, - "FastStrMap::with_capacity": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/faststr_map.rs", - "Line": 22, - "StartOffset": 528, - "EndOffset": 710, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -> Self {\n Self {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 639, - "EndOffset": 663 - }, - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 683, - "EndOffset": 690 - } - ], - "Types": [ - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 624, - "EndOffset": 637 - } - ] - } - }, - "Types": { - "FastStrMap": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 6, - "StartOffset": 109, - "EndOffset": 386, - "Content": "/// This is an optimized version of TypeMap to FastStr that eliminates the need to Box the values.\n///\n/// This map is suitable for T that impls both From and Into.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 11, - "StartOffset": 353, - "EndOffset": 366 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 11, - "StartOffset": 375, - "EndOffset": 382 - } - ], - "Methods": { - "capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity" - }, - "clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear" - }, - "contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains" - }, - "entry": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry" - }, - "extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend" - }, - "get": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get" - }, - "get_mut": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut" - }, - "insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert" - }, - "is_empty": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty" - }, - "iter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter" - }, - "len": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len" - }, - "remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove" - } - } - } - }, - "Vars": {} - }, - "metainfo::forward": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::forward", - "Functions": {}, - "Types": { - "Forward": { - "Exported": true, - "TypeKind": "interface", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "File": "src/forward.rs", - "Line": 5, - "StartOffset": 45, - "EndOffset": 2023, - "Content": "pub trait Forward {\n fn get_persistent>(&self, key: K) -> Option;\n fn get_transient>(&self, key: K) -> Option;\n fn get_upstream>(&self, key: K) -> Option;\n\n fn get_all_persistents(&self) -> Option<&AHashMap>;\n fn get_all_transients(&self) -> Option<&AHashMap>;\n fn get_all_upstreams(&self) -> Option<&AHashMap>;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option>;\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option>;\n\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator;\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator;\n\n fn set_persistent, V: Into>(&mut self, key: K, value: V);\n fn set_transient, V: Into>(&mut self, key: K, value: V);\n fn set_upstream, V: Into>(&mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent>(&mut self, key: K) -> Option;\n fn del_transient>(&mut self, key: K) -> Option;\n fn del_upstream>(&mut self, key: K) -> Option;\n}", - "SubStruct": [ - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 127, - "EndOffset": 134 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 324, - "EndOffset": 332 - } - ] - } - }, - "Vars": {} - }, - "metainfo::kv": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::kv", - "Functions": { - "Node.clear": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "File": "src/kv.rs", - "Line": 121, - "StartOffset": 3091, - "EndOffset": 3387, - "Content": "impl Node {\n set_impl!(persistent);\n set_impl!(transient);\n set_impl!(stale);\n\n del_impl!(persistent);\n del_impl!(transient);\n del_impl!(stale);\n\n get_impl!(persistent);\n get_impl!(transient);\n get_impl!(stale);\n\n get_all_impl!(persistent);\n get_all_impl!(transient);\n get_all_impl!(stale);\n\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n if let Some(v) = self.persistent.as_mut() {\n v.clear();\n }\n\n if let Some(v) = self.transient.as_mut() {\n v.clear();\n }\n\n if let Some(v) = self.stale.as_mut() {\n v.clear();\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/kv.rs", - "Line": 124, - "StartOffset": 3197, - "EndOffset": 3202 - } - ] - }, - "Node.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/kv.rs", - "Line": 94, - "StartOffset": 2340, - "EndOffset": 3085, - "Content": "impl Node {\n set_impl!(persistent);\n set_impl!(transient);\n set_impl!(stale);\n\n del_impl!(persistent);\n del_impl!(transient);\n del_impl!(stale);\n\n get_impl!(persistent);\n get_impl!(transient);\n get_impl!(stale);\n\n get_all_impl!(persistent);\n get_all_impl!(transient);\n get_all_impl!(stale);\n\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: Self) {\n if let Some(v) = other.persistent {\n if self.persistent.is_none() {\n self.persistent = Some(v);\n } else {\n self.persistent.as_mut().unwrap().extend(v);\n }\n }\n\n if let Some(v) = other.transient {\n if self.transient.is_none() {\n self.transient = Some(v);\n } else {\n self.transient.as_mut().unwrap().extend(v);\n }\n }\n\n if let Some(v) = other.stale {\n if self.stale.is_none() {\n self.stale = Some(v);\n } else {\n self.stale.as_mut().unwrap().extend(v);\n }\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node" - } - }, - "MethodCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "File": "src/kv.rs", - "Line": 100, - "StartOffset": 2595, - "EndOffset": 2601 - } - ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl", - "File": "src/kv.rs", - "Line": 25, - "StartOffset": 636, - "EndOffset": 1040, - "Content": "macro_rules! del_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn []>(&mut self, key: K) -> Option {\n let key = key.as_ref();\n if let Some(v) = self.$name.as_mut() {\n v.remove(key)\n } else {\n None\n }\n }\n }\n };\n}", - "Signature": "macro_rules! del_impl {\n ($name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl", - "File": "src/kv.rs", - "Line": 25, - "StartOffset": 649, - "EndOffset": 657 - } - ] - }, - "get_all_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/kv.rs", - "Line": 58, - "StartOffset": 1482, - "EndOffset": 1728, - "Content": "macro_rules! get_all_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn [](&self) -> Option<&AHashMap> {\n self.$name.as_ref()\n }\n }\n };\n}", - "Signature": "macro_rules! get_all_impl {\n ($name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/kv.rs", - "Line": 58, - "StartOffset": 1495, - "EndOffset": 1507 - } - ] - }, - "get_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "File": "src/kv.rs", - "Line": 41, - "StartOffset": 1042, - "EndOffset": 1480, - "Content": "macro_rules! get_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn []>(&self, key: K) -> Option {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) => {\n v.get(key).cloned()\n }\n None => None,\n }\n }\n }\n };\n}", - "Signature": "macro_rules! get_impl {\n ($name:ident) ", - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "File": "src/kv.rs", - "Line": 41, - "StartOffset": 1055, - "EndOffset": 1063 - } - ] - }, - "set_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "File": "src/kv.rs", - "Line": 7, - "StartOffset": 131, - "EndOffset": 634, - "Content": "macro_rules! set_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn [], V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n if self.$name.is_none() {\n self.$name = Some(AHashMap::with_capacity(DEFAULT_CAPACITY));\n }\n self.$name.as_mut().unwrap().insert(key.into(), value.into());\n }\n }\n };\n}" - } - }, - "Types": { - "Node": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/kv.rs", - "Line": 69, - "StartOffset": 1730, - "EndOffset": 2006, - "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option>,\n transient: Option>,\n // this is called stale because upstream and downstream all use this.\n stale: Option>,\n}", - "SubStruct": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 71, - "StartOffset": 1804, - "EndOffset": 1812 - }, - { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 71, - "StartOffset": 1813, - "EndOffset": 1820 - } - ], - "Methods": { - "clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear" - }, - "extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend" - } - } - } - }, - "Vars": { - "DEFAULT_CAPACITY": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "DEFAULT_CAPACITY", - "File": "src/kv.rs", - "Line": 5, - "StartOffset": 62, - "EndOffset": 97, - "Content": "const DEFAULT_CAPACITY: usize = 10;" - } - } - }, - "metainfo::type_map": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::type_map", - "Functions": { - "Entry.and_modify": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "File": "src/type_map.rs", - "Line": 44, - "StartOffset": 1076, - "EndOffset": 1371, - "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn and_modify(self, f: F) -> Self\n where\n V: Send + Sync + 'static,\n {\n Entry {\n inner: self.inner.and_modify(|v| {\n f(v.downcast_mut().unwrap());\n }),\n _marker: PhantomData,\n }\n }\n}", - "Signature": "#[inline]\n pub fn and_modify Entry<'a, K, V> {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -> &'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", - "Signature": "#[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_defa", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "or_default", - "File": "src/type_map.rs", - "Line": 59, - "StartOffset": 1438, - "EndOffset": 1448 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "File": "src/type_map.rs", - "Line": 63, - "StartOffset": 1541, - "EndOffset": 1555 - } - ] - }, - "Entry.or_insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "File": "src/type_map.rs", - "Line": 17, - "StartOffset": 344, - "EndOffset": 560, - "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with(|| Box::new(default));\n v.downcast_mut().unwrap()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 483, - "EndOffset": 497 - } - ] - }, - "Entry.or_insert_with": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "File": "src/type_map.rs", - "Line": 26, - "StartOffset": 566, - "EndOffset": 807, - "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert_with V>(self, default: F) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with(|| Box::new(default()));\n v.downcast_mut().unwrap()\n }\n}", - "Signature": "#[inline]\n pub fn or_insert_with Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert_with_key V>(self, default: F) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with_key(|key| Box::new(default(key)));\n v.downcast_mut().unwrap()\n }\n}", - "Signature": "#[inline]\n pub fn or_insert_with_key usize {\n self.inner.capacity()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "File": "src/type_map.rs", - "Line": 153, - "StartOffset": 3607, - "EndOffset": 3615 - } - ] - }, - "TypeMap.clear": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "File": "src/type_map.rs", - "Line": 118, - "StartOffset": 2851, - "EndOffset": 2924, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n self.inner.clear();\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/type_map.rs", - "Line": 120, - "StartOffset": 2910, - "EndOffset": 2915 - } - ] - }, - "TypeMap.contains": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "File": "src/type_map.rs", - "Line": 106, - "StartOffset": 2520, - "EndOffset": 2636, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains(&self) -> bool {\n self.inner.contains_key(&TypeId::of::())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/type_map.rs", - "Line": 108, - "StartOffset": 2598, - "EndOffset": 2610 - } - ] - }, - "TypeMap.entry": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "File": "src/type_map.rs", - "Line": 133, - "StartOffset": 3170, - "EndOffset": 3367, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, T> {\n Entry {\n inner: self.inner.entry(TypeId::of::()),\n _marker: PhantomData,\n }\n }\n}", - "Signature": "#[inline]\n pub fn entry(&mut self) -> Entry<'_, Type", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 134, - "StartOffset": 3223, - "EndOffset": 3228 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/type_map.rs", - "Line": 136, - "StartOffset": 3292, - "EndOffset": 3297 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 135, - "StartOffset": 3254, - "EndOffset": 3259 - } - ] - }, - "TypeMap.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "File": "src/type_map.rs", - "Line": 123, - "StartOffset": 2930, - "EndOffset": 3031, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\n}", - "Signature": "#[inline]\n pub fn extend(&mut self, other: TypeMap) {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "Params": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 124, - "StartOffset": 2976, - "EndOffset": 2983 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/type_map.rs", - "Line": 125, - "StartOffset": 3006, - "EndOffset": 3012 - } - ] - }, - "TypeMap.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "File": "src/type_map.rs", - "Line": 92, - "StartOffset": 2146, - "EndOffset": 2319, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get(&self) -> Option<&T> {\n self.inner\n .get(&TypeId::of::())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", - "Signature": "#[inline]\n pub fn get(&self) -> Opti", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2238, - "EndOffset": 2241 - } - ] - }, - "TypeMap.get_mut": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "File": "src/type_map.rs", - "Line": 99, - "StartOffset": 2325, - "EndOffset": 2514, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut(&mut self) -> Option<&mut T> {\n self.inner\n .get_mut(&TypeId::of::())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", - "Signature": "#[inline]\n pub fn get_mut(&mut self) -> Opti", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2429, - "EndOffset": 2436 - } - ] - }, - "TypeMap.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "File": "src/type_map.rs", - "Line": 87, - "StartOffset": 2003, - "EndOffset": 2140, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert(&mut self, t: T) {\n self.inner.insert(TypeId::of::(), Box::new(t));\n }\n}", - "Signature": "#[inline]\n pub fn insert bool {\n self.inner.is_empty()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "File": "src/type_map.rs", - "Line": 143, - "StartOffset": 3439, - "EndOffset": 3447 - } - ] - }, - "TypeMap.iter": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "File": "src/type_map.rs", - "Line": 128, - "StartOffset": 3037, - "EndOffset": 3164, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, AnyObject> {\n self.inner.iter()\n }\n}", - "Signature": "#[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, AnyObject> {\n ", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "Results": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3103, - "EndOffset": 3107 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3120, - "EndOffset": 3129 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/type_map.rs", - "Line": 130, - "StartOffset": 3152, - "EndOffset": 3156 - } - ] - }, - "TypeMap.len": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len", - "File": "src/type_map.rs", - "Line": 146, - "StartOffset": 3461, - "EndOffset": 3534, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(&self) -> usize {\n self.inner.len()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/type_map.rs", - "Line": 148, - "StartOffset": 3523, - "EndOffset": 3526 - } - ] - }, - "TypeMap.remove": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "File": "src/type_map.rs", - "Line": 111, - "StartOffset": 2642, - "EndOffset": 2845, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.inner\n .remove(&TypeId::of::())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", - "Signature": "#[inline]\n pub fn remove(&mut self) -> Opt", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2740, - "EndOffset": 2746 - } - ] - }, - "TypeMap::with_capacity": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "File": "src/type_map.rs", - "Line": 80, - "StartOffset": 1812, - "EndOffset": 1997, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -> Self {\n TypeMap {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1926, - "EndOffset": 1950 - }, - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1970, - "EndOffset": 1977 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 82, - "StartOffset": 1882, - "EndOffset": 1889 - }, - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1911, - "EndOffset": 1924 - } - ] - } - }, - "Types": { - "AnyObject": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": 142, - "EndOffset": 197, - "Content": "pub(crate) type AnyObject = Box;" - }, - "Entry": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 11, - "StartOffset": 199, - "EndOffset": 305, - "Content": "pub struct Entry<'a, K: 'a, V: 'a> {\n inner: MapEntry<'a, K, AnyObject>,\n _marker: PhantomData,\n}", - "SubStruct": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 12, - "StartOffset": 247, - "EndOffset": 255 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 12, - "StartOffset": 263, - "EndOffset": 272 - } - ], - "Methods": { - "and_modify": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify" - }, - "or_default": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default" - }, - "or_insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert" - }, - "or_insert_with": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with" - }, - "or_insert_with_key": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key" - } - } - }, - "TypeMap": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 67, - "StartOffset": 1577, - "EndOffset": 1670, - "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 69, - "StartOffset": 1635, - "EndOffset": 1648 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 69, - "StartOffset": 1657, - "EndOffset": 1666 - } - ], - "Methods": { - "capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity" - }, - "clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear" - }, - "contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains" - }, - "entry": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry" - }, - "extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend" - }, - "get": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get" - }, - "get_mut": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut" - }, - "insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert" - }, - "is_empty": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty" - }, - "iter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter" - }, - "len": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len" - }, - "remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove" - } - } - } - }, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "src/backward.rs": { - "Path": "src/backward.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - } - ], - "Package": "metainfo::backward" - }, - "src/convert.rs": { - "Path": "src/convert.rs", - "Imports": [ - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use crate::{HTTP_PREFIX_BACKWARD, HTTP_PREFIX_PERSISTENT, HTTP_PREFIX_TRANSIENT, RPC_PREFIX_BACKWARD,RPC_PREFIX_PERSISTENT, RPC_PREFIX_TRANSIENT,};" - }, - { - "Path": "use crate::convert::{Converter, HttpConverter, RpcConverter};" - } - ], - "Package": "metainfo::convert" - }, - "src/faststr_map.rs": { - "Path": "src/faststr_map.rs", - "Imports": [ - { - "Path": "use std::{any::TypeId, collections::hash_map::Entry};" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use rustc_hash::FxHashMapRand;" - } - ], - "Package": "metainfo::faststr_map" - }, - "src/forward.rs": { - "Path": "src/forward.rs", - "Imports": [ - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use crate::AHashMap;" - } - ], - "Package": "metainfo::forward" - }, - "src/kv.rs": { - "Path": "src/kv.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use paste::paste;" - }, - { - "Path": "use super::*;" - } - ], - "Package": "metainfo::kv" - }, - "src/lib.rs": { - "Path": "src/lib.rs", - "Imports": [ - { - "Path": "use std::{fmt, sync::Arc};" - }, - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use convert::{Converter, HttpConverter, RpcConverter};" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use kv::Node;" - }, - { - "Path": "use paste::paste;" - }, - { - "Path": "use super::*;" - } - ], - "Package": "metainfo" - }, - "src/type_map.rs": { - "Path": "src/type_map.rs", - "Imports": [ - { - "Path": "use std::{any::{Any, TypeId},collections::hash_map::Entry as MapEntry,marker::PhantomData,};" - }, - { - "Path": "use rustc_hash::FxHashMapRand;" - } - ], - "Package": "metainfo::type_map" - } + }, + "Types": { + "Bytes": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "Bytes", + "File": "bytes.rs", + "Line": 21, + "StartOffset": 487, + "EndOffset": 4236, + "Content": "/// A cheaply cloneable and sliceable chunk of contiguous memory.\n///\n/// `Bytes` is an efficient container for storing and operating on contiguous\n/// slices of memory. It is intended for use primarily in networking code, but\n/// could have applications elsewhere as well.\n///\n/// `Bytes` values facilitate zero-copy network programming by allowing multiple\n/// `Bytes` objects to point to the same underlying memory.\n///\n/// `Bytes` does not have a single implementation. It is an interface, whose\n/// exact behavior is implemented through dynamic dispatch in several underlying\n/// implementations of `Bytes`.\n///\n/// All `Bytes` implementations must fulfill the following requirements:\n/// - They are cheaply cloneable and thereby shareable between an unlimited amount\n/// of components, for example by modifying a reference count.\n/// - Instances can be sliced to refer to a subset of the original buffer.\n///\n/// ```\n/// use bytes::Bytes;\n///\n/// let mut mem = Bytes::from(\"Hello world\");\n/// let a = mem.slice(0..5);\n///\n/// assert_eq!(a, \"Hello\");\n///\n/// let b = mem.split_to(6);\n///\n/// assert_eq!(mem, \"world\");\n/// assert_eq!(b, \"Hello \");\n/// ```\n///\n/// # Memory layout\n///\n/// The `Bytes` struct itself is fairly small, limited to 4 `usize` fields used\n/// to track information about which segment of the underlying memory the\n/// `Bytes` handle has access to.\n///\n/// `Bytes` keeps both a pointer to the shared state containing the full memory\n/// slice and a pointer to the start of the region visible by the handle.\n/// `Bytes` also tracks the length of its view into the memory.\n///\n/// # Sharing\n///\n/// `Bytes` contains a vtable, which allows implementations of `Bytes` to define\n/// how sharing/cloning is implemented in detail.\n/// When `Bytes::clone()` is called, `Bytes` will call the vtable function for\n/// cloning the backing storage in order to share it behind multiple `Bytes`\n/// instances.\n///\n/// For `Bytes` implementations which refer to constant memory (e.g. created\n/// via `Bytes::from_static()`) the cloning implementation will be a no-op.\n///\n/// For `Bytes` implementations which point to a reference counted shared storage\n/// (e.g. an `Arc<[u8]>`), sharing will be implemented by increasing the\n/// reference count.\n///\n/// Due to this mechanism, multiple `Bytes` instances may point to the same\n/// shared memory region.\n/// Each `Bytes` instance can point to different sections within that\n/// memory region, and `Bytes` instances may or may not have overlapping views\n/// into the memory.\n///\n/// The following diagram visualizes a scenario where 2 `Bytes` instances make\n/// use of an `Arc`-based backing storage, and provide access to different views:\n///\n/// ```text\n///\n/// Arc ptrs ┌─────────┐\n/// ________________________ / │ Bytes 2 │\n/// / └─────────┘\n/// / ┌───────────┐ | |\n/// |_________/ │ Bytes 1 │ | |\n/// | └───────────┘ | |\n/// | | | ___/ data | tail\n/// | data | tail |/ |\n/// v v v v\n/// ┌─────┬─────┬───────────┬───────────────┬─────┐\n/// │ Arc │ │ │ │ │\n/// └─────┴─────┴───────────┴───────────────┴─────┘\n/// ```\npub struct Bytes {\n ptr: *const u8,\n len: usize,\n // inlined \"trait object\"\n data: AtomicPtr<()>,\n vtable: &'static Vtable,\n}" + }, + "Owned": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "Owned", + "File": "bytes.rs", + "Line": 1117, + "StartOffset": 31388, + "EndOffset": 31461, + "Content": "#[repr(C)]\nstruct Owned {\n lifetime: OwnedLifetime,\n owner: T,\n}" + }, + "OwnedLifetime": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "OwnedLifetime", + "File": "bytes.rs", + "Line": 1111, + "StartOffset": 31295, + "EndOffset": 31386, + "Content": "#[repr(C)]\nstruct OwnedLifetime {\n ref_cnt: AtomicUsize,\n drop: unsafe fn(*mut ()),\n}" + }, + "Shared": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "Shared", + "File": "bytes.rs", + "Line": 1353, + "StartOffset": 38133, + "EndOffset": 38286, + "Content": "struct Shared {\n // Holds arguments to dealloc upon Drop, but otherwise doesn't use them\n buf: *mut u8,\n cap: usize,\n ref_cnt: AtomicUsize,\n}" + }, + "Vtable": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "Vtable", + "File": "bytes.rs", + "Line": 110, + "StartOffset": 4238, + "EndOffset": 4734, + "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> Vec,\n pub to_mut: unsafe fn(&AtomicPtr<()>, *const u8, usize) -> BytesMut,\n /// fn(data)\n pub is_unique: unsafe fn(&AtomicPtr<()>) -> bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(&mut AtomicPtr<()>, *const u8, usize),\n}" } - }, - "rustc-hash@2.1.1": { - "Language": "rust", - "Version": "2.1.1", - "Name": "rustc-hash", - "Dir": "", - "Packages": { - "rustc-hash::random_state": { - "IsMain": false, - "IsTest": false, - "PkgPath": "rustc-hash::random_state", - "Functions": { - "FxRandomState.build_hasher": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState.build_hasher", - "File": "random_state.rs", - "Line": 49, - "StartOffset": 1643, - "EndOffset": 1728, - "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(&self) -> Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - }, - "FxRandomState::default": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "File": "random_state.rs", - "Line": 55, - "StartOffset": 1769, - "EndOffset": 1817, - "Content": "impl Default for FxRandomState {\n fn default() -> Self {\n Self::new()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - } - }, - "Types": { - "FxHashMapRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "random_state.rs", - "Line": 5, - "StartOffset": 65, - "EndOffset": 208, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand = HashMap;" - }, - "FxHashSetRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashSetRand", - "File": "random_state.rs", - "Line": 8, - "StartOffset": 210, - "EndOffset": 347, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand = HashSet;" - }, - "FxRandomState": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState", - "File": "random_state.rs", - "Line": 11, - "StartOffset": 349, - "EndOffset": 704, - "Content": "/// `FxRandomState` is an alternative state for `HashMap` types.\n///\n/// A particular instance `FxRandomState` will create the same instances of\n/// [`Hasher`], but the hashers created by two different `FxRandomState`\n/// instances are unlikely to produce the same result for the same values.\n#[derive(Clone)]\npub struct FxRandomState {\n seed: usize,\n}", - "Methods": { - "build_hasher": { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState.build_hasher" - } - } - } - }, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "random_state.rs": { - "Path": "random_state.rs" - } + }, + "Vars": { + "KIND_ARC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_ARC", + "File": "bytes.rs", + "Line": 1380, + "StartOffset": 38970, + "EndOffset": 38998, + "Content": "const KIND_ARC: usize = 0b0;" + }, + "KIND_MASK": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_MASK", + "File": "bytes.rs", + "Line": 1382, + "StartOffset": 39028, + "EndOffset": 39057, + "Content": "const KIND_MASK: usize = 0b1;" + }, + "KIND_VEC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_VEC", + "File": "bytes.rs", + "Line": 1381, + "StartOffset": 38999, + "EndOffset": 39027, + "Content": "const KIND_VEC: usize = 0b1;" + }, + "OWNED_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "OWNED_VTABLE", + "File": "bytes.rs", + "Line": 1178, + "StartOffset": 32959, + "EndOffset": 33130, + "Content": "static OWNED_VTABLE: Vtable = Vtable {\n clone: owned_clone,\n to_vec: owned_to_vec,\n to_mut: owned_to_mut,\n is_unique: owned_is_unique,\n drop: owned_drop,\n};" + }, + "PROMOTABLE_EVEN_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "PROMOTABLE_EVEN_VTABLE", + "File": "bytes.rs", + "Line": 1188, + "StartOffset": 33170, + "EndOffset": 33396, + "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n to_mut: promotable_even_to_mut,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" + }, + "PROMOTABLE_ODD_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "PROMOTABLE_ODD_VTABLE", + "File": "bytes.rs", + "Line": 1196, + "StartOffset": 33398, + "EndOffset": 33619, + "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n to_mut: promotable_odd_to_mut,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" + }, + "SHARED_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "SHARED_VTABLE", + "File": "bytes.rs", + "Line": 1372, + "StartOffset": 38791, + "EndOffset": 38968, + "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n to_mut: shared_to_mut,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" + }, + "STATIC_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.10.0", + "PkgPath": "bytes::bytes", + "Name": "STATIC_VTABLE", + "File": "bytes.rs", + "Line": 1078, + "StartOffset": 30426, + "EndOffset": 30602, + "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n to_mut: static_to_mut,\n is_unique: static_is_unique,\n drop: static_drop,\n};" } - }, - "std": { - "Language": "rust", - "Version": "", - "Name": "std", - "Dir": "", - "Packages": { - "std::collections::hash::map": { - "IsMain": false, - "IsTest": false, - "PkgPath": "std::collections::hash::map", - "Functions": { - "and_modify": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "File": "map.rs", - "Line": 2900, - "StartOffset": 89098, - "EndOffset": 89108, - "Content": "and_modify" - }, - "capacity": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "File": "map.rs", - "Line": 349, - "StartOffset": 13112, - "EndOffset": 13120, - "Content": "capacity" - }, - "clear": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "map.rs", - "Line": 727, - "StartOffset": 24426, - "EndOffset": 24431, - "Content": "clear" - }, - "contains_key": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "map.rs", - "Line": 1125, - "StartOffset": 37104, - "EndOffset": 37116, - "Content": "contains_key" - }, - "default": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "default", - "File": "map.rs", - "Line": 1406, - "StartOffset": 46194, - "EndOffset": 46201, - "Content": "default" - }, - "entry": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "map.rs", - "Line": 872, - "StartOffset": 29118, - "EndOffset": 29123, - "Content": "entry" - }, - "extend": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "map.rs", - "Line": 3246, - "StartOffset": 98957, - "EndOffset": 98963, - "Content": "extend" - }, - "get": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "map.rs", - "Line": 894, - "StartOffset": 29785, - "EndOffset": 29788, - "Content": "get" - }, - "get_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "map.rs", - "Line": 1153, - "StartOffset": 37852, - "EndOffset": 37859, - "Content": "get_mut" - }, - "insert": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "map.rs", - "Line": 1189, - "StartOffset": 39046, - "EndOffset": 39052, - "Content": "insert" - }, - "is_empty": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "File": "map.rs", - "Line": 605, - "StartOffset": 20378, - "EndOffset": 20386, - "Content": "is_empty" - }, - "iter": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "map.rs", - "Line": 535, - "StartOffset": 18547, - "EndOffset": 18551, - "Content": "iter" - }, - "len": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "map.rs", - "Line": 587, - "StartOffset": 19963, - "EndOffset": 19966, - "Content": "len" - }, - "or_insert_with": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "map.rs", - "Line": 2822, - "StartOffset": 86586, - "EndOffset": 86600, - "Content": "or_insert_with" - }, - "or_insert_with_key": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "File": "map.rs", - "Line": 2849, - "StartOffset": 87634, - "EndOffset": 87652, - "Content": "or_insert_with_key" - }, - "remove": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "map.rs", - "Line": 1244, - "StartOffset": 40858, - "EndOffset": 40864, - "Content": "remove" - }, - "with_capacity_and_hasher": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "File": "map.rs", - "Line": 331, - "StartOffset": 12430, - "EndOffset": 12454, - "Content": "with_capacity_and_hasher" - } - }, - "Types": { - "Entry": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "File": "map.rs", - "Line": 2239, - "StartOffset": 70549, - "EndOffset": 70554, - "Content": "Entry" - }, - "Iter": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "map.rs", - "Line": 1486, - "StartOffset": 48646, - "EndOffset": 48650, - "Content": "Iter" - } - }, - "Vars": {} - }, - "std::macros": { - "IsMain": false, - "IsTest": false, - "PkgPath": "std::macros", - "Functions": { - "println": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::macros", - "Name": "println", - "File": "macros.rs", - "Line": 138, - "StartOffset": 4320, - "EndOffset": 4327, - "Content": "println" - } - }, - "Types": {}, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "macros.rs": { - "Path": "macros.rs" - }, - "map.rs": { - "Path": "map.rs" - } + } + } + }, + "Dependencies": {}, + "Files": { + "bytes.rs": { + "Path": "bytes.rs" + } + } + }, + "faststr@0.2.31": { + "Language": "rust", + "Version": "0.2.31", + "Name": "faststr", + "Dir": "", + "Packages": { + "faststr": { + "IsMain": false, + "IsTest": false, + "PkgPath": "faststr", + "Functions": { + "FastStr.as_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.as_ref", + "File": "lib.rs", + "Line": 322, + "StartOffset": 10088, + "EndOffset": 10164, + "Content": "impl AsRef for FastStr {\n #[inline(always)]\n #[inline(always)]\n fn as_ref(&self) -> &str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.as_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.as_str", + "File": "lib.rs", + "Line": 209, + "StartOffset": 6596, + "EndOffset": 6726, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n pub fn as_str(&self) -> &str {\n self.0.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.borrow": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.borrow", + "File": "lib.rs", + "Line": 505, + "StartOffset": 14086, + "EndOffset": 14154, + "Content": "impl Borrow for FastStr {\n #[inline]\n #[inline]\n fn borrow(&self) -> &str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.cmp": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.cmp", + "File": "lib.rs", + "Line": 418, + "StartOffset": 11783, + "EndOffset": 11889, + "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(&self, other: &FastStr) -> Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.deep_clone_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes", + "File": "lib.rs", + "Line": 266, + "StartOffset": 8368, + "EndOffset": 8832, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// If the inner repr of FastStr is a Bytes, then it will be deep cloned and returned as a new FastStr.\n /// Otherwise, it will return a new FastStr with the same repr which has no cost.\n ///\n /// This is used to free the original memory of the Bytes.\n ///\n /// This is not stable and may be removed or renamed in the future.\n #[inline]\n #[doc(hidden)]\n pub fn deep_clone_bytes(&self) -> Self {\n Self(self.0.deep_clone_bytes())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.deref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.deref", + "File": "lib.rs", + "Line": 331, + "StartOffset": 10221, + "EndOffset": 10288, + "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(&self) -> &str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.eq", + "File": "lib.rs", + "Line": 404, + "StartOffset": 11539, + "EndOffset": 11624, + "Content": "impl<'a> PartialEq<&'a String> for FastStr {\n #[inline]\n #[inline]\n fn eq(&self, other: &&'a String) -> bool {\n self == *other\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.fmt", + "File": "lib.rs", + "Line": 439, + "StartOffset": 12217, + "EndOffset": 12333, + "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.hash": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.hash", + "File": "lib.rs", + "Line": 432, + "StartOffset": 12075, + "EndOffset": 12179, + "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash(&self, hasher: &mut H) {\n self.as_str().hash(hasher)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.index": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.index", + "File": "lib.rs", + "Line": 245, + "StartOffset": 7633, + "EndOffset": 8008, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return a new `FastStr` starting at index `start` and ending at index `end`. `[start..end)`\n ///\n /// # Safety\n ///\n /// The caller must guarantee that the string between `start` and `end` is valid utf-8.\n #[inline(always)]\n pub unsafe fn index(&self, start: usize, end: usize) -> Self {\n Self(self.0.slice_ref(&self.as_bytes()[start..end]))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.into_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes", + "File": "lib.rs", + "Line": 215, + "StartOffset": 6732, + "EndOffset": 6889, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Consumes and converts the `FastStr` into a `Bytes` object.\n #[inline(always)]\n pub fn into_bytes(self) -> Bytes {\n self.0.into_bytes()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.into_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.into_string", + "File": "lib.rs", + "Line": 255, + "StartOffset": 8014, + "EndOffset": 8362, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Consumes and converts the `FastStr` into a `String` at best effort.\n #[deprecated(\n since = \"0.2.13\",\n note = \"This method does not really express the `into` semantic. Use `to_string` instead.\"\n )]\n #[inline(always)]\n pub fn into_string(self) -> String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.is_empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.is_empty", + "File": "lib.rs", + "Line": 227, + "StartOffset": 7015, + "EndOffset": 7150, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return `true` if the `FastStr` is empty.\n #[inline(always)]\n pub fn is_empty(&self) -> bool {\n self.0.is_empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.len": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.len", + "File": "lib.rs", + "Line": 221, + "StartOffset": 6895, + "EndOffset": 7009, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return the `FastStr` length.\n #[inline(always)]\n pub fn len(&self) -> usize {\n self.0.len()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.partial_cmp": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.partial_cmp", + "File": "lib.rs", + "Line": 425, + "StartOffset": 11927, + "EndOffset": 12037, + "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(&self, other: &FastStr) -> Option {\n Some(self.cmp(other))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.slice_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref", + "File": "lib.rs", + "Line": 233, + "StartOffset": 7156, + "EndOffset": 7627, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n /// Return a new `FastStr` that represents a subset of the current string.\n ///\n /// Note: If the subset is small enough, it will be inlined.\n #[inline(always)]\n pub fn slice_ref(&self, subset: &str) -> Self {\n if subset.len() <= INLINE_CAP {\n // Safety: we have checked the length of subset <= `INLINE_CAP`.\n return Self(unsafe { Repr::new_inline_impl(subset) });\n }\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "lib.rs", + "Line": 92, + "StartOffset": 2770, + "EndOffset": 2989, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a `String`.\n #[inline]\n pub fn from_string(s: String) -> Self {\n if Self::can_inline(&s) {\n return Self::new(s);\n }\n Self(Repr::from_string(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_vec_u8_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "File": "lib.rs", + "Line": 170, + "StartOffset": 5347, + "EndOffset": 5693, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a `Vec`. This is an unsafe method because\n /// the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `v` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_vec_u8_unchecked(v: Vec) -> Self {\n Self::from_bytes_unchecked(v.into())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new", + "File": "lib.rs", + "Line": 30, + "StartOffset": 890, + "EndOffset": 1261, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n pub fn new(text: T) -> Self\n where\n T: AsRef,\n {\n Self(Repr::new(text))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new_u8_slice_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "File": "lib.rs", + "Line": 65, + "StartOffset": 2025, + "EndOffset": 2413, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `&str`, `Arc`, `Arc`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new `FastStr` from a byte slice `v`. This is an unsafe method because\n /// the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `v` must be valid UTF-8.\n #[inline]\n pub unsafe fn new_u8_slice_unchecked(v: &[u8]) -> Self {\n let s = unsafe { core::str::from_utf8_unchecked(v) };\n Self::new(s)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Repr.as_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.as_ref", + "File": "lib.rs", + "Line": 786, + "StartOffset": 22288, + "EndOffset": 22674, + "Content": "impl AsRef<[u8]> for Repr {\n #[inline]\n #[inline]\n fn as_ref(&self) -> &[u8] {\n match self {\n Self::Empty => &[],\n Self::Bytes(bytes) => bytes.as_ref(),\n Self::ArcStr(arc_str) => arc_str.as_bytes(),\n Self::ArcString(arc_string) => arc_string.as_bytes(),\n Self::StaticStr(s) => s.as_bytes(),\n Self::Inline { len, buf } => &buf[..*len],\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.as_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.as_str", + "File": "lib.rs", + "Line": 674, + "StartOffset": 18135, + "EndOffset": 18646, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(&self) -> &str {\n match self {\n Self::Empty => \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) => unsafe { core::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) => arc_str,\n Self::ArcString(arc_string) => arc_string,\n Self::StaticStr(s) => s,\n Self::Inline { len, buf } => unsafe { core::str::from_utf8_unchecked(&buf[..*len]) },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.deep_clone_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes", + "File": "lib.rs", + "Line": 718, + "StartOffset": 19810, + "EndOffset": 20450, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(&self) -> Self {\n match self {\n Self::Empty => Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) => unsafe { Self::new(core::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) => Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) => Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) => Self::StaticStr(s),\n Self::Inline { len, buf } => Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.into_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.into_bytes", + "File": "lib.rs", + "Line": 704, + "StartOffset": 19266, + "EndOffset": 19804, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -> Bytes {\n match self {\n Self::Empty => Bytes::new(),\n Self::Bytes(bytes) => bytes,\n Self::ArcStr(arc_str) => Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) => {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) => Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } => Bytes::from(buf[..len].to_vec()),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.into_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.into_string", + "File": "lib.rs", + "Line": 687, + "StartOffset": 18652, + "EndOffset": 19260, + "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -> String {\n match self {\n Self::Empty => String::new(),\n Self::Bytes(bytes) => unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) => arc_str.to_string(),\n Self::ArcString(arc_string) => {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) => s.to_string(),\n Self::Inline { len, buf } => unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.is_empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.is_empty", + "File": "lib.rs", + "Line": 662, + "StartOffset": 17743, + "EndOffset": 18129, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(&self) -> bool {\n match self {\n Self::Empty => true,\n Self::Bytes(bytes) => bytes.is_empty(),\n Self::ArcStr(arc_str) => arc_str.is_empty(),\n Self::ArcString(arc_string) => arc_string.is_empty(),\n Self::StaticStr(s) => s.is_empty(),\n Self::Inline { len, .. } => *len == 0,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.len": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.len", + "File": "lib.rs", + "Line": 650, + "StartOffset": 17383, + "EndOffset": 17737, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(&self) -> usize {\n match self {\n Self::Empty => 0,\n Self::Bytes(bytes) => bytes.len(),\n Self::ArcStr(arc_str) => arc_str.len(),\n Self::ArcString(arc_string) => arc_string.len(),\n Self::StaticStr(s) => s.len(),\n Self::Inline { len, .. } => *len,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.slice_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.slice_ref", + "File": "lib.rs", + "Line": 734, + "StartOffset": 20456, + "EndOffset": 22252, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(&self, subset: &[u8]) -> Self {\n if subset.is_empty() {\n return Self::Empty;\n }\n let bytes_p = self.as_ref().as_ptr() as usize;\n let bytes_len = self.len();\n\n let sub_p = subset.as_ptr() as usize;\n let sub_len = subset.len();\n\n assert!(\n sub_p >= bytes_p,\n \"subset pointer ({:p}) is smaller than self pointer ({:p})\",\n subset.as_ptr(),\n self.as_ref().as_ptr(),\n );\n assert!(\n sub_p + sub_len <= bytes_p + bytes_len,\n \"subset is out of bounds: self = ({:p}, {}), subset = ({:p}, {})\",\n self.as_ref().as_ptr(),\n bytes_len,\n subset.as_ptr(),\n sub_len,\n );\n\n let sub_offset = sub_p - bytes_p;\n match self {\n Repr::Empty => panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) => Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) => Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) => Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) => Self::StaticStr(unsafe {\n core::str::from_utf8_unchecked(&s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } => Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(&buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "build_from_str_iter": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "build_from_str_iter", + "File": "lib.rs", + "Line": 460, + "StartOffset": 12709, + "EndOffset": 13436, + "Content": "fn build_from_str_iter(mut iter: impl Iterator) -> FastStr\nwhere\n T: AsRef,\n String: iter::Extend,\n{\n let mut len = 0;\n let mut buf = [0u8; INLINE_CAP];\n while let Some(slice) = iter.next() {\n let slice = slice.as_ref();\n let size = slice.len();\n if size + len > INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(&buf[..len]) });\n s.push_str(slice);\n s.extend(iter);\n return FastStr(Repr::Bytes(Bytes::from(s)));\n }\n buf[len..][..size].copy_from_slice(slice.as_bytes());\n len += size;\n }\n FastStr(Repr::Inline { len, buf })\n}" + } + }, + "Types": { + "FastStr": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "lib.rs", + "Line": 18, + "StartOffset": 412, + "EndOffset": 722, + "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n///\n/// **Note:** The memory size of `FastStr` is not `24`, so switching from [`String`] or [`SmolStr`](https://docs.rs/smol_str/latest/smol_str/struct.SmolStr.html) to `FastStr` may not be harmless.\n#[derive(Clone)]\npub struct FastStr(Repr);", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.as_str" + }, + "borrow": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.borrow" + }, + "cmp": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.cmp" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes" + }, + "deref": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.deref" + }, + "eq": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.eq" + }, + "fmt": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.fmt" + }, + "hash": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.hash" + }, + "index": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.index" + }, + "into_bytes": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.len" + }, + "partial_cmp": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.partial_cmp" + }, + "slice_ref": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref" + } + } + }, + "Repr": { + "Exported": false, + "TypeKind": "enum", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr", + "File": "lib.rs", + "Line": 571, + "StartOffset": 15351, + "EndOffset": 15539, + "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc),\n ArcString(Arc),\n StaticStr(&'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.as_str" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes" + }, + "into_bytes": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.len" + }, + "slice_ref": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "Repr.slice_ref" + } + } } + }, + "Vars": { + "INLINE_CAP": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "INLINE_CAP", + "File": "lib.rs", + "Line": 569, + "StartOffset": 15320, + "EndOffset": 15349, + "Content": "const INLINE_CAP: usize = 24;" + } + } + } + }, + "Dependencies": {}, + "Files": { + "lib.rs": { + "Path": "lib.rs" } + } }, - "Graph": { - "ahash@0.8.11?ahash::hash_map#AHashMap": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 13 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 6 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.get": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.insert": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 5 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.into_iter": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 13 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap::with_capacity": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 15 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - } - ] - }, - "faststr@0.2.31?faststr#FastStr": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - } - ] - }, - "faststr@0.2.31?faststr#FastStr::from_string": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 24 - } - ] - }, - "faststr@0.2.31?faststr#FastStr::from_vec_u8_unchecked": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 24 - } - ] - }, - "faststr@0.2.31?faststr#FastStr::new": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 3 - } - ] - }, - "faststr@0.2.31?faststr#FastStr::new_u8_slice_unchecked": { - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 18 - } - ] - }, - "metainfo?metainfo#Backward.get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.iter_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.iter_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.strip_http_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Backward.strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#DEFAULT_MAP_SIZE": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - } - ] - }, - "metainfo?metainfo#Forward.get_all_persistents": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.get_all_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.get_all_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.get_all_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.iter_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.iter_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_persistent", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_upstream", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_persistent", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#Forward.strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_upstream", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#MetaInfo": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 32 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 34 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 38 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.fmt" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents" - } - ] - }, - "metainfo?metainfo#MetaInfo.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 15 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.contains_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.contains_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.derive": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 23 - } - ] - }, - "metainfo?metainfo#MetaInfo.ensure_backward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.ensure_forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "Line": 13 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 26 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 6 - } - ] - }, - "metainfo?metainfo#MetaInfo.fmt": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.fmt", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.get_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_backword_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 15 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_persistents_and_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 21 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_persistent_prefix", - "Line": 22 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 29 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "Line": 4 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.get_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ] - }, - "metainfo?metainfo#MetaInfo.insert_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ] - }, - "metainfo?metainfo#MetaInfo.insert_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ] - }, - "metainfo?metainfo#MetaInfo.iter_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_backword_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix", - "Line": 3 - } - ] - }, - "metainfo?metainfo#MetaInfo.iter_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_persistents_and_transients_with_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_iter", - "Line": 13 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_persistent_prefix", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", - "Line": 4 - } - ] - }, - "metainfo?metainfo#MetaInfo.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.remove_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo.remove_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - ] - }, - "metainfo?metainfo#MetaInfo::from_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 23 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_BACKWARD": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo#del_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl" - } - ] - }, - "metainfo?metainfo#get_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_backword_transients_with_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#get_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_persistents_and_transients_with_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#get_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl" - } - ] - }, - "metainfo?metainfo#iter_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_backword_transients_with_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#iter_all_persistents_and_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "iter_all_persistents_and_transients_with_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#set_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream", - "Line": 7 - } - ] - }, - "metainfo?metainfo#strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_persistent", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Line": 1 - } - ] - }, - "metainfo?metainfo#strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_http_prefix_and_set_upstream", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Line": 1 - } - ] - }, - "metainfo?metainfo#strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_persistent", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Line": 1 - } - ] - }, - "metainfo?metainfo#strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_upstream", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Line": 1 - } - ] - }, - "metainfo?metainfo::backward#Backward": { - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 5 - } - ] - }, - "metainfo?metainfo::convert#Converter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Line": 7 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Line": 7 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Line": 7 - } - ] - }, - "metainfo?metainfo::convert#Converter.remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Line": 7 - } - ] - }, - "metainfo?metainfo::convert#FASTSTR_INLINE_SIZE": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "Type": "VAR", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 3 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_http_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_http_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_upstream", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_http_prefix_and_set_persistent", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_http_prefix_and_set_backward_downstream", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format" - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.add_prefix_and_to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "Line": 24 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.remove_prefix_and_to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 5 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_http_format_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 5 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_rpc_format_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - ] - }, - "metainfo?metainfo::convert#RpcConverter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients_with_rpc_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_upstream", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.iter_backward_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.strip_rpc_prefix_and_set_persistent", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix" - } - ] - }, - "metainfo?metainfo::convert#RpcConverter.add_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 24 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "FASTSTR_INLINE_SIZE", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_transient_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_backward_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.add_persistent_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#RpcConverter.remove_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr::new", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_transient_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_persistent_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter.remove_backward_prefix", - "Line": 2 - } - ] - }, - "metainfo?metainfo::convert#add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_persistent_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 22 - } - ] - }, - "metainfo?metainfo::convert#add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 29 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 34 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 12 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 6 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.entry": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 19 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.get": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.get_mut": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 5 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.is_empty": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.iter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.len": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 6 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap::with_capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - } - ] - }, - "metainfo?metainfo::forward#Forward": { - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 5 - } - ] - }, - "metainfo?metainfo::kv#DEFAULT_CAPACITY": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "DEFAULT_CAPACITY", - "Type": "VAR" - }, - "metainfo?metainfo::kv#Node": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.31", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 38 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend" - } - ] - }, - "metainfo?metainfo::kv#Node.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 15 - } - ] - }, - "metainfo?metainfo::kv#Node.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.extend", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 26 - } - ] - }, - "metainfo?metainfo::kv#del_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl" - } - ] - }, - "metainfo?metainfo::kv#get_all_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_backword_transients_with_prefix", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_transients", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_transients", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_upstreams", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward.get_all_backward_downstreams", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward.get_all_persistents", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl" - } - ] - }, - "metainfo?metainfo::kv#get_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl" - } - ] - }, - "metainfo?metainfo::kv#set_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "Type": "FUNC" - }, - "metainfo?metainfo::type_map#AnyObject": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - } - ] - }, - "metainfo?metainfo::type_map#Entry": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key" - } - ] - }, - "metainfo?metainfo::type_map#Entry.and_modify": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "and_modify", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 5 - } - ] - }, - "metainfo?metainfo::type_map#Entry.or_default": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "or_default", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - ] - }, - "metainfo?metainfo::type_map#Entry.or_insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - ] - }, - "metainfo?metainfo::type_map#Entry.or_insert_with": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 6 - } - ] - }, - "metainfo?metainfo::type_map#Entry.or_insert_with_key": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 32 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear" - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 6 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 6 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.entry": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 7 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.get": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.get_mut": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 5 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.is_empty": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.iter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.len": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ] - }, - "metainfo?metainfo::type_map#TypeMap.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap::with_capacity": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - } - ] - }, - "metainfo?metainfo::type_map#and_modify": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "and_modify", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 1 - } - ] - }, - "metainfo?metainfo::type_map#or_default": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "or_default", - "Type": "UNKNOWN", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 2 - } - ] - }, - "rustc-hash@2.1.1?rustc-hash::random_state#FxHashMapRand": { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - } - ] - }, - "rustc-hash@2.1.1?rustc-hash::random_state#FxRandomState::default": { - "ModPath": "rustc-hash@2.1.1", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::default", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - } - ] - }, - "std?std::collections::hash::map#Entry": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 1 - } - ] - }, - "std?std::collections::hash::map#Iter": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "Type": "TYPE", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 1 - } - ] - }, - "std?std::collections::hash::map#and_modify": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 6 - } - ] - }, - "std?std::collections::hash::map#capacity": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "capacity", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#clear": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#contains_key": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#entry": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 3 - } - ] - }, - "std?std::collections::hash::map#extend": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#get": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - } - ] - }, - "std?std::collections::hash::map#get_mut": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 - } - ] - }, - "std?std::collections::hash::map#insert": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#is_empty": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "is_empty", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#iter": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 21 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#len": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#or_insert_with": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - } - ] - }, - "std?std::collections::hash::map#or_insert_with_key": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 5 - } - ] - }, - "std?std::collections::hash::map#remove": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 - } - ] - }, - "std?std::collections::hash::map#with_capacity_and_hasher": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "with_capacity_and_hasher", - "Type": "FUNC", - "References": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - } - ] + "metainfo": { + "Language": "rust", + "Version": "", + "Name": "metainfo", + "Dir": "src", + "Packages": { + "metainfo": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo", + "Functions": { + "Backward.get_all_backward_downstreams": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16325, + "EndOffset": 16539, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_downstreams(&self) -> Option<&AHashMap> {\n match self.backward_node.as_ref() {\n Some(node) => node.get_all_stales(),\n None => None,\n }\n }\n}", + "Signature": "fn get_all_backward_downstreams(&self) -> Option<&AHashMap> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16375, + "EndOffset": 16383 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16384, + "EndOffset": 16391 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 543, + "StartOffset": 16480, + "EndOffset": 16494 + } + ] + }, + "Backward.get_all_backward_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients", + "File": "src/lib.rs", + "Line": 534, + "StartOffset": 16102, + "EndOffset": 16319, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients(&self) -> Option<&AHashMap> {\n match self.backward_node.as_ref() {\n Some(node) => node.get_all_transients(),\n None => None,\n }\n }\n}", + "Signature": "fn get_all_backward_transients(&self) -> Option<&AHashMap> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 534, + "StartOffset": 16151, + "EndOffset": 16159 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 534, + "StartOffset": 16160, + "EndOffset": 16167 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 536, + "StartOffset": 16256, + "EndOffset": 16274 + } + ] + }, + "Backward.get_all_backward_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 552, + "StartOffset": 16717, + "EndOffset": 16885, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients_with_http_prefix(&self) -> Option> {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", + "Signature": "fn get_all_backward_transients_with_http_prefix(&self) -> Option> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 552, + "StartOffset": 16782, + "EndOffset": 16790 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 552, + "StartOffset": 16791, + "EndOffset": 16798 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 553, + "StartOffset": 16825, + "EndOffset": 16864 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 553, + "StartOffset": 16865, + "EndOffset": 16878 + } + ] + }, + "Backward.get_all_backward_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 548, + "StartOffset": 16545, + "EndOffset": 16711, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn get_all_backward_transients_with_rpc_prefix(&self) -> Option> {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", + "Signature": "fn get_all_backward_transients_with_rpc_prefix(&self) -> Option> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 548, + "StartOffset": 16609, + "EndOffset": 16617 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 548, + "StartOffset": 16618, + "EndOffset": 16625 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 549, + "StartOffset": 16652, + "EndOffset": 16691 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 549, + "StartOffset": 16692, + "EndOffset": 16704 + } + ] + }, + "Backward.iter_backward_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 562, + "StartOffset": 17083, + "EndOffset": 17271, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_backword_transients_with_prefix(HttpConverter)\n }\n}", + "Signature": "fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 564, + "StartOffset": 17175, + "EndOffset": 17182 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17210, + "EndOffset": 17250 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17251, + "EndOffset": 17264 + } + ] + }, + "Backward.iter_backward_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 556, + "StartOffset": 16891, + "EndOffset": 17077, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn iter_backward_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_backword_transients_with_prefix(RpcConverter)\n }\n}", + "Signature": "fn iter_backward_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 558, + "StartOffset": 16982, + "EndOffset": 16989 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 559, + "StartOffset": 17017, + "EndOffset": 17057 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 559, + "StartOffset": 17058, + "EndOffset": 17070 + } + ] + }, + "Backward.strip_http_prefix_and_set_backward_downstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 579, + "StartOffset": 17597, + "EndOffset": 17913, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_backward_prefix(key) {\n self.set_backward_downstream(key, value);\n }\n }\n}", + "Signature": "fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 586, + "StartOffset": 17861, + "EndOffset": 17884 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 585, + "StartOffset": 17814, + "EndOffset": 17836 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 579, + "StartOffset": 17669, + "EndOffset": 17676 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 585, + "StartOffset": 17800, + "EndOffset": 17813 + } + ] + }, + "Backward.strip_rpc_prefix_and_set_backward_downstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 568, + "StartOffset": 17277, + "EndOffset": 17591, + "Content": "impl backward::Backward for MetaInfo {\n get_impl!(backward_transient, backward, transient);\n get_impl!(backward_downstream, backward, stale);\n\n set_impl!(backward_transient, backward, transient);\n set_impl!(backward_downstream, backward, stale);\n\n del_impl!(backward_transient, backward, transient);\n del_impl!(backward_downstream, backward, stale);\n\n fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_backward_prefix(key) {\n self.set_backward_downstream(key, value);\n }\n }\n}", + "Signature": "fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 575, + "StartOffset": 17539, + "EndOffset": 17562 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 574, + "StartOffset": 17492, + "EndOffset": 17514 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 568, + "StartOffset": 17348, + "EndOffset": 17355 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 574, + "StartOffset": 17479, + "EndOffset": 17491 + } + ] + }, + "Forward.get_all_persistents": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents", + "File": "src/lib.rs", + "Line": 423, + "StartOffset": 12913, + "EndOffset": 13136, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_persistents(),\n None => None,\n }\n }\n}", + "Signature": "#[inline]\n fn get_all_persistents(&self) -> Option<&AHashMap> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 424, + "StartOffset": 12968, + "EndOffset": 12976 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 424, + "StartOffset": 12977, + "EndOffset": 12984 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 426, + "StartOffset": 13072, + "EndOffset": 13091 + } + ] + }, + "Forward.get_all_persistents_and_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 454, + "StartOffset": 13806, + "EndOffset": 14017, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option> {\n self.get_all_persistents_and_transients_with_prefix(HttpConverter)\n }\n}", + "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 457, + "StartOffset": 13907, + "EndOffset": 13915 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 457, + "StartOffset": 13916, + "EndOffset": 13923 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 458, + "StartOffset": 13950, + "EndOffset": 13996 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 458, + "StartOffset": 13997, + "EndOffset": 14010 + } + ] + }, + "Forward.get_all_persistents_and_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 447, + "StartOffset": 13591, + "EndOffset": 13800, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option> {\n self.get_all_persistents_and_transients_with_prefix(RpcConverter)\n }\n}", + "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 450, + "StartOffset": 13691, + "EndOffset": 13699 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 450, + "StartOffset": 13700, + "EndOffset": 13707 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 451, + "StartOffset": 13734, + "EndOffset": 13780 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 451, + "StartOffset": 13781, + "EndOffset": 13793 + } + ] + }, + "Forward.get_all_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients", + "File": "src/lib.rs", + "Line": 431, + "StartOffset": 13142, + "EndOffset": 13363, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_transients(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_transients(),\n None => None,\n }\n }\n}", + "Signature": "#[inline]\n fn get_all_transients(&self) -> Option<&AHashMap> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 432, + "StartOffset": 13196, + "EndOffset": 13204 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 432, + "StartOffset": 13205, + "EndOffset": 13212 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 434, + "StartOffset": 13300, + "EndOffset": 13318 + } + ] + }, + "Forward.get_all_upstreams": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13369, + "EndOffset": 13585, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn get_all_upstreams(&self) -> Option<&AHashMap> {\n match self.forward_node.as_ref() {\n Some(node) => node.get_all_stales(),\n None => None,\n }\n }\n}", + "Signature": "#[inline]\n fn get_all_upstreams(&self) -> Option<&AHashMap> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 440, + "StartOffset": 13422, + "EndOffset": 13430 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 440, + "StartOffset": 13431, + "EndOffset": 13438 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 442, + "StartOffset": 13526, + "EndOffset": 13540 + } + ] + }, + "Forward.iter_persistents_and_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 468, + "StartOffset": 14243, + "EndOffset": 14459, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_persistents_and_transients_with_prefix(HttpConverter)\n }\n}", + "Signature": "#[inline]\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 471, + "StartOffset": 14356, + "EndOffset": 14363 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 472, + "StartOffset": 14391, + "EndOffset": 14438 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 472, + "StartOffset": 14439, + "EndOffset": 14452 + } + ] + }, + "Forward.iter_persistents_and_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 461, + "StartOffset": 14023, + "EndOffset": 14237, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n self.iter_all_persistents_and_transients_with_prefix(RpcConverter)\n }\n}", + "Signature": "#[inline]\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 464, + "StartOffset": 14135, + "EndOffset": 14142 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 465, + "StartOffset": 14170, + "EndOffset": 14217 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 465, + "StartOffset": 14218, + "EndOffset": 14230 + } + ] + }, + "Forward.strip_http_prefix_and_set_persistent": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 499, + "StartOffset": 15096, + "EndOffset": 15410, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_http_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_persistent_prefix(key) {\n self.set_persistent(key, value);\n }\n }\n}", + "Signature": "#[inline]\n fn strip_http_prefix_and_set_persistent, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 500, + "StartOffset": 15113, + "EndOffset": 15149 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 500, + "StartOffset": 15173, + "EndOffset": 15180 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 507, + "StartOffset": 15367, + "EndOffset": 15381 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 506, + "StartOffset": 15318, + "EndOffset": 15342 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 500, + "StartOffset": 15173, + "EndOffset": 15180 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 506, + "StartOffset": 15304, + "EndOffset": 15317 + } + ] + }, + "Forward.strip_http_prefix_and_set_upstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 511, + "StartOffset": 15416, + "EndOffset": 15725, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_http_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = HttpConverter.remove_transient_prefix(key) {\n self.set_upstream(key, value);\n }\n }\n}", + "Signature": "#[inline]\n fn strip_http_prefix_and_set_upstream, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 512, + "StartOffset": 15433, + "EndOffset": 15467 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 512, + "StartOffset": 15491, + "EndOffset": 15498 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 519, + "StartOffset": 15684, + "EndOffset": 15696 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 518, + "StartOffset": 15636, + "EndOffset": 15659 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 512, + "StartOffset": 15491, + "EndOffset": 15498 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 518, + "StartOffset": 15622, + "EndOffset": 15635 + } + ] + }, + "Forward.strip_rpc_prefix_and_set_persistent": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 475, + "StartOffset": 14465, + "EndOffset": 14777, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_persistent_prefix(key) {\n self.set_persistent(key, value);\n }\n }\n}", + "Signature": "#[inline]\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 476, + "StartOffset": 14482, + "EndOffset": 14517 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 476, + "StartOffset": 14541, + "EndOffset": 14548 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 483, + "StartOffset": 14734, + "EndOffset": 14748 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 482, + "StartOffset": 14685, + "EndOffset": 14709 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 476, + "StartOffset": 14541, + "EndOffset": 14548 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 482, + "StartOffset": 14672, + "EndOffset": 14684 + } + ] + }, + "Forward.strip_rpc_prefix_and_set_upstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 487, + "StartOffset": 14783, + "EndOffset": 15090, + "Content": "impl forward::Forward for MetaInfo {\n get_impl!(persistent, forward, persistent);\n get_impl!(transient, forward, transient);\n get_impl!(upstream, forward, stale);\n\n set_impl!(persistent, forward, persistent);\n set_impl!(transient, forward, transient);\n set_impl!(upstream, forward, stale);\n\n del_impl!(persistent, forward, persistent);\n del_impl!(transient, forward, transient);\n del_impl!(upstream, forward, stale);\n\n #[inline]\n #[inline]\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n let key = key.as_ref();\n if let Some(key) = RpcConverter.remove_transient_prefix(key) {\n self.set_upstream(key, value);\n }\n }\n}", + "Signature": "#[inline]\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 488, + "StartOffset": 14800, + "EndOffset": 14833 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 488, + "StartOffset": 14857, + "EndOffset": 14864 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 495, + "StartOffset": 15049, + "EndOffset": 15061 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 494, + "StartOffset": 15001, + "EndOffset": 15024 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 488, + "StartOffset": 14857, + "EndOffset": 14864 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 494, + "StartOffset": 14988, + "EndOffset": 15000 + } + ] + }, + "MetaInfo.clear": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "File": "src/lib.rs", + "Line": 288, + "StartOffset": 8875, + "EndOffset": 9538, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Clear the `MetaInfo` of all inserted MetaInfo.\n /// This will not clear the parent.\n #[inline]\n pub fn clear(&mut self) {\n self.parent = None;\n if let Some(tmap) = self.tmap.as_mut() {\n tmap.clear()\n }\n if let Some(smap) = self.smap.as_mut() {\n smap.clear()\n }\n if let Some(faststr_tmap) = self.faststr_tmap.as_mut() {\n faststr_tmap.clear()\n }\n if let Some(forward_node) = self.forward_node.as_mut() {\n forward_node.clear()\n }\n if let Some(backward_node) = self.backward_node.as_mut() {\n backward_node.clear()\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "File": "src/lib.rs", + "Line": 294, + "StartOffset": 9104, + "EndOffset": 9109 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/lib.rs", + "Line": 297, + "StartOffset": 9188, + "EndOffset": 9193 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "File": "src/lib.rs", + "Line": 300, + "StartOffset": 9296, + "EndOffset": 9301 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "File": "src/lib.rs", + "Line": 303, + "StartOffset": 9404, + "EndOffset": 9409 + } + ] + }, + "MetaInfo.contains": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "File": "src/lib.rs", + "Line": 176, + "StartOffset": 5363, + "EndOffset": 5778, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains entry\n #[inline]\n pub fn contains(&self) -> bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::())\n .unwrap_or(false)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "File": "src/lib.rs", + "Line": 182, + "StartOffset": 5550, + "EndOffset": 5558 + } + ] + }, + "MetaInfo.contains_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "File": "src/lib.rs", + "Line": 193, + "StartOffset": 5784, + "EndOffset": 6259, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains the given Faststr newtype\n #[inline]\n pub fn contains_faststr(&self) -> bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::())\n .unwrap_or(false)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "File": "src/lib.rs", + "Line": 199, + "StartOffset": 6023, + "EndOffset": 6031 + } + ] + }, + "MetaInfo.contains_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "File": "src/lib.rs", + "Line": 210, + "StartOffset": 6265, + "EndOffset": 6729, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains the given string k-v\n #[inline]\n pub fn contains_string>(&self, key: K) -> bool {\n if self\n .smap\n .as_ref()\n .map(|smap| smap.contains_key(key.as_ref()))\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_string(key))\n .unwrap_or(false)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/lib.rs", + "Line": 216, + "StartOffset": 6485, + "EndOffset": 6497 + } + ] + }, + "MetaInfo.derive": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "File": "src/lib.rs", + "Line": 106, + "StartOffset": 2976, + "EndOffset": 4134, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Derives the current [`MetaInfo`], returns two new equivalent `Metainfo`s.\n ///\n /// When the info is not found in the current scope, `MetaInfo` will try to get from parent.\n ///\n /// This is the recommended way.\n #[inline]\n pub fn derive(mut self) -> (MetaInfo, MetaInfo) {\n if self.tmap.is_none() && self.smap.is_none() && self.faststr_tmap.is_none() {\n // we can use the same parent as self to make the tree small\n let new = MetaInfo {\n parent: self.parent.clone(),\n tmap: None,\n smap: None,\n faststr_tmap: None,\n forward_node: self.forward_node.clone(),\n backward_node: self.backward_node.clone(),\n };\n (self, new)\n } else {\n let forward_node = self.forward_node.take();\n let backward_node = self.backward_node.take();\n let mi = Arc::new(self);\n (\n MetaInfo::from_node(mi.clone(), forward_node.clone(), backward_node.clone()),\n MetaInfo::from_node(mi, forward_node, backward_node),\n )\n }\n }\n}", + "Signature": "/// Derives the current [`MetaInfo`]", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 106, + "StartOffset": 3000, + "EndOffset": 3012 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 129, + "StartOffset": 3967, + "EndOffset": 3976 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 112, + "StartOffset": 3250, + "EndOffset": 3258 + } + ] + }, + "MetaInfo.ensure_backward_node": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "File": "src/lib.rs", + "Line": 355, + "StartOffset": 10983, + "EndOffset": 11132, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(&mut self) {\n if self.backward_node.is_none() {\n self.backward_node = Some(Node::default())\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 357, + "StartOffset": 11100, + "EndOffset": 11104 + } + ] + }, + "MetaInfo.ensure_forward_node": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "File": "src/lib.rs", + "Line": 349, + "StartOffset": 10831, + "EndOffset": 10977, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(&mut self) {\n if self.forward_node.is_none() {\n self.forward_node = Some(Node::default())\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 351, + "StartOffset": 10945, + "EndOffset": 10949 + } + ] + }, + "MetaInfo.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "File": "src/lib.rs", + "Line": 310, + "StartOffset": 9544, + "EndOffset": 10825, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Extends self with the items from another `MetaInfo`.\n /// Only extend the items in the current scope.\n #[inline]\n pub fn extend(&mut self, other: MetaInfo) {\n if let Some(tmap) = other.tmap {\n self.tmap\n .get_or_insert_with(|| TypeMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(tmap);\n }\n\n if let Some(smap) = other.smap {\n self.smap\n .get_or_insert_with(|| AHashMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(smap);\n }\n\n if let Some(faststr_tmap) = other.faststr_tmap {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .extend(faststr_tmap);\n }\n\n if let Some(node) = other.forward_node {\n if self.forward_node.is_none() {\n self.forward_node = Some(node);\n } else {\n self.forward_node.as_mut().unwrap().extend(node);\n }\n }\n\n if let Some(node) = other.backward_node {\n if self.backward_node.is_none() {\n self.backward_node = Some(node);\n } else {\n self.backward_node.as_mut().unwrap().extend(node);\n }\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9826, + "EndOffset": 9839 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 322, + "StartOffset": 10013, + "EndOffset": 10026 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/lib.rs", + "Line": 328, + "StartOffset": 10226, + "EndOffset": 10239 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "File": "src/lib.rs", + "Line": 317, + "StartOffset": 9876, + "EndOffset": 9882 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "File": "src/lib.rs", + "Line": 323, + "StartOffset": 10063, + "EndOffset": 10069 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "File": "src/lib.rs", + "Line": 329, + "StartOffset": 10276, + "EndOffset": 10282 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/lib.rs", + "Line": 336, + "StartOffset": 10524, + "EndOffset": 10530 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 313, + "StartOffset": 9703, + "EndOffset": 9711 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9817, + "EndOffset": 9824 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 322, + "StartOffset": 10003, + "EndOffset": 10011 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 328, + "StartOffset": 10214, + "EndOffset": 10224 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9840, + "EndOffset": 9856 + } + ] + }, + "MetaInfo.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.fmt", + "File": "src/lib.rs", + "Line": 704, + "StartOffset": 21541, + "EndOffset": 21649, + "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", + "Signature": "fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + } + }, + "MetaInfo.get": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 227, + "StartOffset": 6735, + "EndOffset": 7066, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a type previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get(&self) -> Option<&T> {\n self.tmap.as_ref().and_then(|tmap| tmap.get()).or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get::())\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "File": "src/lib.rs", + "Line": 230, + "StartOffset": 6917, + "EndOffset": 6920 + } + ] + }, + "MetaInfo.get_all_backword_transients_with_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 654, + "StartOffset": 20125, + "EndOffset": 20978, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) => {\n if let Some(t) = node.get_all_transients() {\n let new_cap = t.len();\n if new_cap == 0 {\n return None;\n }\n let mut map = AHashMap::with_capacity(new_cap);\n map.extend(\n t.iter()\n .map(|(k, v)| (converter.add_transient_prefix(k), v.clone())),\n );\n Some(map)\n } else {\n None\n }\n }\n None => None,\n }\n }\n}", + "Signature": "#[inline]\n fn get_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 655, + "StartOffset": 20142, + "EndOffset": 20181 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 658, + "StartOffset": 20239, + "EndOffset": 20247 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 658, + "StartOffset": 20248, + "EndOffset": 20255 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 664, + "StartOffset": 20415, + "EndOffset": 20433 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 669, + "StartOffset": 20622, + "EndOffset": 20635 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 665, + "StartOffset": 20474, + "EndOffset": 20477 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "File": "src/lib.rs", + "Line": 670, + "StartOffset": 20670, + "EndOffset": 20676 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 671, + "StartOffset": 20704, + "EndOffset": 20708 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 672, + "StartOffset": 20764, + "EndOffset": 20784 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 660, + "StartOffset": 20288, + "EndOffset": 20297 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 669, + "StartOffset": 20612, + "EndOffset": 20620 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 672, + "StartOffset": 20791, + "EndOffset": 20796 + } + ] + }, + "MetaInfo.get_all_persistents_and_transients_with_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 592, + "StartOffset": 17937, + "EndOffset": 19267, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) => {\n let persistents = node.get_all_persistents();\n let transients = node.get_all_transients();\n let new_cap = persistents.map(|p| p.len()).unwrap_or(0)\n + transients.map(|t| t.len()).unwrap_or(0);\n if new_cap == 0 {\n return None;\n }\n let mut map = AHashMap::with_capacity(new_cap);\n if let Some(persistents) = persistents {\n map.extend(\n persistents\n .iter()\n .map(|(k, v)| (converter.add_persistent_prefix(k), v.clone())),\n );\n }\n if let Some(transients) = transients {\n map.extend(\n transients\n .iter()\n .map(|(k, v)| (converter.add_transient_prefix(k), v.clone())),\n );\n }\n Some(map)\n }\n None => None,\n }\n }\n}", + "Signature": "#[inline]\n fn get_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> Option>\n", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 593, + "StartOffset": 17954, + "EndOffset": 18000 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 596, + "StartOffset": 18058, + "EndOffset": 18066 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 596, + "StartOffset": 18067, + "EndOffset": 18074 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 602, + "StartOffset": 18234, + "EndOffset": 18253 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 609, + "StartOffset": 18578, + "EndOffset": 18591 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 604, + "StartOffset": 18369, + "EndOffset": 18372 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "File": "src/lib.rs", + "Line": 611, + "StartOffset": 18683, + "EndOffset": 18689 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 613, + "StartOffset": 18756, + "EndOffset": 18760 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_persistent_prefix", + "File": "src/lib.rs", + "Line": 614, + "StartOffset": 18816, + "EndOffset": 18837 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 621, + "StartOffset": 19107, + "EndOffset": 19127 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 598, + "StartOffset": 18107, + "EndOffset": 18116 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 609, + "StartOffset": 18568, + "EndOffset": 18576 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 614, + "StartOffset": 18844, + "EndOffset": 18849 + } + ] + }, + "MetaInfo.get_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "File": "src/lib.rs", + "Line": 244, + "StartOffset": 7325, + "EndOffset": 7786, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a faststr newtype previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get_faststr(&self) -> Option<&FastStr> {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: &FastStrMap| faststr_tmap.get::())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::())\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7595, + "EndOffset": 7598 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 246, + "StartOffset": 7473, + "EndOffset": 7480 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7570, + "EndOffset": 7580 + } + ] + }, + "MetaInfo.get_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "File": "src/lib.rs", + "Line": 266, + "StartOffset": 8120, + "EndOffset": 8553, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Get a reference to a string k-v previously inserted on this `MetaInfo`.\n #[inline]\n pub fn get_string>(&self, key: K) -> Option<&FastStr> {\n self.smap\n .as_ref()\n .and_then(|smap| smap.get(key.as_ref()))\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_string(key))\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "src/lib.rs", + "Line": 271, + "StartOffset": 8358, + "EndOffset": 8361 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 268, + "StartOffset": 8273, + "EndOffset": 8280 + } + ] + }, + "MetaInfo.insert": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 152, + "StartOffset": 4556, + "EndOffset": 4801, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a type into this `MetaInfo`.\n #[inline]\n pub fn insert(&mut self, val: T) {\n self.tmap\n .get_or_insert_with(|| TypeMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert(val);\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4737, + "EndOffset": 4750 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "File": "src/lib.rs", + "Line": 157, + "StartOffset": 4783, + "EndOffset": 4789 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4728, + "EndOffset": 4735 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4751, + "EndOffset": 4767 + } + ] + }, + "MetaInfo.insert_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "File": "src/lib.rs", + "Line": 160, + "StartOffset": 4807, + "EndOffset": 5093, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a faststr newtype into this `MetaInfo`.\n #[inline]\n pub fn insert_faststr(&mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::(val);\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 5024, + "EndOffset": 5037 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "File": "src/lib.rs", + "Line": 165, + "StartOffset": 5070, + "EndOffset": 5076 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 162, + "StartOffset": 4940, + "EndOffset": 4947 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 5012, + "EndOffset": 5022 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 5038, + "EndOffset": 5054 + } + ] + }, + "MetaInfo.insert_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "File": "src/lib.rs", + "Line": 168, + "StartOffset": 5099, + "EndOffset": 5357, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a string k-v into this `MetaInfo`.\n #[inline]\n pub fn insert_string(&mut self, key: FastStr, val: FastStr) {\n self.smap\n .get_or_insert_with(|| AHashMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert(key, val);\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5288, + "EndOffset": 5301 + } + ], + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "File": "src/lib.rs", + "Line": 173, + "StartOffset": 5334, + "EndOffset": 5340 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 170, + "StartOffset": 5200, + "EndOffset": 5207 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5278, + "EndOffset": 5286 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5302, + "EndOffset": 5318 + } + ] + }, + "MetaInfo.iter_all_backword_transients_with_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 683, + "StartOffset": 20984, + "EndOffset": 21502, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn iter_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n where\n C: Converter + 'static,\n {\n self.backward_node\n .as_ref()\n .into_iter()\n .flat_map(|node| {\n node.get_all_transients()\n .into_iter()\n .flat_map(|t| t.into_iter())\n })\n .map(move |(k, v)| (converter.add_transient_prefix(k), v))\n }\n}", + "Signature": "#[inline]\n fn iter_all_backword_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 684, + "StartOffset": 21001, + "EndOffset": 21041 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 687, + "StartOffset": 21114, + "EndOffset": 21121 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 695, + "StartOffset": 21308, + "EndOffset": 21326 + } + ], + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "File": "src/lib.rs", + "Line": 697, + "StartOffset": 21398, + "EndOffset": 21407 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 699, + "StartOffset": 21468, + "EndOffset": 21488 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 689, + "StartOffset": 21155, + "EndOffset": 21164 + } + ] + }, + "MetaInfo.iter_all_persistents_and_transients_with_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 630, + "StartOffset": 19273, + "EndOffset": 20119, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn iter_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n where\n C: Converter + Copy + 'static,\n {\n self.forward_node\n .as_ref()\n .into_iter()\n .flat_map(move |node| {\n let persistents = node.get_all_persistents().into_iter().flat_map(move |p| {\n p.into_iter()\n .map(move |(k, v)| (converter.add_persistent_prefix(k), v))\n });\n let transients = node.get_all_transients().into_iter().flat_map(move |t| {\n t.into_iter()\n .map(move |(k, v)| (converter.add_transient_prefix(k), v))\n });\n persistents.chain(transients)\n })\n }\n}", + "Signature": "#[inline]\n fn iter_all_persistents_and_transients_with_prefix(\n &self,\n converter: C,\n ) -> impl Iterator\n", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_persistents_and_transients_with_prefix", + "File": "src/lib.rs", + "Line": 631, + "StartOffset": 19290, + "EndOffset": 19337 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 634, + "StartOffset": 19410, + "EndOffset": 19417 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 642, + "StartOffset": 19633, + "EndOffset": 19652 + } + ], + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "File": "src/lib.rs", + "Line": 643, + "StartOffset": 19709, + "EndOffset": 19718 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_persistent_prefix", + "File": "src/lib.rs", + "Line": 644, + "StartOffset": 19775, + "EndOffset": 19796 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 648, + "StartOffset": 20004, + "EndOffset": 20024 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 636, + "StartOffset": 19451, + "EndOffset": 19460 + } + ] + }, + "MetaInfo.remove": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 237, + "StartOffset": 7072, + "EndOffset": 7319, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a type from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "File": "src/lib.rs", + "Line": 241, + "StartOffset": 7299, + "EndOffset": 7305 + } + ] + }, + "MetaInfo.remove_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "File": "src/lib.rs", + "Line": 257, + "StartOffset": 7792, + "EndOffset": 8114, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a faststr newtype from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove_faststr(&mut self) -> Option {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "File": "src/lib.rs", + "Line": 263, + "StartOffset": 8094, + "EndOffset": 8100 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 260, + "StartOffset": 7985, + "EndOffset": 7992 + } + ] + }, + "MetaInfo.remove_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "File": "src/lib.rs", + "Line": 279, + "StartOffset": 8559, + "EndOffset": 8869, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Remove a string k-v from this `MetaInfo` and return it.\n /// Can only remove the type in the current scope.\n #[inline]\n pub fn remove_string>(&mut self, key: K) -> Option {\n self.smap\n .as_mut()\n .and_then(|smap| smap.remove(key.as_ref()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "File": "src/lib.rs", + "Line": 285, + "StartOffset": 8842, + "EndOffset": 8848 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 282, + "StartOffset": 8757, + "EndOffset": 8764 + } + ] + }, + "MetaInfo::from_node": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 135, + "StartOffset": 4140, + "EndOffset": 4550, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an `MetaInfo` with the parent and node given.\n fn from_node(\n parent: Arc,\n forward_node: Option,\n backward_node: Option,\n ) -> MetaInfo {\n MetaInfo {\n parent: Some(parent),\n tmap: None,\n smap: None,\n faststr_tmap: None,\n\n forward_node,\n backward_node,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 137, + "StartOffset": 4236, + "EndOffset": 4244 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 138, + "StartOffset": 4280, + "EndOffset": 4284 + } + ] + }, + "del_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "File": "src/lib.rs", + "Line": 395, + "StartOffset": 12044, + "EndOffset": 12462, + "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn []>(&mut self, key: K) -> Option {\n if let Some(node) = self.[<$node _node>].as_mut() {\n node.[](key)\n } else {\n None\n }\n }\n }\n };\n}", + "Signature": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "File": "src/lib.rs", + "Line": 395, + "StartOffset": 12057, + "EndOffset": 12065 + } + ] + }, + "get_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 362, + "StartOffset": 11136, + "EndOffset": 11535, + "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn []>(&self, key: K) -> Option {\n match self.[<$node _node>].as_ref() {\n Some(node) => node.[](key),\n None => None,\n }\n }\n }\n };\n}", + "Signature": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 362, + "StartOffset": 11149, + "EndOffset": 11157 + } + ] + }, + "set_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 376, + "StartOffset": 11537, + "EndOffset": 12042, + "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) => {\n paste! {\n #[inline]\n fn [], V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n self.[]();\n self.[<$node _node>]\n .as_mut()\n .unwrap()\n .[](key, value)\n }\n }\n };\n}", + "Signature": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 376, + "StartOffset": 11550, + "EndOffset": 11558 + } + ] + } + }, + "Types": { + "MetaInfo": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 37, + "StartOffset": 892, + "EndOffset": 2186, + "Content": "/// `MetaInfo` is used to passthrough information between components and even client-server.\n///\n/// It supports two types of info: typed map and string k-v.\n///\n/// It is designed to be tree-like, which means you can share a `MetaInfo` with multiple children.\n///\n/// Note: only the current scope is mutable.\n///\n/// Examples:\n/// ```rust\n/// use metainfo::MetaInfo;\n///\n/// fn test() {\n/// let mut m1 = MetaInfo::new();\n/// m1.insert::(2);\n/// assert_eq!(*m1.get::().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::().unwrap(), 2);\n///\n/// m2.insert::(4);\n/// assert_eq!(*m2.get::().unwrap(), 4);\n///\n/// m2.remove::();\n/// assert_eq!(*m2.get::().unwrap(), 2);\n/// }\n/// ```\n#[derive(Default)]\npub struct MetaInfo {\n /// Parent is read-only, if we can't find the specified key in the current,\n /// we search it in the parent scope.\n parent: Option>,\n tmap: Option,\n smap: Option>, // for str k-v\n faststr_tmap: Option, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option,\n backward_node: Option,\n}", + "SubStruct": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1882, + "EndOffset": 1889 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1909, + "EndOffset": 1917 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1918, + "EndOffset": 1925 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 71, + "StartOffset": 1978, + "EndOffset": 1988 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 75, + "StartOffset": 2141, + "EndOffset": 2145 + } + ], + "Methods": { + "clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear" + }, + "contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains" + }, + "contains_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr" + }, + "contains_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string" + }, + "derive": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive" + }, + "ensure_backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node" + }, + "ensure_forward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node" + }, + "extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend" + }, + "fmt": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.fmt" + }, + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get" + }, + "get_all_backward_downstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams" + }, + "get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients" + }, + "get_all_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix" + }, + "get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix" + }, + "get_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix" + }, + "get_all_persistents": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents" + }, + "get_all_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix" + }, + "get_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix" + }, + "get_all_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix" + }, + "get_all_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients" + }, + "get_all_upstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams" + }, + "get_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr" + }, + "get_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string" + }, + "insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert" + }, + "insert_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr" + }, + "insert_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string" + }, + "iter_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix" + }, + "iter_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix" + }, + "iter_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix" + }, + "iter_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix" + }, + "iter_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix" + }, + "iter_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix" + }, + "remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove" + }, + "remove_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr" + }, + "remove_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string" + }, + "strip_http_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream" + }, + "strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent" + }, + "strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream" + }, + "strip_rpc_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" + }, + "strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent" + }, + "strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream" + } + } + } + }, + "Vars": { + "DEFAULT_MAP_SIZE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 35, + "StartOffset": 855, + "EndOffset": 890, + "Content": "const DEFAULT_MAP_SIZE: usize = 10;" + }, + "HTTP_PREFIX_BACKWARD": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/lib.rs", + "Line": 33, + "StartOffset": 798, + "EndOffset": 853, + "Content": "pub const HTTP_PREFIX_BACKWARD: &str = \"rpc-backward-\";" + }, + "HTTP_PREFIX_PERSISTENT": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/lib.rs", + "Line": 31, + "StartOffset": 685, + "EndOffset": 741, + "Content": "pub const HTTP_PREFIX_PERSISTENT: &str = \"rpc-persist-\";" + }, + "HTTP_PREFIX_TRANSIENT": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/lib.rs", + "Line": 32, + "StartOffset": 742, + "EndOffset": 797, + "Content": "pub const HTTP_PREFIX_TRANSIENT: &str = \"rpc-transit-\";" + }, + "RPC_PREFIX_BACKWARD": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/lib.rs", + "Line": 30, + "StartOffset": 630, + "EndOffset": 684, + "Content": "pub const RPC_PREFIX_BACKWARD: &str = \"RPC_BACKWARD_\";" + }, + "RPC_PREFIX_PERSISTENT": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/lib.rs", + "Line": 26, + "StartOffset": 472, + "EndOffset": 574, + "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: &str = \"RPC_PERSIST_\";" + }, + "RPC_PREFIX_TRANSIENT": { + "IsExported": true, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/lib.rs", + "Line": 29, + "StartOffset": 575, + "EndOffset": 629, + "Content": "pub const RPC_PREFIX_TRANSIENT: &str = \"RPC_TRANSIT_\";" + } + } + }, + "metainfo::backward": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::backward", + "Functions": {}, + "Types": { + "Backward": { + "Exported": true, + "TypeKind": "interface", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "File": "src/backward.rs", + "Line": 4, + "StartOffset": 44, + "EndOffset": 1530, + "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient>(&self, key: K) -> Option;\n fn get_backward_downstream>(&self, key: K) -> Option;\n\n fn get_all_backward_transients(&self) -> Option<&AHashMap>;\n fn get_all_backward_downstreams(&self) -> Option<&AHashMap>;\n\n fn get_all_backward_transients_with_rpc_prefix(&self) -> Option>;\n fn get_all_backward_transients_with_http_prefix(&self) -> Option>;\n\n fn iter_backward_transients_with_rpc_prefix(&self)\n -> impl Iterator;\n fn iter_backward_transients_with_http_prefix(\n &self,\n ) -> impl Iterator;\n\n fn set_backward_transient, V: Into>(&mut self, key: K, value: V);\n fn set_backward_downstream, V: Into>(&mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient>(&mut self, key: K) -> Option;\n fn del_backward_downstream>(&mut self, key: K) -> Option;\n}", + "SubStruct": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 190, + "EndOffset": 197 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 335, + "EndOffset": 343 + } + ] + } + }, + "Vars": {} + }, + "metainfo::convert": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::convert", + "Functions": { + "Converter.add_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "File": "src/convert.rs", + "Line": 209, + "StartOffset": 6674, + "EndOffset": 6817, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "Signature": "#[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 210, + "StartOffset": 6732, + "EndOffset": 6739 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 211, + "StartOffset": 6755, + "EndOffset": 6784 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 211, + "StartOffset": 6785, + "EndOffset": 6805 + } + ] + }, + "Converter.add_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 199, + "StartOffset": 6370, + "EndOffset": 6517, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "Signature": "#[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 200, + "StartOffset": 6430, + "EndOffset": 6437 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 201, + "StartOffset": 6453, + "EndOffset": 6482 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 201, + "StartOffset": 6483, + "EndOffset": 6505 + } + ] + }, + "Converter.add_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "File": "src/convert.rs", + "Line": 204, + "StartOffset": 6523, + "EndOffset": 6668, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "Signature": "#[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 205, + "StartOffset": 6582, + "EndOffset": 6589 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 206, + "StartOffset": 6605, + "EndOffset": 6634 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 206, + "StartOffset": 6635, + "EndOffset": 6656 + } + ] + }, + "Converter.remove_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 224, + "StartOffset": 7153, + "EndOffset": 7309, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "Signature": "#[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 225, + "StartOffset": 7221, + "EndOffset": 7228 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 226, + "StartOffset": 7245, + "EndOffset": 7276 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 226, + "StartOffset": 7277, + "EndOffset": 7297 + } + ] + }, + "Converter.remove_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 214, + "StartOffset": 6823, + "EndOffset": 6983, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "Signature": "#[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 215, + "StartOffset": 6893, + "EndOffset": 6900 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 216, + "StartOffset": 6917, + "EndOffset": 6948 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 216, + "StartOffset": 6949, + "EndOffset": 6971 + } + ] + }, + "Converter.remove_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 219, + "StartOffset": 6989, + "EndOffset": 7147, + "Content": "impl Converter for HttpConverter {\n #[inline]\n #[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "Signature": "#[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 220, + "StartOffset": 7058, + "EndOffset": 7065 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 221, + "StartOffset": 7082, + "EndOffset": 7113 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 221, + "StartOffset": 7114, + "EndOffset": 7135 + } + ] + }, + "Converter.add_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "File": "src/convert.rs", + "Line": 72, + "StartOffset": 2244, + "EndOffset": 2367, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "Signature": "#[inline]\n fn add_backward_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 73, + "StartOffset": 2302, + "EndOffset": 2309 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 74, + "StartOffset": 2325, + "EndOffset": 2335 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 74, + "StartOffset": 2336, + "EndOffset": 2355 + } + ] + }, + "Converter.add_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 62, + "StartOffset": 1980, + "EndOffset": 2107, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", + "Signature": "#[inline]\n fn add_persistent_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 63, + "StartOffset": 2040, + "EndOffset": 2047 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 64, + "StartOffset": 2063, + "EndOffset": 2073 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 64, + "StartOffset": 2074, + "EndOffset": 2095 + } + ] + }, + "Converter.add_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "File": "src/convert.rs", + "Line": 67, + "StartOffset": 2113, + "EndOffset": 2238, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", + "Signature": "#[inline]\n fn add_transient_prefix(&self, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 68, + "StartOffset": 2172, + "EndOffset": 2179 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 69, + "StartOffset": 2195, + "EndOffset": 2205 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 69, + "StartOffset": 2206, + "EndOffset": 2226 + } + ] + }, + "Converter.remove_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 87, + "StartOffset": 2665, + "EndOffset": 2802, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "Signature": "#[inline]\n fn remove_backward_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 88, + "StartOffset": 2733, + "EndOffset": 2740 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 89, + "StartOffset": 2757, + "EndOffset": 2770 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 89, + "StartOffset": 2771, + "EndOffset": 2790 + } + ] + }, + "Converter.remove_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 77, + "StartOffset": 2373, + "EndOffset": 2514, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", + "Signature": "#[inline]\n fn remove_persistent_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 78, + "StartOffset": 2443, + "EndOffset": 2450 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 79, + "StartOffset": 2467, + "EndOffset": 2480 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 79, + "StartOffset": 2481, + "EndOffset": 2502 + } + ] + }, + "Converter.remove_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 82, + "StartOffset": 2520, + "EndOffset": 2659, + "Content": "impl Converter for RpcConverter {\n #[inline]\n #[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", + "Signature": "#[inline]\n fn remove_transient_prefix(&self, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 83, + "StartOffset": 2589, + "EndOffset": 2596 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 84, + "StartOffset": 2613, + "EndOffset": 2626 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 84, + "StartOffset": 2627, + "EndOffset": 2647 + } + ] + }, + "HttpConverter.add_prefix_and_to_http_format": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 151, + "StartOffset": 4562, + "EndOffset": 5596, + "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n #[inline]\n fn add_prefix_and_to_http_format(&self, prefix: &'static str, key: &str) -> FastStr {\n // checks if we can use the inline buffer to reduce heap allocations\n if prefix.len() + key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n unsafe {\n std::ptr::copy_nonoverlapping(\n prefix.as_ptr(),\n inline_buf.as_mut_ptr(),\n prefix.len(),\n );\n self.to_http_format(key, &mut inline_buf[prefix.len()..]);\n }\n return unsafe {\n FastStr::new_u8_slice_unchecked(&inline_buf[..prefix.len() + key.len()])\n };\n }\n\n let mut buf = Vec::with_capacity(prefix.len() + key.len());\n buf.extend_from_slice(prefix.as_bytes());\n unsafe {\n buf.set_len(prefix.len() + key.len());\n }\n self.to_http_format(key, &mut buf);\n unsafe { FastStr::from_vec_u8_unchecked(buf) }\n }\n}", + "Signature": "#[inline]\n fn add_prefix_and_to_http_format(&self, prefix: &'static str, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 152, + "StartOffset": 4652, + "EndOffset": 4659 + } + ], + "FunctionCalls": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "File": "src/convert.rs", + "Line": 165, + "StartOffset": 5206, + "EndOffset": 5228 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "File": "src/convert.rs", + "Line": 175, + "StartOffset": 5562, + "EndOffset": 5583 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 162, + "StartOffset": 5085, + "EndOffset": 5099 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 165, + "StartOffset": 5197, + "EndOffset": 5204 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "File": "src/convert.rs", + "Line": 154, + "StartOffset": 4778, + "EndOffset": 4797 + } + ] + }, + "HttpConverter.remove_prefix_and_to_rpc_format": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 178, + "StartOffset": 5602, + "EndOffset": 6327, + "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n #[inline]\n fn remove_prefix_and_to_rpc_format(&self, prefix: &'static str, key: &str) -> Option {\n let key = key.strip_prefix(prefix)?;\n\n // checks if we can use the inline buffer to reduce heap allocations\n if key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n self.to_rpc_format(key, &mut inline_buf);\n return Some(unsafe { FastStr::new_u8_slice_unchecked(&inline_buf[..key.len()]) });\n }\n\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_rpc_format(key, &mut buf);\n unsafe { Some(FastStr::from_vec_u8_unchecked(buf)) }\n }\n}", + "Signature": "#[inline]\n fn remove_prefix_and_to_rpc_format(&self, prefix: &'static str, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 179, + "StartOffset": 5701, + "EndOffset": 5708 + } + ], + "FunctionCalls": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "File": "src/convert.rs", + "Line": 186, + "StartOffset": 6038, + "EndOffset": 6060 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "File": "src/convert.rs", + "Line": 194, + "StartOffset": 6292, + "EndOffset": 6313 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 185, + "StartOffset": 5959, + "EndOffset": 5972 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 186, + "StartOffset": 6029, + "EndOffset": 6036 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "File": "src/convert.rs", + "Line": 183, + "StartOffset": 5859, + "EndOffset": 5878 + } + ] + }, + "HttpConverter.to_http_format": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 97, + "StartOffset": 2881, + "EndOffset": 3716, + "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n fn to_http_format(&self, key: &str, buf: &mut [u8]) {\n let mut l = 0;\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' => ch.to_ascii_lowercase(),\n '_' => '-',\n _ => ch,\n };\n let len = ch.len_utf8();\n match len {\n 1 => unsafe {\n *buf.get_unchecked_mut(l) = ch as u8;\n },\n _ => unsafe {\n std::ptr::copy_nonoverlapping(\n ch.encode_utf8(&mut [0; 4]).as_bytes().as_ptr(),\n buf.as_mut_ptr().add(l),\n len,\n );\n },\n }\n l += len;\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + } + }, + "HttpConverter.to_http_format_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 340, + "StartOffset": 10459, + "EndOffset": 10747, + "Content": "impl HttpConverter {\n fn to_http_format_string(&self, key: &str) -> String {\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_http_format(key, &mut buf);\n String::from_utf8(buf).unwrap()\n }\n}", + "Signature": "fn to_http_format_string(&self, key: &str) -> String {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 345, + "StartOffset": 10663, + "EndOffset": 10677 + } + ] + }, + "HttpConverter.to_rpc_format": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 124, + "StartOffset": 3722, + "EndOffset": 4556, + "Content": "impl HttpConverter {\n /// Convert `RPC_PERSIST_TEST_KEY` to `rpc-persist-test-key`\n #[inline]\n /// Convert `rpc-persist-test-key` to `RPC_PERSIST_TEST_KEY`\n #[inline]\n fn to_rpc_format(&self, key: &str, buf: &mut [u8]) {\n let mut l = 0;\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' => ch.to_ascii_uppercase(),\n '-' => '_',\n _ => ch,\n };\n let len = ch.len_utf8();\n match len {\n 1 => unsafe {\n *buf.get_unchecked_mut(l) = ch as u8;\n },\n _ => unsafe {\n std::ptr::copy_nonoverlapping(\n ch.encode_utf8(&mut [0; 4]).as_bytes().as_ptr(),\n buf.as_mut_ptr().add(l),\n len,\n );\n },\n }\n l += len;\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + } + }, + "HttpConverter.to_rpc_format_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 349, + "StartOffset": 10757, + "EndOffset": 11043, + "Content": "impl HttpConverter {\n fn to_rpc_format_string(&self, key: &str) -> String {\n let mut buf = Vec::with_capacity(key.len());\n unsafe {\n buf.set_len(key.len());\n }\n self.to_rpc_format(key, &mut buf);\n String::from_utf8(buf).unwrap()\n }\n}", + "Signature": "fn to_rpc_format_string(&self, key: &str) -> String {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 354, + "StartOffset": 10960, + "EndOffset": 10973 + } + ] + }, + "RpcConverter.add_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 27, + "StartOffset": 758, + "EndOffset": 1758, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(&self, prefix: &'static str, key: &str) -> FastStr {\n // checks if we can use the inline buffer to reduce heap allocations\n if prefix.len() + key.len() <= FASTSTR_INLINE_SIZE {\n let mut inline_buf = [0u8; FASTSTR_INLINE_SIZE];\n unsafe {\n std::ptr::copy_nonoverlapping(\n prefix.as_ptr(),\n inline_buf.as_mut_ptr(),\n prefix.len(),\n );\n std::ptr::copy_nonoverlapping(\n key.as_ptr(),\n inline_buf.as_mut_ptr().add(prefix.len()),\n key.len(),\n );\n }\n return unsafe {\n FastStr::new_u8_slice_unchecked(&inline_buf[..prefix.len() + key.len()])\n };\n }\n let mut res = String::with_capacity(prefix.len() + key.len());\n res.push_str(prefix);\n res.push_str(key);\n FastStr::from_string(res)\n }\n}", + "Signature": "#[inline]\n fn add_prefix(&self, prefix: &'static str, key: &str) -> FastStr {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 28, + "StartOffset": 829, + "EndOffset": 836 + } + ], + "FunctionCalls": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "File": "src/convert.rs", + "Line": 45, + "StartOffset": 1502, + "EndOffset": 1524 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 51, + "StartOffset": 1736, + "EndOffset": 1747 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 45, + "StartOffset": 1493, + "EndOffset": 1500 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "File": "src/convert.rs", + "Line": 30, + "StartOffset": 955, + "EndOffset": 974 + } + ] + }, + "RpcConverter.remove_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1764, + "EndOffset": 1938, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(&self, prefix: &'static str, key: &str) -> Option {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::new(key))\n }\n}", + "Signature": "#[inline]\n fn remove_prefix(&self, prefix: &'static str, key: &str) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 55, + "StartOffset": 1845, + "EndOffset": 1852 + } + ], + "FunctionCalls": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new", + "File": "src/convert.rs", + "Line": 57, + "StartOffset": 1923, + "EndOffset": 1926 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 57, + "StartOffset": 1914, + "EndOffset": 1921 + } + ] + } + }, + "Types": { + "Converter": { + "Exported": true, + "TypeKind": "interface", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/convert.rs", + "Line": 10, + "StartOffset": 214, + "EndOffset": 643, + "Content": "pub trait Converter {\n fn add_persistent_prefix(&self, key: &str) -> FastStr;\n fn add_transient_prefix(&self, key: &str) -> FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(&self, key: &str) -> FastStr;\n\n fn remove_persistent_prefix(&self, key: &str) -> Option;\n fn remove_transient_prefix(&self, key: &str) -> Option;\n fn remove_backward_prefix(&self, key: &str) -> Option;\n}", + "SubStruct": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 11, + "StartOffset": 286, + "EndOffset": 293 + } + ] + }, + "HttpConverter": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 93, + "StartOffset": 2806, + "EndOffset": 2854, + "Content": "#[derive(Clone, Copy)]\npub struct HttpConverter;", + "Methods": { + "add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix" + }, + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix" + }, + "add_prefix_and_to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format" + }, + "add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix" + }, + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix" + }, + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix" + }, + "remove_prefix_and_to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format" + }, + "remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix" + }, + "to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format" + }, + "to_http_format_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string" + }, + "to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format" + }, + "to_rpc_format_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string" + } + } + }, + "RpcConverter": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/convert.rs", + "Line": 23, + "StartOffset": 685, + "EndOffset": 732, + "Content": "#[derive(Clone, Copy)]\npub struct RpcConverter;", + "Methods": { + "add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix" + }, + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix" + }, + "add_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix" + }, + "add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix" + }, + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix" + }, + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix" + }, + "remove_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix" + }, + "remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix" + } + } + } + }, + "Vars": { + "FASTSTR_INLINE_SIZE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "File": "src/convert.rs", + "Line": 21, + "StartOffset": 645, + "EndOffset": 683, + "Content": "const FASTSTR_INLINE_SIZE: usize = 24;" + } + } + }, + "metainfo::faststr_map": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::faststr_map", + "Functions": { + "FastStrMap.capacity": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity", + "File": "src/faststr_map.rs", + "Line": 84, + "StartOffset": 1986, + "EndOffset": 2069, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(&self) -> usize {\n self.inner.capacity()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "src/faststr_map.rs", + "Line": 86, + "StartOffset": 2053, + "EndOffset": 2061 + } + ] + }, + "FastStrMap.clear": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "File": "src/faststr_map.rs", + "Line": 54, + "StartOffset": 1362, + "EndOffset": 1435, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n self.inner.clear();\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/faststr_map.rs", + "Line": 56, + "StartOffset": 1421, + "EndOffset": 1426 + } + ] + }, + "FastStrMap.contains": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "File": "src/faststr_map.rs", + "Line": 44, + "StartOffset": 1111, + "EndOffset": 1227, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains(&self) -> bool {\n self.inner.contains_key(&TypeId::of::())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/faststr_map.rs", + "Line": 46, + "StartOffset": 1189, + "EndOffset": 1201 + } + ] + }, + "FastStrMap.entry": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "File": "src/faststr_map.rs", + "Line": 69, + "StartOffset": 1682, + "EndOffset": 1813, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, FastStr> {\n self.inner.entry(TypeId::of::())\n }\n}", + "Signature": "#[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, FastStr> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1735, + "EndOffset": 1740 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1753, + "EndOffset": 1760 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/faststr_map.rs", + "Line": 71, + "StartOffset": 1783, + "EndOffset": 1788 + } + ] + }, + "FastStrMap.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "File": "src/faststr_map.rs", + "Line": 59, + "StartOffset": 1441, + "EndOffset": 1545, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", + "Signature": "#[inline]\n pub fn extend(&mut self, other: FastStrMap) {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Params": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 60, + "StartOffset": 1487, + "EndOffset": 1497 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/faststr_map.rs", + "Line": 61, + "StartOffset": 1520, + "EndOffset": 1526 + } + ] + }, + "FastStrMap.get": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "File": "src/faststr_map.rs", + "Line": 34, + "StartOffset": 855, + "EndOffset": 969, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get(&self) -> Option<&FastStr> {\n self.inner.get(&TypeId::of::())\n }\n}", + "Signature": "#[inline]\n pub fn get(&self) -> Option<&FastStr> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 910, + "EndOffset": 917 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/faststr_map.rs", + "Line": 36, + "StartOffset": 940, + "EndOffset": 943 + } + ] + }, + "FastStrMap.get_mut": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "File": "src/faststr_map.rs", + "Line": 39, + "StartOffset": 975, + "EndOffset": 1105, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut(&mut self) -> Option<&mut FastStr> {\n self.inner.get_mut(&TypeId::of::())\n }\n}", + "Signature": "#[inline]\n pub fn get_mut(&mut self) -> Option<&mut FastStr> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1042, + "EndOffset": 1049 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/faststr_map.rs", + "Line": 41, + "StartOffset": 1072, + "EndOffset": 1079 + } + ] + }, + "FastStrMap.insert": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "File": "src/faststr_map.rs", + "Line": 29, + "StartOffset": 716, + "EndOffset": 849, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert(&mut self, t: FastStr) {\n self.inner.insert(TypeId::of::(), t);\n }\n}", + "Signature": "#[inline]\n pub fn insert(&mut self, t: FastStr) {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Params": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 784, + "EndOffset": 791 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "src/faststr_map.rs", + "Line": 31, + "StartOffset": 814, + "EndOffset": 820 + } + ] + }, + "FastStrMap.is_empty": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", + "File": "src/faststr_map.rs", + "Line": 74, + "StartOffset": 1819, + "EndOffset": 1901, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(&self) -> bool {\n self.inner.is_empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "src/faststr_map.rs", + "Line": 76, + "StartOffset": 1885, + "EndOffset": 1893 + } + ] + }, + "FastStrMap.iter": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "File": "src/faststr_map.rs", + "Line": 64, + "StartOffset": 1551, + "EndOffset": 1676, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, FastStr> {\n self.inner.iter()\n }\n}", + "Signature": "#[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, FastStr> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "src/faststr_map.rs", + "Line": 65, + "StartOffset": 1617, + "EndOffset": 1621 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 65, + "StartOffset": 1634, + "EndOffset": 1641 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/faststr_map.rs", + "Line": 66, + "StartOffset": 1664, + "EndOffset": 1668 + } + ] + }, + "FastStrMap.len": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", + "File": "src/faststr_map.rs", + "Line": 79, + "StartOffset": 1907, + "EndOffset": 1980, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(&self) -> usize {\n self.inner.len()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/faststr_map.rs", + "Line": 81, + "StartOffset": 1969, + "EndOffset": 1972 + } + ] + }, + "FastStrMap.remove": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "File": "src/faststr_map.rs", + "Line": 49, + "StartOffset": 1233, + "EndOffset": 1356, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.inner.remove(&TypeId::of::())\n }\n}", + "Signature": "#[inline]\n pub fn remove(&mut self) -> Option {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1294, + "EndOffset": 1301 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/faststr_map.rs", + "Line": 51, + "StartOffset": 1324, + "EndOffset": 1330 + } + ] + }, + "FastStrMap::with_capacity": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/faststr_map.rs", + "Line": 22, + "StartOffset": 528, + "EndOffset": 710, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -> Self {\n Self {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 639, + "EndOffset": 663 + }, + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 683, + "EndOffset": 690 + } + ], + "Types": [ + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 624, + "EndOffset": 637 + } + ] + } + }, + "Types": { + "FastStrMap": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 6, + "StartOffset": 109, + "EndOffset": 386, + "Content": "/// This is an optimized version of TypeMap to FastStr that eliminates the need to Box the values.\n///\n/// This map is suitable for T that impls both From and Into.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand,\n}", + "SubStruct": [ + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 11, + "StartOffset": 353, + "EndOffset": 366 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 11, + "StartOffset": 375, + "EndOffset": 382 + } + ], + "Methods": { + "capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity" + }, + "clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear" + }, + "contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains" + }, + "entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry" + }, + "extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend" + }, + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get" + }, + "get_mut": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut" + }, + "insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert" + }, + "is_empty": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty" + }, + "iter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter" + }, + "len": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len" + }, + "remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove" + } + } + } + }, + "Vars": {} + }, + "metainfo::forward": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::forward", + "Functions": {}, + "Types": { + "Forward": { + "Exported": true, + "TypeKind": "interface", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "File": "src/forward.rs", + "Line": 5, + "StartOffset": 45, + "EndOffset": 2023, + "Content": "pub trait Forward {\n fn get_persistent>(&self, key: K) -> Option;\n fn get_transient>(&self, key: K) -> Option;\n fn get_upstream>(&self, key: K) -> Option;\n\n fn get_all_persistents(&self) -> Option<&AHashMap>;\n fn get_all_transients(&self) -> Option<&AHashMap>;\n fn get_all_upstreams(&self) -> Option<&AHashMap>;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> Option>;\n fn get_all_persistents_and_transients_with_http_prefix(\n &self,\n ) -> Option>;\n\n fn iter_persistents_and_transients_with_rpc_prefix(\n &self,\n ) -> impl Iterator;\n fn iter_persistents_and_transients_with_http_prefix(\n &self,\n ) -> impl Iterator;\n\n fn set_persistent, V: Into>(&mut self, key: K, value: V);\n fn set_transient, V: Into>(&mut self, key: K, value: V);\n fn set_upstream, V: Into>(&mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream, V: Into>(\n &mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent>(&mut self, key: K) -> Option;\n fn del_transient>(&mut self, key: K) -> Option;\n fn del_upstream>(&mut self, key: K) -> Option;\n}", + "SubStruct": [ + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 127, + "EndOffset": 134 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 324, + "EndOffset": 332 + } + ] + } + }, + "Vars": {} + }, + "metainfo::kv": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::kv", + "Functions": { + "Node.clear": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "File": "src/kv.rs", + "Line": 121, + "StartOffset": 3091, + "EndOffset": 3387, + "Content": "impl Node {\n set_impl!(persistent);\n set_impl!(transient);\n set_impl!(stale);\n\n del_impl!(persistent);\n del_impl!(transient);\n del_impl!(stale);\n\n get_impl!(persistent);\n get_impl!(transient);\n get_impl!(stale);\n\n get_all_impl!(persistent);\n get_all_impl!(transient);\n get_all_impl!(stale);\n\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n if let Some(v) = self.persistent.as_mut() {\n v.clear();\n }\n\n if let Some(v) = self.transient.as_mut() {\n v.clear();\n }\n\n if let Some(v) = self.stale.as_mut() {\n v.clear();\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/kv.rs", + "Line": 124, + "StartOffset": 3197, + "EndOffset": 3202 + } + ] + }, + "Node.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/kv.rs", + "Line": 94, + "StartOffset": 2340, + "EndOffset": 3085, + "Content": "impl Node {\n set_impl!(persistent);\n set_impl!(transient);\n set_impl!(stale);\n\n del_impl!(persistent);\n del_impl!(transient);\n del_impl!(stale);\n\n get_impl!(persistent);\n get_impl!(transient);\n get_impl!(stale);\n\n get_all_impl!(persistent);\n get_all_impl!(transient);\n get_all_impl!(stale);\n\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: Self) {\n if let Some(v) = other.persistent {\n if self.persistent.is_none() {\n self.persistent = Some(v);\n } else {\n self.persistent.as_mut().unwrap().extend(v);\n }\n }\n\n if let Some(v) = other.transient {\n if self.transient.is_none() {\n self.transient = Some(v);\n } else {\n self.transient.as_mut().unwrap().extend(v);\n }\n }\n\n if let Some(v) = other.stale {\n if self.stale.is_none() {\n self.stale = Some(v);\n } else {\n self.stale.as_mut().unwrap().extend(v);\n }\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node" + } + }, + "MethodCalls": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "File": "src/kv.rs", + "Line": 100, + "StartOffset": 2595, + "EndOffset": 2601 + } + ] + }, + "del_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl", + "File": "src/kv.rs", + "Line": 25, + "StartOffset": 636, + "EndOffset": 1040, + "Content": "macro_rules! del_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn []>(&mut self, key: K) -> Option {\n let key = key.as_ref();\n if let Some(v) = self.$name.as_mut() {\n v.remove(key)\n } else {\n None\n }\n }\n }\n };\n}", + "Signature": "macro_rules! del_impl {\n ($name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl", + "File": "src/kv.rs", + "Line": 25, + "StartOffset": 649, + "EndOffset": 657 + } + ] + }, + "get_all_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/kv.rs", + "Line": 58, + "StartOffset": 1482, + "EndOffset": 1728, + "Content": "macro_rules! get_all_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn [](&self) -> Option<&AHashMap> {\n self.$name.as_ref()\n }\n }\n };\n}", + "Signature": "macro_rules! get_all_impl {\n ($name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/kv.rs", + "Line": 58, + "StartOffset": 1495, + "EndOffset": 1507 + } + ] + }, + "get_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "File": "src/kv.rs", + "Line": 41, + "StartOffset": 1042, + "EndOffset": 1480, + "Content": "macro_rules! get_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn []>(&self, key: K) -> Option {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) => {\n v.get(key).cloned()\n }\n None => None,\n }\n }\n }\n };\n}", + "Signature": "macro_rules! get_impl {\n ($name:ident) ", + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "File": "src/kv.rs", + "Line": 41, + "StartOffset": 1055, + "EndOffset": 1063 + } + ] + }, + "set_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "File": "src/kv.rs", + "Line": 7, + "StartOffset": 131, + "EndOffset": 634, + "Content": "macro_rules! set_impl {\n ($name:ident) => {\n paste! {\n #[inline]\n pub fn [], V: Into>(\n &mut self,\n key: K,\n value: V,\n ) {\n if self.$name.is_none() {\n self.$name = Some(AHashMap::with_capacity(DEFAULT_CAPACITY));\n }\n self.$name.as_mut().unwrap().insert(key.into(), value.into());\n }\n }\n };\n}" + } + }, + "Types": { + "Node": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/kv.rs", + "Line": 69, + "StartOffset": 1730, + "EndOffset": 2006, + "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option>,\n transient: Option>,\n // this is called stale because upstream and downstream all use this.\n stale: Option>,\n}", + "SubStruct": [ + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 71, + "StartOffset": 1804, + "EndOffset": 1812 + }, + { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 71, + "StartOffset": 1813, + "EndOffset": 1820 + } + ], + "Methods": { + "clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear" + }, + "extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend" + } + } + } + }, + "Vars": { + "DEFAULT_CAPACITY": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "DEFAULT_CAPACITY", + "File": "src/kv.rs", + "Line": 5, + "StartOffset": 62, + "EndOffset": 97, + "Content": "const DEFAULT_CAPACITY: usize = 10;" + } + } + }, + "metainfo::type_map": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::type_map", + "Functions": { + "Entry.and_modify": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "File": "src/type_map.rs", + "Line": 44, + "StartOffset": 1076, + "EndOffset": 1371, + "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn and_modify(self, f: F) -> Self\n where\n V: Send + Sync + 'static,\n {\n Entry {\n inner: self.inner.and_modify(|v| {\n f(v.downcast_mut().unwrap());\n }),\n _marker: PhantomData,\n }\n }\n}", + "Signature": "#[inline]\n pub fn and_modify Entry<'a, K, V> {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -> &'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", + "Signature": "#[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_defa", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "or_default", + "File": "src/type_map.rs", + "Line": 59, + "StartOffset": 1438, + "EndOffset": 1448 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "File": "src/type_map.rs", + "Line": 63, + "StartOffset": 1541, + "EndOffset": 1555 + } + ] + }, + "Entry.or_insert": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "File": "src/type_map.rs", + "Line": 17, + "StartOffset": 344, + "EndOffset": 560, + "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with(|| Box::new(default));\n v.downcast_mut().unwrap()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 483, + "EndOffset": 497 + } + ] + }, + "Entry.or_insert_with": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "File": "src/type_map.rs", + "Line": 26, + "StartOffset": 566, + "EndOffset": 807, + "Content": "impl<'a, K, V> Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert_with V>(self, default: F) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with(|| Box::new(default()));\n v.downcast_mut().unwrap()\n }\n}", + "Signature": "#[inline]\n pub fn or_insert_with Entry<'a, K, V> {\n #[inline]\n #[inline]\n pub fn or_insert_with_key V>(self, default: F) -> &'a mut V\n where\n V: Send + Sync + 'static,\n {\n let v = self.inner.or_insert_with_key(|key| Box::new(default(key)));\n v.downcast_mut().unwrap()\n }\n}", + "Signature": "#[inline]\n pub fn or_insert_with_key usize {\n self.inner.capacity()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "src/type_map.rs", + "Line": 153, + "StartOffset": 3607, + "EndOffset": 3615 + } + ] + }, + "TypeMap.clear": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "File": "src/type_map.rs", + "Line": 118, + "StartOffset": 2851, + "EndOffset": 2924, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(&mut self) {\n self.inner.clear();\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/type_map.rs", + "Line": 120, + "StartOffset": 2910, + "EndOffset": 2915 + } + ] + }, + "TypeMap.contains": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "File": "src/type_map.rs", + "Line": 106, + "StartOffset": 2520, + "EndOffset": 2636, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains(&self) -> bool {\n self.inner.contains_key(&TypeId::of::())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/type_map.rs", + "Line": 108, + "StartOffset": 2598, + "EndOffset": 2610 + } + ] + }, + "TypeMap.entry": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "File": "src/type_map.rs", + "Line": 133, + "StartOffset": 3170, + "EndOffset": 3367, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry(&mut self) -> Entry<'_, TypeId, T> {\n Entry {\n inner: self.inner.entry(TypeId::of::()),\n _marker: PhantomData,\n }\n }\n}", + "Signature": "#[inline]\n pub fn entry(&mut self) -> Entry<'_, Type", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 134, + "StartOffset": 3223, + "EndOffset": 3228 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/type_map.rs", + "Line": 136, + "StartOffset": 3292, + "EndOffset": 3297 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 135, + "StartOffset": 3254, + "EndOffset": 3259 + } + ] + }, + "TypeMap.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "File": "src/type_map.rs", + "Line": 123, + "StartOffset": 2930, + "EndOffset": 3031, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(&mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\n}", + "Signature": "#[inline]\n pub fn extend(&mut self, other: TypeMap) {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "Params": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 124, + "StartOffset": 2976, + "EndOffset": 2983 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/type_map.rs", + "Line": 125, + "StartOffset": 3006, + "EndOffset": 3012 + } + ] + }, + "TypeMap.get": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "File": "src/type_map.rs", + "Line": 92, + "StartOffset": 2146, + "EndOffset": 2319, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get(&self) -> Option<&T> {\n self.inner\n .get(&TypeId::of::())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", + "Signature": "#[inline]\n pub fn get(&self) -> Opti", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2238, + "EndOffset": 2241 + } + ] + }, + "TypeMap.get_mut": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "File": "src/type_map.rs", + "Line": 99, + "StartOffset": 2325, + "EndOffset": 2514, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut(&mut self) -> Option<&mut T> {\n self.inner\n .get_mut(&TypeId::of::())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", + "Signature": "#[inline]\n pub fn get_mut(&mut self) -> Opti", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2429, + "EndOffset": 2436 + } + ] + }, + "TypeMap.insert": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "File": "src/type_map.rs", + "Line": 87, + "StartOffset": 2003, + "EndOffset": 2140, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert(&mut self, t: T) {\n self.inner.insert(TypeId::of::(), Box::new(t));\n }\n}", + "Signature": "#[inline]\n pub fn insert bool {\n self.inner.is_empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "src/type_map.rs", + "Line": 143, + "StartOffset": 3439, + "EndOffset": 3447 + } + ] + }, + "TypeMap.iter": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "File": "src/type_map.rs", + "Line": 128, + "StartOffset": 3037, + "EndOffset": 3164, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, AnyObject> {\n self.inner.iter()\n }\n}", + "Signature": "#[inline]\n pub fn iter(&self) -> ::std::collections::hash_map::Iter<'_, TypeId, AnyObject> {\n ", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "Results": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3103, + "EndOffset": 3107 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3120, + "EndOffset": 3129 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/type_map.rs", + "Line": 130, + "StartOffset": 3152, + "EndOffset": 3156 + } + ] + }, + "TypeMap.len": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", + "File": "src/type_map.rs", + "Line": 146, + "StartOffset": 3461, + "EndOffset": 3534, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(&self) -> usize {\n self.inner.len()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/type_map.rs", + "Line": 148, + "StartOffset": 3523, + "EndOffset": 3526 + } + ] + }, + "TypeMap.remove": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "File": "src/type_map.rs", + "Line": 111, + "StartOffset": 2642, + "EndOffset": 2845, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove(&mut self) -> Option {\n self.inner\n .remove(&TypeId::of::())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", + "Signature": "#[inline]\n pub fn remove(&mut self) -> Opt", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2740, + "EndOffset": 2746 + } + ] + }, + "TypeMap::with_capacity": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/type_map.rs", + "Line": 80, + "StartOffset": 1812, + "EndOffset": 1997, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -> Self {\n TypeMap {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1926, + "EndOffset": 1950 + }, + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1970, + "EndOffset": 1977 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1882, + "EndOffset": 1889 + }, + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1911, + "EndOffset": 1924 + } + ] + } + }, + "Types": { + "AnyObject": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": 142, + "EndOffset": 197, + "Content": "pub(crate) type AnyObject = Box;" + }, + "Entry": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 11, + "StartOffset": 199, + "EndOffset": 305, + "Content": "pub struct Entry<'a, K: 'a, V: 'a> {\n inner: MapEntry<'a, K, AnyObject>,\n _marker: PhantomData,\n}", + "SubStruct": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 12, + "StartOffset": 247, + "EndOffset": 255 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 12, + "StartOffset": 263, + "EndOffset": 272 + } + ], + "Methods": { + "and_modify": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify" + }, + "or_default": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default" + }, + "or_insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert" + }, + "or_insert_with": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with" + }, + "or_insert_with_key": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key" + } + } + }, + "TypeMap": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 67, + "StartOffset": 1577, + "EndOffset": 1670, + "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand,\n}", + "SubStruct": [ + { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 69, + "StartOffset": 1635, + "EndOffset": 1648 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 69, + "StartOffset": 1657, + "EndOffset": 1666 + } + ], + "Methods": { + "capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity" + }, + "clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear" + }, + "contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains" + }, + "entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry" + }, + "extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend" + }, + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get" + }, + "get_mut": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut" + }, + "insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert" + }, + "is_empty": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty" + }, + "iter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter" + }, + "len": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len" + }, + "remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove" + } + } + } + }, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "src/backward.rs": { + "Path": "src/backward.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + } + ], + "Package": "metainfo::backward" + }, + "src/convert.rs": { + "Path": "src/convert.rs", + "Imports": [ + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use crate::{HTTP_PREFIX_BACKWARD, HTTP_PREFIX_PERSISTENT, HTTP_PREFIX_TRANSIENT, RPC_PREFIX_BACKWARD,RPC_PREFIX_PERSISTENT, RPC_PREFIX_TRANSIENT,};" + }, + { + "Path": "use crate::convert::{Converter, HttpConverter, RpcConverter};" + } + ], + "Package": "metainfo::convert" + }, + "src/faststr_map.rs": { + "Path": "src/faststr_map.rs", + "Imports": [ + { + "Path": "use std::{any::TypeId, collections::hash_map::Entry};" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use rustc_hash::FxHashMapRand;" + } + ], + "Package": "metainfo::faststr_map" + }, + "src/forward.rs": { + "Path": "src/forward.rs", + "Imports": [ + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use crate::AHashMap;" + } + ], + "Package": "metainfo::forward" + }, + "src/kv.rs": { + "Path": "src/kv.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use paste::paste;" + }, + { + "Path": "use super::*;" + } + ], + "Package": "metainfo::kv" + }, + "src/lib.rs": { + "Path": "src/lib.rs", + "Imports": [ + { + "Path": "use std::{fmt, sync::Arc};" + }, + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use convert::{Converter, HttpConverter, RpcConverter};" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use kv::Node;" + }, + { + "Path": "use paste::paste;" + }, + { + "Path": "use super::*;" + } + ], + "Package": "metainfo" + }, + "src/type_map.rs": { + "Path": "src/type_map.rs", + "Imports": [ + { + "Path": "use std::{any::{Any, TypeId},collections::hash_map::Entry as MapEntry,marker::PhantomData,};" + }, + { + "Path": "use rustc_hash::FxHashMapRand;" + } + ], + "Package": "metainfo::type_map" + } + } + }, + "rustc-hash@2.1.1": { + "Language": "rust", + "Version": "2.1.1", + "Name": "rustc-hash", + "Dir": "", + "Packages": { + "rustc-hash::random_state": { + "IsMain": false, + "IsTest": false, + "PkgPath": "rustc-hash::random_state", + "Functions": { + "FxRandomState.build_hasher": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState.build_hasher", + "File": "random_state.rs", + "Line": 49, + "StartOffset": 1643, + "EndOffset": 1728, + "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(&self) -> Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" + } + } + }, + "FxRandomState::default": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "File": "random_state.rs", + "Line": 55, + "StartOffset": 1769, + "EndOffset": 1817, + "Content": "impl Default for FxRandomState {\n fn default() -> Self {\n Self::new()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" + } + } + } + }, + "Types": { + "FxHashMapRand": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "random_state.rs", + "Line": 5, + "StartOffset": 65, + "EndOffset": 208, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand = HashMap;" + }, + "FxHashSetRand": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashSetRand", + "File": "random_state.rs", + "Line": 8, + "StartOffset": 210, + "EndOffset": 347, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand = HashSet;" + }, + "FxRandomState": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState", + "File": "random_state.rs", + "Line": 11, + "StartOffset": 349, + "EndOffset": 704, + "Content": "/// `FxRandomState` is an alternative state for `HashMap` types.\n///\n/// A particular instance `FxRandomState` will create the same instances of\n/// [`Hasher`], but the hashers created by two different `FxRandomState`\n/// instances are unlikely to produce the same result for the same values.\n#[derive(Clone)]\npub struct FxRandomState {\n seed: usize,\n}", + "Methods": { + "build_hasher": { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState.build_hasher" + } + } + } + }, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "random_state.rs": { + "Path": "random_state.rs" + } + } + }, + "std": { + "Language": "rust", + "Version": "", + "Name": "std", + "Dir": "", + "Packages": { + "std::collections::hash::map": { + "IsMain": false, + "IsTest": false, + "PkgPath": "std::collections::hash::map", + "Functions": { + "and_modify": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "File": "map.rs", + "Line": 2900, + "StartOffset": 89098, + "EndOffset": 89108, + "Content": "and_modify" + }, + "capacity": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "map.rs", + "Line": 349, + "StartOffset": 13112, + "EndOffset": 13120, + "Content": "capacity" + }, + "clear": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "map.rs", + "Line": 727, + "StartOffset": 24426, + "EndOffset": 24431, + "Content": "clear" + }, + "contains_key": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "map.rs", + "Line": 1125, + "StartOffset": 37104, + "EndOffset": 37116, + "Content": "contains_key" + }, + "default": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "default", + "File": "map.rs", + "Line": 1406, + "StartOffset": 46194, + "EndOffset": 46201, + "Content": "default" + }, + "entry": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "map.rs", + "Line": 872, + "StartOffset": 29118, + "EndOffset": 29123, + "Content": "entry" + }, + "extend": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "map.rs", + "Line": 3246, + "StartOffset": 98957, + "EndOffset": 98963, + "Content": "extend" + }, + "get": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "map.rs", + "Line": 894, + "StartOffset": 29785, + "EndOffset": 29788, + "Content": "get" + }, + "get_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "map.rs", + "Line": 1153, + "StartOffset": 37852, + "EndOffset": 37859, + "Content": "get_mut" + }, + "insert": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "map.rs", + "Line": 1189, + "StartOffset": 39046, + "EndOffset": 39052, + "Content": "insert" + }, + "is_empty": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "map.rs", + "Line": 605, + "StartOffset": 20378, + "EndOffset": 20386, + "Content": "is_empty" + }, + "iter": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "map.rs", + "Line": 535, + "StartOffset": 18547, + "EndOffset": 18551, + "Content": "iter" + }, + "len": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "map.rs", + "Line": 587, + "StartOffset": 19963, + "EndOffset": 19966, + "Content": "len" + }, + "or_insert_with": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "map.rs", + "Line": 2822, + "StartOffset": 86586, + "EndOffset": 86600, + "Content": "or_insert_with" + }, + "or_insert_with_key": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "File": "map.rs", + "Line": 2849, + "StartOffset": 87634, + "EndOffset": 87652, + "Content": "or_insert_with_key" + }, + "remove": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "map.rs", + "Line": 1244, + "StartOffset": 40858, + "EndOffset": 40864, + "Content": "remove" + }, + "with_capacity_and_hasher": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "File": "map.rs", + "Line": 331, + "StartOffset": 12430, + "EndOffset": 12454, + "Content": "with_capacity_and_hasher" + } + }, + "Types": { + "Entry": { + "Exported": false, + "TypeKind": "enum", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "map.rs", + "Line": 2239, + "StartOffset": 70549, + "EndOffset": 70554, + "Content": "Entry" + }, + "Iter": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "map.rs", + "Line": 1486, + "StartOffset": 48646, + "EndOffset": 48650, + "Content": "Iter" + } + }, + "Vars": {} + }, + "std::macros": { + "IsMain": false, + "IsTest": false, + "PkgPath": "std::macros", + "Functions": { + "println": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::macros", + "Name": "println", + "File": "macros.rs", + "Line": 138, + "StartOffset": 4320, + "EndOffset": 4327, + "Content": "println" + } + }, + "Types": {}, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "macros.rs": { + "Path": "macros.rs" + }, + "map.rs": { + "Path": "map.rs" + } + } + } + }, + "Graph": { + "ahash@0.8.11?ahash::hash_map#AHashMap": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.extend": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 6 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.get": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 5 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.insert": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 5 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.into_iter": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 13 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 6 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap::with_capacity": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 15 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + } + ] + }, + "faststr@0.2.31?faststr#FastStr": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 + } + ] + }, + "faststr@0.2.31?faststr#FastStr::from_string": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 24 + } + ] + }, + "faststr@0.2.31?faststr#FastStr::from_vec_u8_unchecked": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 24 + } + ] + }, + "faststr@0.2.31?faststr#FastStr::new": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 3 + } + ] + }, + "faststr@0.2.31?faststr#FastStr::new_u8_slice_unchecked": { + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 18 + } + ] + }, + "metainfo?metainfo#Backward.get_all_backward_downstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.get_all_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.iter_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.iter_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.strip_http_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Backward.strip_rpc_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#DEFAULT_MAP_SIZE": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + } + ] + }, + "metainfo?metainfo#Forward.get_all_persistents": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.get_all_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.get_all_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.get_all_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.get_all_upstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.iter_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.iter_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_persistent", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_upstream", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_persistent", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#Forward.strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_upstream", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#MetaInfo": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 32 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 34 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 38 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.fmt" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents" + } + ] + }, + "metainfo?metainfo#MetaInfo.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Line": 15 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.contains_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.contains_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.derive": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 23 + } + ] + }, + "metainfo?metainfo#MetaInfo.ensure_backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.ensure_forward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 6 + } + ] + }, + "metainfo?metainfo#MetaInfo.fmt": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.fmt", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.get": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.get_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_backword_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 15 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_persistents_and_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 21 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_persistent_prefix", + "Line": 22 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 29 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "Line": 4 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.get_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ] + }, + "metainfo?metainfo#MetaInfo.insert_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ] + }, + "metainfo?metainfo#MetaInfo.insert_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ] + }, + "metainfo?metainfo#MetaInfo.iter_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_backword_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix", + "Line": 3 + } + ] + }, + "metainfo?metainfo#MetaInfo.iter_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_persistents_and_transients_with_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_iter", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_persistent_prefix", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", + "Line": 4 + } + ] + }, + "metainfo?metainfo#MetaInfo.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo.remove_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } + ] }, - "ASTVersion": "v0.1.2" + "metainfo?metainfo#MetaInfo.remove_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + ] + }, + "metainfo?metainfo#MetaInfo::from_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 23 + } + ] + }, + "metainfo?metainfo#RPC_PREFIX_BACKWARD": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo#del_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl" + } + ] + }, + "metainfo?metainfo#get_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_backword_transients_with_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#get_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_persistents_and_transients_with_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#get_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl" + } + ] + }, + "metainfo?metainfo#iter_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_backword_transients_with_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#iter_all_persistents_and_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "iter_all_persistents_and_transients_with_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#set_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream", + "Line": 7 + } + ] + }, + "metainfo?metainfo#strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_persistent", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Line": 1 + } + ] + }, + "metainfo?metainfo#strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_http_prefix_and_set_upstream", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Line": 1 + } + ] + }, + "metainfo?metainfo#strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_persistent", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Line": 1 + } + ] + }, + "metainfo?metainfo#strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_upstream", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Line": 1 + } + ] + }, + "metainfo?metainfo::backward#Backward": { + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 + } + ] + }, + "metainfo?metainfo::convert#Converter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Line": 7 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Line": 7 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Line": 7 + } + ] + }, + "metainfo?metainfo::convert#Converter.remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Line": 7 + } + ] + }, + "metainfo?metainfo::convert#FASTSTR_INLINE_SIZE": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "Type": "VAR", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 3 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_http_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_http_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_upstream", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_http_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_http_prefix_and_set_persistent", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_http_prefix_and_set_backward_downstream", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format" + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.add_prefix_and_to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "Line": 24 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.remove_prefix_and_to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 5 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_http_format_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 5 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_rpc_format_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + ] + }, + "metainfo?metainfo::convert#RpcConverter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients_with_rpc_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_upstream", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.iter_backward_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.iter_persistents_and_transients_with_rpc_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.strip_rpc_prefix_and_set_persistent", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix" + } + ] + }, + "metainfo?metainfo::convert#RpcConverter.add_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 24 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "FASTSTR_INLINE_SIZE", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_transient_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_backward_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.add_persistent_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#RpcConverter.remove_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr::new", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_transient_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_persistent_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter.remove_backward_prefix", + "Line": 2 + } + ] + }, + "metainfo?metainfo::convert#add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_persistent_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 22 + } + ] + }, + "metainfo?metainfo::convert#add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 29 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 34 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 12 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 6 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 19 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 5 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.get_mut": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 5 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.is_empty": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.iter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.len": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 6 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap::with_capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + } + ] + }, + "metainfo?metainfo::forward#Forward": { + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 + } + ] + }, + "metainfo?metainfo::kv#DEFAULT_CAPACITY": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "DEFAULT_CAPACITY", + "Type": "VAR" + }, + "metainfo?metainfo::kv#Node": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.31", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 38 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend" + } + ] + }, + "metainfo?metainfo::kv#Node.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 15 + } + ] + }, + "metainfo?metainfo::kv#Node.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.extend", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 26 + } + ] + }, + "metainfo?metainfo::kv#del_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl" + } + ] + }, + "metainfo?metainfo::kv#get_all_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_backword_transients_with_prefix", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_transients", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_transients", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.iter_all_persistents_and_transients_with_prefix", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_upstreams", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward.get_all_backward_downstreams", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward.get_all_persistents", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl" + } + ] + }, + "metainfo?metainfo::kv#get_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl" + } + ] + }, + "metainfo?metainfo::kv#set_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "Type": "FUNC" + }, + "metainfo?metainfo::type_map#AnyObject": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + } + ] + }, + "metainfo?metainfo::type_map#Entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key" + } + ] + }, + "metainfo?metainfo::type_map#Entry.and_modify": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "and_modify", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 5 + } + ] + }, + "metainfo?metainfo::type_map#Entry.or_default": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "or_default", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + ] + }, + "metainfo?metainfo::type_map#Entry.or_insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + ] + }, + "metainfo?metainfo::type_map#Entry.or_insert_with": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 6 + } + ] + }, + "metainfo?metainfo::type_map#Entry.or_insert_with_key": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 32 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear" + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 6 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 6 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 7 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.get_mut": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 5 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.is_empty": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.iter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.len": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ] + }, + "metainfo?metainfo::type_map#TypeMap.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap::with_capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + } + ] + }, + "metainfo?metainfo::type_map#and_modify": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "and_modify", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 1 + } + ] + }, + "metainfo?metainfo::type_map#or_default": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "or_default", + "Type": "UNKNOWN", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 2 + } + ] + }, + "rustc-hash@2.1.1?rustc-hash::random_state#FxHashMapRand": { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + } + ] + }, + "rustc-hash@2.1.1?rustc-hash::random_state#FxRandomState::default": { + "ModPath": "rustc-hash@2.1.1", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::default", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#Entry": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 1 + } + ] + }, + "std?std::collections::hash::map#Iter": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "Type": "TYPE", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 1 + } + ] + }, + "std?std::collections::hash::map#and_modify": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 6 + } + ] + }, + "std?std::collections::hash::map#capacity": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#clear": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#contains_key": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#entry": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#extend": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#get": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#get_mut": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#insert": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#is_empty": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#iter": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 21 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#len": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients_with_prefix", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#or_insert_with": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 5 + } + ] + }, + "std?std::collections::hash::map#or_insert_with_key": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 5 + } + ] + }, + "std?std::collections::hash::map#remove": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#with_capacity_and_hasher": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "Type": "FUNC", + "References": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + } + ] + } + }, + "ASTVersion": "v0.1.2" } \ No newline at end of file diff --git a/testdata/java/1_advanced/src/main/java/org/example/test.json b/testdata/java/1_advanced/src/main/java/org/example/test.json new file mode 100644 index 00000000..e69de29b