From ea8b3c23c3e677fe1988c782caf6488fd1d38aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Wed, 16 Apr 2025 13:48:23 +0800 Subject: [PATCH 01/15] refactor: remove compress implementations --- Cargo.toml | 28 - src/lang/go.go => go.go | 6 +- src/lang/go.mod => go.mod | 17 +- src/lang/go.sum => go.sum | 18 +- {src/lang => lang}/collect/collect.go | 8 +- {src/lang => lang}/collect/collect_test.go | 6 +- {src/lang => lang}/collect/export.go | 8 +- {src/lang => lang}/golang/parser/ctx.go | 4 +- {src/lang => lang}/golang/parser/file.go | 2 +- {src/lang => lang}/golang/parser/go_ast.go | 2 +- .../golang/parser/go_ast_test.go | 2 +- {src/lang => lang}/golang/parser/option.go | 0 {src/lang => lang}/golang/parser/parser.go | 2 +- {src/lang => lang}/golang/parser/pkg.go | 2 +- {src/lang => lang}/golang/parser/pkg_test.go | 2 +- {src/lang => lang}/golang/parser/utils.go | 2 +- {src/lang => lang}/golang/writer/ast.go | 2 +- {src/lang => lang}/golang/writer/write.go | 4 +- .../lang => lang}/golang/writer/write_test.go | 2 +- {src/lang => lang}/log/logger.go | 0 {src/lang => lang}/lsp/client.go | 2 +- {src/lang => lang}/lsp/client_test.go | 2 +- {src/lang => lang}/lsp/handler.go | 8 +- {src/lang => lang}/lsp/lsp.go | 2 +- {src/lang => lang}/lsp/lsp_test.go | 0 {src/lang => lang}/lsp/spec.go | 2 +- {src/lang => lang}/lsp/utils.go | 4 +- {src/lang => lang}/lsp/utils_test.go | 0 {src/lang => lang}/patch/lib.go | 6 +- {src/lang => lang}/patch/lib_test.go | 2 +- {src/lang => lang}/rust/ast.go | 6 +- {src/lang => lang}/rust/ast_test.go | 6 +- {src/lang => lang}/rust/patch.go | 4 +- {src/lang => lang}/rust/repo.go | 12 +- {src/lang => lang}/rust/repo_test.go | 8 +- {src/lang => lang}/rust/rust_test.go | 8 +- {src/lang => lang}/rust/spec.go | 4 +- {src/lang => lang}/rust/utils/lsp.go | 8 +- {src/lang => lang}/rust/utils/lsp_test.go | 0 {src/lang => lang}/uniast/ast.go | 0 {src/lang => lang}/uniast/ast_test.go | 0 {src/lang => lang}/uniast/node.go | 0 {src/lang => lang}/uniast/parser.go | 0 {src/lang => lang}/uniast/utils.go | 0 {src/lang => lang}/uniast/writer.go | 0 {src/lang => lang}/utils/err.go | 0 {src/lang => lang}/utils/files.go | 0 {src/lang => lang}/utils/strings.go | 0 src/lang/main.go => main.go | 10 +- rust-toolchain.toml | 2 - src/bin/cmd.rs | 215 ---- src/compress/compress.rs | 1000 ----------------- src/compress/llm/coze.rs | 185 --- src/compress/llm/maas.rs | 84 -- src/compress/llm/mod.rs | 50 - src/compress/llm/ollama.rs | 72 -- src/compress/llm/prompts.rs | 781 ------------- src/compress/mod.rs | 19 - src/compress/parser.rs | 42 - src/compress/rust/mod.rs | 242 ---- src/compress/types/mod.rs | 16 - src/compress/types/test.rs | 61 - src/compress/types/types.rs | 977 ---------------- src/config/mod.rs | 187 --- src/export.rs | 290 ----- src/lib.rs | 20 - src/parse.rs | 108 -- src/storage/cache.rs | 79 -- src/storage/fs.rs | 68 -- src/storage/memory.rs | 39 - src/storage/mod.rs | 17 - src/utils/cmd.rs | 46 - src/utils/errors.rs | 59 - src/utils/files.rs | 176 --- src/utils/git.rs | 148 --- src/utils/llm.rs | 35 - src/utils/markdown.rs | 62 - src/utils/mod.rs | 21 - src/utils/split.rs | 22 - testdata/rust2-wobyted/Cargo.toml | 7 - testdata/rust2-wobyted/src/entity/func.rs | 45 - testdata/rust2-wobyted/src/entity/inter.rs | 65 -- testdata/rust2-wobyted/src/entity/mod.rs | 85 -- testdata/rust2-wobyted/src/main.rs | 33 - 84 files changed, 89 insertions(+), 5480 deletions(-) delete mode 100644 Cargo.toml rename src/lang/go.go => go.go (88%) rename src/lang/go.mod => go.mod (56%) rename src/lang/go.sum => go.sum (76%) rename {src/lang => lang}/collect/collect.go (98%) rename {src/lang => lang}/collect/collect_test.go (95%) rename {src/lang => lang}/collect/export.go (98%) rename {src/lang => lang}/golang/parser/ctx.go (99%) rename {src/lang => lang}/golang/parser/file.go (99%) rename {src/lang => lang}/golang/parser/go_ast.go (98%) rename {src/lang => lang}/golang/parser/go_ast_test.go (99%) rename {src/lang => lang}/golang/parser/option.go (100%) rename {src/lang => lang}/golang/parser/parser.go (99%) rename {src/lang => lang}/golang/parser/pkg.go (99%) rename {src/lang => lang}/golang/parser/pkg_test.go (98%) rename {src/lang => lang}/golang/parser/utils.go (99%) rename {src/lang => lang}/golang/writer/ast.go (97%) rename {src/lang => lang}/golang/writer/write.go (98%) rename {src/lang => lang}/golang/writer/write_test.go (98%) rename {src/lang => lang}/log/logger.go (100%) rename {src/lang => lang}/lsp/client.go (99%) rename {src/lang => lang}/lsp/client_test.go (99%) rename {src/lang => lang}/lsp/handler.go (98%) rename {src/lang => lang}/lsp/lsp.go (99%) rename {src/lang => lang}/lsp/lsp_test.go (100%) rename {src/lang => lang}/lsp/spec.go (98%) rename {src/lang => lang}/lsp/utils.go (96%) rename {src/lang => lang}/lsp/utils_test.go (100%) rename {src/lang => lang}/patch/lib.go (97%) rename {src/lang => lang}/patch/lib_test.go (98%) rename {src/lang => lang}/rust/ast.go (98%) rename {src/lang => lang}/rust/ast_test.go (98%) rename {src/lang => lang}/rust/patch.go (94%) rename {src/lang => lang}/rust/repo.go (96%) rename {src/lang => lang}/rust/repo_test.go (96%) rename {src/lang => lang}/rust/rust_test.go (98%) rename {src/lang => lang}/rust/spec.go (99%) rename {src/lang => lang}/rust/utils/lsp.go (98%) rename {src/lang => lang}/rust/utils/lsp_test.go (100%) rename {src/lang => lang}/uniast/ast.go (100%) rename {src/lang => lang}/uniast/ast_test.go (100%) rename {src/lang => lang}/uniast/node.go (100%) rename {src/lang => lang}/uniast/parser.go (100%) rename {src/lang => lang}/uniast/utils.go (100%) rename {src/lang => lang}/uniast/writer.go (100%) rename {src/lang => lang}/utils/err.go (100%) rename {src/lang => lang}/utils/files.go (100%) rename {src/lang => lang}/utils/strings.go (100%) rename src/lang/main.go => main.go (96%) delete mode 100644 rust-toolchain.toml delete mode 100644 src/bin/cmd.rs delete mode 100644 src/compress/compress.rs delete mode 100644 src/compress/llm/coze.rs delete mode 100644 src/compress/llm/maas.rs delete mode 100644 src/compress/llm/mod.rs delete mode 100644 src/compress/llm/ollama.rs delete mode 100644 src/compress/llm/prompts.rs delete mode 100644 src/compress/mod.rs delete mode 100644 src/compress/parser.rs delete mode 100644 src/compress/rust/mod.rs delete mode 100644 src/compress/types/mod.rs delete mode 100644 src/compress/types/test.rs delete mode 100644 src/compress/types/types.rs delete mode 100644 src/config/mod.rs delete mode 100644 src/export.rs delete mode 100644 src/lib.rs delete mode 100644 src/parse.rs delete mode 100644 src/storage/cache.rs delete mode 100644 src/storage/fs.rs delete mode 100644 src/storage/memory.rs delete mode 100644 src/storage/mod.rs delete mode 100644 src/utils/cmd.rs delete mode 100644 src/utils/errors.rs delete mode 100644 src/utils/files.rs delete mode 100644 src/utils/git.rs delete mode 100644 src/utils/llm.rs delete mode 100644 src/utils/markdown.rs delete mode 100644 src/utils/mod.rs delete mode 100644 src/utils/split.rs delete mode 100644 testdata/rust2-wobyted/Cargo.toml delete mode 100644 testdata/rust2-wobyted/src/entity/func.rs delete mode 100644 testdata/rust2-wobyted/src/entity/inter.rs delete mode 100644 testdata/rust2-wobyted/src/entity/mod.rs delete mode 100644 testdata/rust2-wobyted/src/main.rs diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index c3dfd710..00000000 --- a/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "ABCoder" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -reqwest = { version = "0.11", features = ["json"] } -serde = { version = "1.0", features = ["derive", "rc"] } -tokio = { version = "^1", features = ["full"] } -serde_json = "1.0" -serde_yaml = "0.8" -walkdir = "^2.3" -regex = "^1.5" -ryze = { git = "https://github.com/welkeyever/ryze.git" } -hyper = { version = "0.14", features = ["full"] } -serde_urlencoded = "0.7.0" -futures = "0.3" -async-recursion = "1.0.5" -csv = "1.1" -text-splitter = "0.6.3" -syn = { version = "2.0.59", features = ["full"] } -quote = "1.0.36" -rustfmt = "0.10.0" -lazy_static = "1.4.0" -dotenv = "0.15" -paste = "1.0.15" diff --git a/src/lang/go.go b/go.go similarity index 88% rename from src/lang/go.go rename to go.go index 08af9198..74a24262 100644 --- a/src/lang/go.go +++ b/go.go @@ -19,9 +19,9 @@ package main import ( "context" - "github.com/cloudwego/abcoder/src/lang/collect" - "github.com/cloudwego/abcoder/src/lang/golang/parser" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/collect" + "github.com/cloudwego/abcoder/lang/golang/parser" + "github.com/cloudwego/abcoder/lang/uniast" ) func callGoParser(ctx context.Context, repoPath string, opts collect.CollectOption) (*uniast.Repository, error) { diff --git a/src/lang/go.mod b/go.mod similarity index 56% rename from src/lang/go.mod rename to go.mod index fda87b5e..5dc22fbe 100644 --- a/src/lang/go.mod +++ b/go.mod @@ -1,27 +1,22 @@ -module github.com/cloudwego/abcoder/src/lang +module github.com/cloudwego/abcoder -go 1.23.0 - -toolchain go1.24.1 +go 1.24.1 require ( github.com/Knetic/govaluate v3.0.0+incompatible - github.com/cloudwego/abcoder/src/uniast v0.0.0 github.com/davecgh/go-spew v1.1.1 github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd github.com/sourcegraph/jsonrpc2 v0.2.0 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 golang.org/x/mod v0.24.0 - golang.org/x/tools v0.31.0 + golang.org/x/tools v0.32.0 ) require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/sync v0.12.0 // indirect + github.com/spf13/pflag v1.0.6 // indirect + golang.org/x/sync v0.13.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - -replace github.com/cloudwego/abcoder/src/uniast => ../uniast diff --git a/src/lang/go.sum b/go.sum similarity index 76% rename from src/lang/go.sum rename to go.sum index 6c9693e7..f89ddc49 100644 --- a/src/lang/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ github.com/Knetic/govaluate v3.0.0+incompatible h1:7o6+MAPhYTCF0+fdvoz1xDedhRb4f6s9Tn1Tt7/WTEg= github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -16,18 +16,18 @@ github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd h1:Dq5WSzWsP1Tb github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd/go.mod h1:SULmZY7YNBsvNiQbrb/BEDdEJ84TGnfyUQxaHt8t8rY= github.com/sourcegraph/jsonrpc2 v0.2.0 h1:KjN/dC4fP6aN9030MZCJs9WQbTOjWHhrtKVpzzSrr/U= github.com/sourcegraph/jsonrpc2 v0.2.0/go.mod h1:ZafdZgk/axhT1cvZAPOhw+95nz2I/Ra5qMlU4gTRwIo= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= +golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/src/lang/collect/collect.go b/lang/collect/collect.go similarity index 98% rename from src/lang/collect/collect.go rename to lang/collect/collect.go index a7bcb494..53e0834f 100644 --- a/src/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -22,10 +22,10 @@ import ( "strings" "unicode" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/lsp" - . "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/rust" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + . "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/rust" ) type CollectOption struct { diff --git a/src/lang/collect/collect_test.go b/lang/collect/collect_test.go similarity index 95% rename from src/lang/collect/collect_test.go rename to lang/collect/collect_test.go index 5d88ebe7..d2662fb5 100644 --- a/src/lang/collect/collect_test.go +++ b/lang/collect/collect_test.go @@ -23,9 +23,9 @@ import ( "testing" "time" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/uniast" ) var testroot = "../../../testdata" diff --git a/src/lang/collect/export.go b/lang/collect/export.go similarity index 98% rename from src/lang/collect/export.go rename to lang/collect/export.go index e6c41c93..3101d8a6 100644 --- a/src/lang/collect/export.go +++ b/lang/collect/export.go @@ -21,10 +21,10 @@ import ( "path/filepath" "strings" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/lsp" - . "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + . "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/uniast" ) type dependency struct { diff --git a/src/lang/golang/parser/ctx.go b/lang/golang/parser/ctx.go similarity index 99% rename from src/lang/golang/parser/ctx.go rename to lang/golang/parser/ctx.go index 13f59b0c..0a118002 100644 --- a/src/lang/golang/parser/ctx.go +++ b/lang/golang/parser/ctx.go @@ -25,8 +25,8 @@ import ( "path/filepath" "strings" - "github.com/cloudwego/abcoder/src/lang/uniast" - . "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" "golang.org/x/tools/go/packages" ) diff --git a/src/lang/golang/parser/file.go b/lang/golang/parser/file.go similarity index 99% rename from src/lang/golang/parser/file.go rename to lang/golang/parser/file.go index a028f171..1115f6ee 100644 --- a/src/lang/golang/parser/file.go +++ b/lang/golang/parser/file.go @@ -23,7 +23,7 @@ import ( "strconv" "strings" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" ) func (p *GoParser) parseFile(ctx *fileContext, f *ast.File) error { diff --git a/src/lang/golang/parser/go_ast.go b/lang/golang/parser/go_ast.go similarity index 98% rename from src/lang/golang/parser/go_ast.go rename to lang/golang/parser/go_ast.go index e717bf24..2eafc6bc 100644 --- a/src/lang/golang/parser/go_ast.go +++ b/lang/golang/parser/go_ast.go @@ -22,7 +22,7 @@ import ( "os" "strings" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" ) var ( diff --git a/src/lang/golang/parser/go_ast_test.go b/lang/golang/parser/go_ast_test.go similarity index 99% rename from src/lang/golang/parser/go_ast_test.go rename to lang/golang/parser/go_ast_test.go index 0a360906..834a8998 100644 --- a/src/lang/golang/parser/go_ast_test.go +++ b/lang/golang/parser/go_ast_test.go @@ -19,7 +19,7 @@ import ( "encoding/json" "testing" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" "github.com/davecgh/go-spew/spew" "github.com/stretchr/testify/require" ) diff --git a/src/lang/golang/parser/option.go b/lang/golang/parser/option.go similarity index 100% rename from src/lang/golang/parser/option.go rename to lang/golang/parser/option.go diff --git a/src/lang/golang/parser/parser.go b/lang/golang/parser/parser.go similarity index 99% rename from src/lang/golang/parser/parser.go rename to lang/golang/parser/parser.go index 804ab20e..0cce04cc 100644 --- a/src/lang/golang/parser/parser.go +++ b/lang/golang/parser/parser.go @@ -26,7 +26,7 @@ import ( "regexp" "strings" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" ) //---------------- Golang Parser ----------------- diff --git a/src/lang/golang/parser/pkg.go b/lang/golang/parser/pkg.go similarity index 99% rename from src/lang/golang/parser/pkg.go rename to lang/golang/parser/pkg.go index 68b395a6..61845902 100644 --- a/src/lang/golang/parser/pkg.go +++ b/lang/golang/parser/pkg.go @@ -23,7 +23,7 @@ import ( "path/filepath" "strings" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" "golang.org/x/tools/go/packages" ) diff --git a/src/lang/golang/parser/pkg_test.go b/lang/golang/parser/pkg_test.go similarity index 98% rename from src/lang/golang/parser/pkg_test.go rename to lang/golang/parser/pkg_test.go index 81c35c58..305eda23 100644 --- a/src/lang/golang/parser/pkg_test.go +++ b/lang/golang/parser/pkg_test.go @@ -24,7 +24,7 @@ import ( "path/filepath" "testing" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" ) func Test_goParser_ParseRepo(t *testing.T) { diff --git a/src/lang/golang/parser/utils.go b/lang/golang/parser/utils.go similarity index 99% rename from src/lang/golang/parser/utils.go rename to lang/golang/parser/utils.go index 000cdba5..0785979a 100644 --- a/src/lang/golang/parser/utils.go +++ b/lang/golang/parser/utils.go @@ -29,7 +29,7 @@ import ( "strings" "github.com/Knetic/govaluate" - . "github.com/cloudwego/abcoder/src/lang/uniast" + . "github.com/cloudwego/abcoder/lang/uniast" "golang.org/x/mod/modfile" ) diff --git a/src/lang/golang/writer/ast.go b/lang/golang/writer/ast.go similarity index 97% rename from src/lang/golang/writer/ast.go rename to lang/golang/writer/ast.go index 1db8f93d..9dde1e20 100644 --- a/src/lang/golang/writer/ast.go +++ b/lang/golang/writer/ast.go @@ -19,7 +19,7 @@ package writer import ( "strings" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/uniast" ) func writeImport(sb *strings.Builder, impts []uniast.Import) { diff --git a/src/lang/golang/writer/write.go b/lang/golang/writer/write.go similarity index 98% rename from src/lang/golang/writer/write.go rename to lang/golang/writer/write.go index a4fc4483..e54eef02 100644 --- a/src/lang/golang/writer/write.go +++ b/lang/golang/writer/write.go @@ -27,8 +27,8 @@ import ( "strconv" "strings" - "github.com/cloudwego/abcoder/src/lang/uniast" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/uniast" + "github.com/cloudwego/abcoder/lang/utils" ) var _ uniast.Writer = (*Writer)(nil) diff --git a/src/lang/golang/writer/write_test.go b/lang/golang/writer/write_test.go similarity index 98% rename from src/lang/golang/writer/write_test.go rename to lang/golang/writer/write_test.go index bcae89d3..751a720a 100644 --- a/src/lang/golang/writer/write_test.go +++ b/lang/golang/writer/write_test.go @@ -22,7 +22,7 @@ import ( "reflect" "testing" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/uniast" ) func TestWriter_WriteRepo(t *testing.T) { diff --git a/src/lang/log/logger.go b/lang/log/logger.go similarity index 100% rename from src/lang/log/logger.go rename to lang/log/logger.go diff --git a/src/lang/lsp/client.go b/lang/lsp/client.go similarity index 99% rename from src/lang/lsp/client.go rename to lang/lsp/client.go index 1ed0f55d..4c88efd0 100644 --- a/src/lang/lsp/client.go +++ b/lang/lsp/client.go @@ -23,7 +23,7 @@ import ( "os/exec" "time" - "github.com/cloudwego/abcoder/src/lang/log" + "github.com/cloudwego/abcoder/lang/log" lsp "github.com/sourcegraph/go-lsp" "github.com/sourcegraph/jsonrpc2" ) diff --git a/src/lang/lsp/client_test.go b/lang/lsp/client_test.go similarity index 99% rename from src/lang/lsp/client_test.go rename to lang/lsp/client_test.go index ba132670..22b229c2 100644 --- a/src/lang/lsp/client_test.go +++ b/lang/lsp/client_test.go @@ -24,7 +24,7 @@ import ( "testing" "time" - "github.com/cloudwego/abcoder/src/lang/log" + "github.com/cloudwego/abcoder/lang/log" ) var golangLSP *LSPClient diff --git a/src/lang/lsp/handler.go b/lang/lsp/handler.go similarity index 98% rename from src/lang/lsp/handler.go rename to lang/lsp/handler.go index 758fbe5f..ab12a8a9 100644 --- a/src/lang/lsp/handler.go +++ b/lang/lsp/handler.go @@ -1,11 +1,11 @@ // 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. @@ -20,7 +20,7 @@ import ( "sync" "time" - "github.com/cloudwego/abcoder/src/lang/log" + "github.com/cloudwego/abcoder/lang/log" "github.com/sourcegraph/jsonrpc2" ) diff --git a/src/lang/lsp/lsp.go b/lang/lsp/lsp.go similarity index 99% rename from src/lang/lsp/lsp.go rename to lang/lsp/lsp.go index 9a1c3612..21fb843b 100644 --- a/src/lang/lsp/lsp.go +++ b/lang/lsp/lsp.go @@ -24,7 +24,7 @@ import ( "sort" "strings" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/utils" "github.com/sourcegraph/go-lsp" ) diff --git a/src/lang/lsp/lsp_test.go b/lang/lsp/lsp_test.go similarity index 100% rename from src/lang/lsp/lsp_test.go rename to lang/lsp/lsp_test.go diff --git a/src/lang/lsp/spec.go b/lang/lsp/spec.go similarity index 98% rename from src/lang/lsp/spec.go rename to lang/lsp/spec.go index ca31fecb..02a66a5a 100644 --- a/src/lang/lsp/spec.go +++ b/lang/lsp/spec.go @@ -14,7 +14,7 @@ package lsp -import "github.com/cloudwego/abcoder/src/lang/uniast" +import "github.com/cloudwego/abcoder/lang/uniast" type Language string diff --git a/src/lang/lsp/utils.go b/lang/lsp/utils.go similarity index 96% rename from src/lang/lsp/utils.go rename to lang/lsp/utils.go index fc7fc64e..f1178dc1 100644 --- a/src/lang/lsp/utils.go +++ b/lang/lsp/utils.go @@ -31,8 +31,8 @@ package lsp import ( - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/utils" ) func GetDistance(text string, start Position, pos Position) int { diff --git a/src/lang/lsp/utils_test.go b/lang/lsp/utils_test.go similarity index 100% rename from src/lang/lsp/utils_test.go rename to lang/lsp/utils_test.go diff --git a/src/lang/patch/lib.go b/lang/patch/lib.go similarity index 97% rename from src/lang/patch/lib.go rename to lang/patch/lib.go index daf1260b..36a6a5f3 100644 --- a/src/lang/patch/lib.go +++ b/lang/patch/lib.go @@ -21,9 +21,9 @@ import ( "path/filepath" "sort" - "github.com/cloudwego/abcoder/src/lang/golang/writer" - "github.com/cloudwego/abcoder/src/lang/uniast" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/golang/writer" + "github.com/cloudwego/abcoder/lang/uniast" + "github.com/cloudwego/abcoder/lang/utils" ) // PatchModule patches the ast Nodes onto module files diff --git a/src/lang/patch/lib_test.go b/lang/patch/lib_test.go similarity index 98% rename from src/lang/patch/lib_test.go rename to lang/patch/lib_test.go index 9ea32ea2..920f56be 100644 --- a/src/lang/patch/lib_test.go +++ b/lang/patch/lib_test.go @@ -19,7 +19,7 @@ package patch import ( "testing" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/uniast" ) var root = "../../../tmp" diff --git a/src/lang/rust/ast.go b/lang/rust/ast.go similarity index 98% rename from src/lang/rust/ast.go rename to lang/rust/ast.go index 34ded247..038e00d4 100644 --- a/src/lang/rust/ast.go +++ b/lang/rust/ast.go @@ -20,9 +20,9 @@ import ( "os" "strings" - "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/uniast" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/uniast" + "github.com/cloudwego/abcoder/lang/utils" ) // UseNode represents a module node in the dependency tree diff --git a/src/lang/rust/ast_test.go b/lang/rust/ast_test.go similarity index 98% rename from src/lang/rust/ast_test.go rename to lang/rust/ast_test.go index 10fb925e..7f1ba8c3 100644 --- a/src/lang/rust/ast_test.go +++ b/lang/rust/ast_test.go @@ -1,11 +1,11 @@ // 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. diff --git a/src/lang/rust/patch.go b/lang/rust/patch.go similarity index 94% rename from src/lang/rust/patch.go rename to lang/rust/patch.go index 86701ec4..83ea45db 100644 --- a/src/lang/rust/patch.go +++ b/lang/rust/patch.go @@ -18,8 +18,8 @@ import ( "os" "path/filepath" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/uniast" ) type RustModulePatcher struct { diff --git a/src/lang/rust/repo.go b/lang/rust/repo.go similarity index 96% rename from src/lang/rust/repo.go rename to lang/rust/repo.go index 5f0344b9..2fc00c68 100644 --- a/src/lang/rust/repo.go +++ b/lang/rust/repo.go @@ -1,11 +1,11 @@ // 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. @@ -22,9 +22,9 @@ import ( "strconv" "time" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/utils" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/utils" ) const MaxWaitDuration = 5 * time.Minute diff --git a/src/lang/rust/repo_test.go b/lang/rust/repo_test.go similarity index 96% rename from src/lang/rust/repo_test.go rename to lang/rust/repo_test.go index 3e40bc0b..3b6dc336 100644 --- a/src/lang/rust/repo_test.go +++ b/lang/rust/repo_test.go @@ -1,11 +1,11 @@ // 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. @@ -18,7 +18,7 @@ import ( "testing" "time" - "github.com/cloudwego/abcoder/src/lang/log" + "github.com/cloudwego/abcoder/lang/log" ) func TestCheckRepo(t *testing.T) { diff --git a/src/lang/rust/rust_test.go b/lang/rust/rust_test.go similarity index 98% rename from src/lang/rust/rust_test.go rename to lang/rust/rust_test.go index 209bd4a0..b6861187 100644 --- a/src/lang/rust/rust_test.go +++ b/lang/rust/rust_test.go @@ -1,11 +1,11 @@ // 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. @@ -22,7 +22,7 @@ import ( "strings" "testing" - lsp "github.com/cloudwego/abcoder/src/lang/lsp" + lsp "github.com/cloudwego/abcoder/lang/lsp" ) func TestRustSpec_NameSpace(t *testing.T) { diff --git a/src/lang/rust/spec.go b/lang/rust/spec.go similarity index 99% rename from src/lang/rust/spec.go rename to lang/rust/spec.go index 88a96bd3..f68223f6 100644 --- a/src/lang/rust/spec.go +++ b/lang/rust/spec.go @@ -22,8 +22,8 @@ import ( "sort" "strings" - lsp "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/utils" + lsp "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/utils" ) var _ lsp.LanguageSpec = (*RustSpec)(nil) diff --git a/src/lang/rust/utils/lsp.go b/lang/rust/utils/lsp.go similarity index 98% rename from src/lang/rust/utils/lsp.go rename to lang/rust/utils/lsp.go index df09ee9a..22fd711f 100644 --- a/src/lang/rust/utils/lsp.go +++ b/lang/rust/utils/lsp.go @@ -1,11 +1,11 @@ // 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. @@ -21,7 +21,7 @@ import ( "sync" "time" - lsp "github.com/cloudwego/abcoder/src/lang/lsp" + lsp "github.com/cloudwego/abcoder/lang/lsp" ) var DefaultLSPInitTime = time.Second * 60 diff --git a/src/lang/rust/utils/lsp_test.go b/lang/rust/utils/lsp_test.go similarity index 100% rename from src/lang/rust/utils/lsp_test.go rename to lang/rust/utils/lsp_test.go diff --git a/src/lang/uniast/ast.go b/lang/uniast/ast.go similarity index 100% rename from src/lang/uniast/ast.go rename to lang/uniast/ast.go diff --git a/src/lang/uniast/ast_test.go b/lang/uniast/ast_test.go similarity index 100% rename from src/lang/uniast/ast_test.go rename to lang/uniast/ast_test.go diff --git a/src/lang/uniast/node.go b/lang/uniast/node.go similarity index 100% rename from src/lang/uniast/node.go rename to lang/uniast/node.go diff --git a/src/lang/uniast/parser.go b/lang/uniast/parser.go similarity index 100% rename from src/lang/uniast/parser.go rename to lang/uniast/parser.go diff --git a/src/lang/uniast/utils.go b/lang/uniast/utils.go similarity index 100% rename from src/lang/uniast/utils.go rename to lang/uniast/utils.go diff --git a/src/lang/uniast/writer.go b/lang/uniast/writer.go similarity index 100% rename from src/lang/uniast/writer.go rename to lang/uniast/writer.go diff --git a/src/lang/utils/err.go b/lang/utils/err.go similarity index 100% rename from src/lang/utils/err.go rename to lang/utils/err.go diff --git a/src/lang/utils/files.go b/lang/utils/files.go similarity index 100% rename from src/lang/utils/files.go rename to lang/utils/files.go diff --git a/src/lang/utils/strings.go b/lang/utils/strings.go similarity index 100% rename from src/lang/utils/strings.go rename to lang/utils/strings.go diff --git a/src/lang/main.go b/main.go similarity index 96% rename from src/lang/main.go rename to main.go index 93b9286e..6f24e86a 100644 --- a/src/lang/main.go +++ b/main.go @@ -38,11 +38,11 @@ import ( "path/filepath" "time" - "github.com/cloudwego/abcoder/src/lang/collect" - "github.com/cloudwego/abcoder/src/lang/log" - "github.com/cloudwego/abcoder/src/lang/lsp" - "github.com/cloudwego/abcoder/src/lang/rust" - "github.com/cloudwego/abcoder/src/lang/uniast" + "github.com/cloudwego/abcoder/lang/collect" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/rust" + "github.com/cloudwego/abcoder/lang/uniast" "github.com/spf13/cobra" ) diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 292fe499..00000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "stable" diff --git a/src/bin/cmd.rs b/src/bin/cmd.rs deleted file mode 100644 index 15931e90..00000000 --- a/src/bin/cmd.rs +++ /dev/null @@ -1,215 +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. - -use std::{env, panic, process, thread, time::Duration}; - -use ABCoder::{ - compress::compress::compress_all, - export::{self, ExportOptions}, - parse::{self, CompressOptions}, -}; - -#[derive(Clone, Debug)] -struct Options { - repo_path: String, - action: Action, -} - -#[derive(Clone, Debug)] -enum Action { - Compress(CompressOptions), - Export(ExportOptions), -} - -fn main() { - // parse Options from cmd args - let options = parse_options(); - println!("arguments: {:?}", options); - - match options.action { - Action::Compress(cmp) => { - if cmp.force_update_ast { - merge_repo(&options.repo_path, &cmp); - } - compress(&options.repo_path, &cmp); - } - Action::Export(exp) => { - export(&options.repo_path, &exp); - } - } -} - -const USAGE: &str = "Usage: ABCoder [Flags] -RepoPath: the path of the repo to compress. Can be a local path or a git url. -Actions: compress|export -compress: compress the repo. Including flags: - --parse-only: only parse the repo, not compress it - --export-compress: export the compress result - --force-update-ast: force parsing repo and merge the previous result - --not-load-external-symbol: not load external external symbols to speed up parsing - --no-need-comment: not need comment in symbol content (only works for Go now) -export: export the result to csv or markdown (default). Including flags: - --csv: export the compress result to csv - --out-dir : output directory path, default is $WORK_DIR - --public-only: only export the public symbols -"; - -fn parse_options() -> Options { - let args: Vec = env::args().collect(); - if args.len() < 3 { - println!("{}", USAGE); - process::exit(1); - } - - let action = match args[1].as_str() { - "compress" => { - let mut compress_action = CompressOptions::default(); - if args.len() > 3 { - for i in 3..args.len() { - match args[i].as_str() { - "--force-update-ast" => { - compress_action.force_update_ast = true; - } - "--not-load-external-symbol" => { - compress_action.not_load_external_symbol = true; - } - "--no-need-comment" => { - compress_action.no_need_comment = true; - } - _ => {} - } - } - } - Action::Compress(compress_action) - } - - "export" => { - let mut opts = ExportOptions::default(); - if args.len() > 3 { - for i in 3..args.len() { - match args[i].as_str() { - "--out-dir" => { - if args.len() <= i + 1 { - println!("--out-dir must specify a value"); - process::exit(1); - } - opts.output = Some(args[i + 1].clone()); - } - "--csv" => { - opts.csv = true; - } - "--public-only" => { - opts.public_only = true; - } - _ => {} - } - } - } - Action::Export(opts) - } - - _ => { - println!("{}", USAGE); - process::exit(1); - } - }; - - Options { - repo_path: args[2].clone(), - action, - } -} - -fn compress(repo_path: &String, cmp: &CompressOptions) { - // recoverable logic - let run = || { - // get the repo - let repo = parse::get_repo(repo_path, &cmp); - if let Err(err) = repo { - println!("get repo error: {:?}", err); - process::exit(1); - } - - let mut repo = repo.unwrap(); - repo.save_to_cache(); - println!("successfully parsed repo: {}", repo.id); - if cmp.parse_only { - return; - } - - // compress the repo - println!("compressing repo: {}", repo.id); - // block on compress - let rt = tokio::runtime::Runtime::new().unwrap(); - rt.block_on(compress_all(&mut repo)); - - // save the compressed repo - repo.save_to_cache(); - - println!("successfully compressed repo: {}", repo.id); - }; - - loop { - let result = panic::catch_unwind(run); - if let Err(err) = result { - println!("panic: {:?}", err); - // sleep 60s and retry - thread::sleep(Duration::from_secs(60)); - continue; - } else { - process::exit(0); - } - } -} - -fn export(repo_path: &String, cmp: &ExportOptions) { - // get the repo - let repo = parse::get_repo(repo_path, &CompressOptions::default()); - if let Err(err) = repo { - println!("get repo error: {:?}", err); - - process::exit(1); - } - - let mut repo = repo.unwrap(); - - // export the compress - println!("export repo: {}", repo.id); - export::export_repo(&mut repo, cmp); - - println!("successfully exported repo: {}", repo.id); -} - -fn merge_repo(repo_path: &String, cmp: &CompressOptions) { - // get old repo - let repo = parse::get_repo(repo_path, &cmp); - if let Err(err) = repo { - println!("get repo error: {:?}", err); - process::exit(1); - } - let mut repo = repo.unwrap(); - - // parse new repo - let nrepo = parse::force_parse_repo(repo_path, &cmp); - if let Err(err) = nrepo { - println!("parse repo error: {:?}", err); - process::exit(1); - } - let nrepo = nrepo.unwrap(); - - repo.merge_with(&nrepo); - repo.save_to_cache(); - - println!("successfully merge repo: {}", repo.id); -} diff --git a/src/compress/compress.rs b/src/compress/compress.rs deleted file mode 100644 index e1fdb67b..00000000 --- a/src/compress/compress.rs +++ /dev/null @@ -1,1000 +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. - -use std::collections::HashMap; -use std::error::Error; -use std::ops::Add; - -use async_recursion::async_recursion; -// Add these imports at the beginning of your file - -use types::types::{ - CalledType, Identity, KeyValueType, Repository, ToCompressFunc, ToCompressType, -}; - -use crate::compress::llm::compress; -use crate::compress::llm::ToCompress; - -use crate::compress::types; -use crate::config::CONFIG; -use crate::storage::cache::get_cache; -use crate::storage::cache::load_repo; - -use super::types::types::Module; -use super::types::types::ToCompressVar; -use super::types::types::Variant; - -pub fn from_json(id: &str, json: &str) -> Result> { - let mut f: Repository = serde_json::from_str(json)?; - if f.id == "" { - f.id = id.to_string(); - } - if f.graph.is_none() { - //return err - return Err(Box::new(std::io::Error::new( - std::io::ErrorKind::Other, - "graph is None", - ))); - } - f.save_to_cache(); - Ok(f) -} - -pub fn is_externa_mod(modpath: &str) -> bool { - return modpath == "" || modpath.contains("@"); -} - -pub async fn compress_all(repo: &mut Repository) { - let mut to_compress_func = Vec::new(); - let mut to_compress_type = Vec::new(); - let mut to_compress_var = Vec::new(); - - for (mpath, _mod) in &repo.modules { - if is_externa_mod(mpath) { - // NOTICE: empty dir means it's a external module, which is only used for lookup symbols - continue; - } - for (_, pkg) in &_mod.packages { - for (_, func) in &pkg.functions { - let id = func.id(); - to_compress_func.push(id) - } - - for (_, _type) in &pkg.types { - let id = _type.id(); - to_compress_type.push(id) - } - - for (_, var) in &pkg.vars { - let id = var.id(); - to_compress_var.push(id) - } - } - } - - for id in to_compress_var { - let mut m: HashMap = HashMap::new(); - cascade_compress_variable(&id, repo, &mut m).await; - } - - for id in to_compress_func { - let mut m: HashMap = HashMap::new(); - cascade_compress_function(&id, repo, &mut m).await; - } - - for id in to_compress_type { - let mut m: HashMap = HashMap::new(); - cascade_compress_struct(&id, repo, &mut m).await; - } - - for (mpath, _mod) in repo.clone().modules { - if is_externa_mod(&mpath) { - // NOTICE: empty dir means it's a external module, which is only used for lookup symbols - continue; - } - for (id, pkg) in &_mod.packages { - if pkg.compress_data.is_none() { - compress_package(&id, &mpath, repo).await; - } - } - compress_module(&mpath, repo).await; - repo.save_to_cache(); - } -} - -pub async fn compress_module(modpath: &str, repo: &mut Repository) { - let module = repo.modules.get_mut(modpath).unwrap(); - let compress_data = module.to_compress(); - let compress_data = - llm_compress_module(serde_json::to_string(&compress_data).unwrap().as_str()).await; - if compress_data.is_none() { - return; - } - let compress_data = compress_data.unwrap(); - module.compress_data = Some(compress_data); - println!("finish to compress module: {}", module.name); -} - -pub async fn compress_package(id: &str, module: &str, repo: &mut Repository) { - let pkg = repo - .modules - .get_mut(module) - .unwrap() - .packages - .get_mut(id) - .unwrap(); - let compress_data = pkg.to_compress(); - let compress_data = - llm_compress_package(serde_json::to_string(&compress_data).unwrap().as_str()).await; - if compress_data.is_none() { - return; - } - let compress_data = compress_data.unwrap(); - pkg.compress_data = Some(compress_data); - repo.save_to_cache(); - println!("finish to compress package: {}", id); -} - -pub fn should_compress(id: &Identity, repo: &Repository) -> bool { - if !id.inside() || id.pkg_path.contains("kitex_gen/") || id.pkg_path.contains("hertz_gen/") { - return false; - } else { - let fi = repo.get_file_line(id); - for exclude in &CONFIG.exclude_dirs { - // check prefix - if fi.file.starts_with(exclude) { - return false; - } - } - return true; - } -} - -const MAX_REFERS: usize = 4; - -pub async fn cascade_compress_variable( - id: &Identity, - repo: &mut Repository, - m: &mut HashMap, -) { - if !should_compress(id, &repo) { - return; - } - println!("start to comprees:{:?}", id); - let mut refs = Vec::new(); - let var_opt = { - let v = repo.get_var(id); - if v.is_none() { - eprintln!("not found var, id {:?}", id); - return; - } - v.unwrap().clone() - }; - - if let Some(d) = &var_opt.compress_data { - if d != "" { - return; - } - } - - let graph = repo.graph.as_ref().unwrap(); - let var_node = graph.get(&String::from(id)); - if var_node.is_none() { - eprintln!("var node not found, id {:?}", id); - return; - } - let var_node = var_node.unwrap(); - if let Some(nfs) = &var_node.references { - for (i, v) in nfs.iter().enumerate() { - if i >= MAX_REFERS { - eprintln!("too many references for {:?}", id); - break; - } - let c = repo.get_id_content(&v.id()); - if c.is_none() { - eprintln!("{:?} node is not found", v); - continue; - } - let elem = c.unwrap(); - refs.push(elem); - } - } - - // compress type if any - let ty: Option = if let Some(id) = &var_opt.type_id { - cascade_compress_struct(id, repo, m).await; - let tt = repo.get_type(id).clone(); - if tt.is_none() { - eprintln!("not found ty {:?}", id); - None - } else { - tt.unwrap().compress_data.clone() - } - } else { - None - }; - - if let Some(c) = llm_compress_var(&var_opt.content, refs, &ty).await { - if c != "" { - let var = repo - .modules - .get_mut(&id.mod_path) - .unwrap() - .packages - .get_mut(id.pkg_path.as_str()) - .unwrap() - .vars - .get_mut(id.name.as_str()) - .unwrap(); - let content = c.trim().to_string(); - var.compress_data = Some(content); - repo.save_to_cache(); - return; - } - } - panic!("empty compress for {:?}", id) -} - -#[async_recursion] -pub async fn cascade_compress_function( - id: &Identity, - repo: &mut Repository, - m: &mut HashMap, -) { - if !should_compress(id, repo) { - return; - } - println!("start to comprees:{:?}", id); - let mut to_compress_func = Vec::new(); - let mut to_compress_type = Vec::new(); - let mut to_compress_var = Vec::new(); - - { - let func_opt = repo.get_func(id); - if func_opt.is_none() { - eprintln!("not found function, id {:?}", id); - return; - } - let func_opt = func_opt.unwrap(); - - // Already compress path - if let Some(d) = &func_opt.compress_data { - if d != "" { - return; - } - } - - // vars - if let Some(vars) = &func_opt.global_vars { - for (f) in vars { - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_var.push(id); - } - } - - // Start to compress internal function callls - if let Some(calls) = &func_opt.function_calls { - for f in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive function: {}", f.name); - continue; - } - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_func.push(id); - } - } - - // Start to compress internal method_calls - if let Some(calls) = &func_opt.method_calls { - for f in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive method: {}", f.name); - continue; - } - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_func.push(id); - } - } - - // params - if let Some(calls) = &func_opt.params { - for f in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive function: {}", f.name); - continue; - } - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_type.push(id); - } - } - - // rets - if let Some(calls) = &func_opt.results { - for f in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive function: {}", f.name); - continue; - } - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_type.push(id); - } - } - - // types - if let Some(calls) = &func_opt.types { - for f in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive function: {}", f.name); - continue; - } - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a calling cycle: {}", compress_key); - continue; - } - let id = f.clone(); - m.insert(compress_key, true); - to_compress_type.push(id); - } - } - - // receiver - if let Some(f) = &func_opt.receiver { - let compress_key = String::from(&f.type_id); - if !m.get(&compress_key).is_some() { - let id = f.type_id.clone(); - m.insert(compress_key, true); - to_compress_type.push(id); - } - } - } - - // Recursive call - for f_id in to_compress_var { - cascade_compress_variable(&f_id, repo, m).await; - m.remove(&f_id.to_string()); - } - - for f_id in to_compress_func { - cascade_compress_function(&f_id, repo, m).await; - m.remove(&f_id.to_string()); - } - - for t_id in to_compress_type { - cascade_compress_struct(&t_id, repo, m).await; - m.remove(&t_id.to_string()); - } - - let mut func_map = HashMap::new(); - let mut type_map = HashMap::new(); - let mut var_map = HashMap::new(); - let mut inputs_map = HashMap::new(); - let mut outputs_map = HashMap::new(); - let mut receiver: Option = None; - - let content = { - let func_opt = repo.get_func(id).unwrap(); - - // func body vars - if let Some(vars) = &func_opt.global_vars { - for (f) in vars { - let var = repo.get_var(f); - if var.is_none() { - eprintln!("not found var, id {:?}", id); - continue; - } - let var = var.unwrap(); - if var.compress_data.is_none() || var.compress_data.as_ref().unwrap() == "" { - eprintln!("var {}.{} is not compressed!!!", var.pkg_path, var.name); - var_map.insert(f.name.clone(), var.content.clone()); - } else { - var_map.insert(f.name.clone(), var.compress_data.clone().unwrap()); - } - } - } - - // func body types - if let Some(types) = &func_opt.types { - for (f) in types { - let sub_type = repo.get_type(f); - if sub_type.is_none() { - eprintln!("not found type, id {:?}", id); - continue; - } - let sub_type = sub_type.unwrap(); - if sub_type.compress_data.is_none() - || sub_type.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub type {}.{} is not compressed!!!", - sub_type.pkg_path, sub_type.name - ); - type_map.insert(sub_type.name.clone(), sub_type.content.clone()); - } else { - type_map.insert( - sub_type.name.clone(), - sub_type.compress_data.clone().unwrap(), - ); - } - } - } - - // params - if let Some(types) = &func_opt.params { - for (f) in types { - let sub_type = repo.get_type(f); - if sub_type.is_none() { - eprintln!("not found type, id {:?}", id); - continue; - } - let sub_type = sub_type.unwrap(); - if sub_type.compress_data.is_none() - || sub_type.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub type {}.{} is not compressed!!!", - sub_type.pkg_path, sub_type.name - ); - inputs_map.insert(sub_type.name.clone(), sub_type.content.clone()); - } else { - inputs_map.insert( - sub_type.name.clone(), - sub_type.compress_data.clone().unwrap(), - ); - } - } - } - - // results - if let Some(types) = &func_opt.results { - for (f) in types { - let sub_type = repo.get_type(f); - if sub_type.is_none() { - eprintln!("not found type, id {:?}", id); - continue; - } - let sub_type = sub_type.unwrap(); - if sub_type.compress_data.is_none() - || sub_type.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub type {}.{} is not compressed!!!", - sub_type.pkg_path, sub_type.name - ); - outputs_map.insert(sub_type.name.clone(), sub_type.content.clone()); - } else { - outputs_map.insert( - sub_type.name.clone(), - sub_type.compress_data.clone().unwrap(), - ); - } - } - } - - // receiver - if let Some(f) = &func_opt.receiver { - let sub_type = repo.get_type(&f.type_id); - if sub_type.is_none() { - eprintln!("not found type, id {:?}", f.type_id); - } else { - let sub_type = sub_type.unwrap(); - if sub_type.compress_data.is_none() - || sub_type.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub type {}.{} is not compressed!!!", - sub_type.pkg_path, sub_type.name - ); - receiver = Some(sub_type.content.clone()); - } else { - receiver = Some(sub_type.compress_data.clone().unwrap()); - } - } - } - - // Add the compress data of internal function calls - if let Some(calls) = &func_opt.function_calls { - for (f) in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive function: {}", f.name); - continue; - } - - let sub_function = repo.get_func(f); - if sub_function.is_none() { - eprintln!("not found function, id {:?}", id); - continue; - } - let sub_function = sub_function.unwrap(); - if sub_function.compress_data.is_none() - || sub_function.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub function {}.{} is not compressed!!!", - sub_function.pkg_path, sub_function.name - ); - func_map.insert(sub_function.name.clone(), sub_function.content.clone()); - } else { - func_map.insert( - sub_function.name.clone(), - sub_function.compress_data.clone().unwrap(), - ); - } - } - } - - // Add the compress data of internal method calls - if let Some(calls) = &func_opt.method_calls { - for (f) in calls { - if f.name == id.name && f.pkg_path == id.pkg_path { - eprintln!("find a recursive method: {}", f.name); - continue; - } - - let sub_function = repo.get_func(id); - if sub_function.is_none() { - eprintln!("not found function, id {:?}", id); - continue; - } - let sub_function = sub_function.unwrap(); - if sub_function.compress_data.is_none() - || sub_function.compress_data.as_ref().unwrap() == "" - { - eprintln!( - "sub function {}.{} is not compressed!!!", - sub_function.pkg_path, sub_function.name - ); - func_map.insert(sub_function.name.clone(), sub_function.content.clone()); - } else { - func_map.insert( - sub_function.name.clone(), - sub_function.compress_data.clone().unwrap(), - ); - } - } - } - - if func_opt.content.is_empty() { - eprintln!("content is empty skip it"); - Some("".to_string()) - } else { - llm_compress_func( - func_opt.content.as_str(), - func_map, - type_map, - var_map, - inputs_map, - outputs_map, - receiver, - ) - .await - } - }; - - let func_opt = repo - .modules - .get_mut(&id.mod_path) - .unwrap() - .packages - .get_mut(id.pkg_path.as_str()) - .unwrap() - .functions - .get_mut(id.name.as_str()) - .unwrap(); - if let Some(c) = content { - if c != "" { - let content = c.trim().to_string(); - func_opt.compress_data = Some(content); - repo.save_to_cache(); - return; - } - } - panic!("empty compress for {:?}", id) -} - -#[async_recursion] -pub async fn cascade_compress_struct( - id: &Identity, - repo: &mut Repository, - m: &mut HashMap, -) { - if !should_compress(id, &repo) { - return; - } - println!("start to comprees:{:?}", id); - let mut to_compress = Vec::new(); - let mut to_compress_func = Vec::new(); - { - let md = repo.modules.get(&id.mod_path); - if md.is_none() { - eprintln!("not found module, id {:?}", id); - return; - } - let p = md.unwrap().packages.get(id.pkg_path.as_str()); - if p.is_none() { - eprintln!("not found package, id {:?}", id); - return; - } - let struct_opt = p.unwrap().types.get(id.name.as_str()); - if struct_opt.is_none() { - eprintln!("not found struct, id {:?}", id); - return; - } - let stru = struct_opt.unwrap(); - - // Already compress path - if let Some(d) = &stru.compress_data { - if d != "" { - return; - } - } - - // Start to compress sub struct - if let Some(sub) = &stru.sub_struct { - for f in sub { - // TODO: compress extrenal symbol too - if !repo.contains(f) { - continue; - } - - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a struct embeding cycle: {}", compress_key); - continue; - } - - let id = f.clone(); - to_compress.push(id); - m.insert(compress_key, true); - } - } - - // Start to compress inline struct - if let Some(inline) = &stru.inline_struct { - for f in inline { - // TODO: compress extrenal symbol too - if !repo.contains(f) { - continue; - } - - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a struct embeding cycle: {}", compress_key); - continue; - } - - let id = f.clone(); - to_compress.push(id); - m.insert(compress_key, true); - } - } - - // Start to compress related methods - if let Some(methods) = &stru.methods { - for (_, f) in methods { - if !repo.contains(f) { - continue; - } - - let compress_key = String::from(f); - if m.get(&compress_key).is_some() { - eprintln!("find a struct embeding cycle: {}", compress_key); - continue; - } - - let id = f.clone(); - to_compress_func.push(id); - m.insert(compress_key, true); - } - } - } - - // Recursive call - for f_id in to_compress { - cascade_compress_struct(&f_id, repo, m).await; - m.remove(&f_id.to_string()); - } - for f_id in to_compress_func { - cascade_compress_function(&f_id, repo, m).await; - m.remove(&f_id.to_string()); - } - - // Recursive compressing has done, start to compress myself. - let mut type_map = HashMap::new(); - let mut method_map = HashMap::new(); - let content = { - let _type = repo.get_type(id); - if _type.is_none() { - eprintln!("not found type, id {:?}", id); - return; - } - let _type = _type.unwrap(); - - // Add the compress data of sub struct - if let Some(subs) = &_type.sub_struct { - for (f) in subs { - let sub = repo.get_type(f); - if sub.is_none() { - eprintln!("do not get tye type in the pkg: {:?}", f); - continue; - } - let compress_data = sub.unwrap().compress_data.clone(); - if compress_data.is_none() || compress_data.as_ref().unwrap() == "" { - type_map.insert(f.name.clone(), sub.unwrap().content.clone()); - } else { - type_map.insert(f.name.clone(), compress_data.unwrap()); - } - } - } - - // Add the compress data of inline struct - if let Some(inlines) = &_type.inline_struct { - for (f) in inlines { - let inline = repo.get_type(f); - if inline.is_none() { - eprintln!("do not get tye type in the pkg: {:?}", f); - continue; - } - let compress_data = inline.unwrap().compress_data.clone(); - if compress_data.is_none() || compress_data.as_ref().unwrap() == "" { - eprint!("do not get the compress data of the inline struct: {:?}", f); - type_map.insert(f.name.clone(), inline.unwrap().content.clone()); - } else { - type_map.insert(f.name.clone(), compress_data.unwrap()); - } - } - } - - // Add the compress data of related methods(We have done function and methods compress before, so don't worry about it.) - if let Some(methods) = &_type.methods { - for (k, f) in methods { - if !repo.contains(f) { - continue; - } - let func = repo.get_func(f); - if func.is_none() || func.as_ref().unwrap().compress_data.is_none() { - eprintln!("do not get the method of the type, id: {:?}", f); - method_map.insert(k.clone(), func.unwrap().content.clone()); - } else { - method_map.insert(k.clone(), func.unwrap().compress_data.clone().unwrap()); - } - } - } - - if _type.content.is_empty() { - eprintln!("content is empty skip it"); - Some("".to_string()) - } else { - llm_compress_type(_type.content.as_str(), type_map, method_map).await - } - }; - - let mut type_opt = repo - .modules - .get_mut(&id.mod_path) - .unwrap() - .packages - .get_mut(id.pkg_path.as_str()) - .unwrap() - .types - .get_mut(id.name.as_str()) - .unwrap(); - if let Some(c) = content { - if c != "" { - let content = c.trim().to_string(); - type_opt.compress_data = Some(content); - repo.save_to_cache(); - return; - } - } - // panic!("empty compress for {:?}", id) -} - -async fn llm_compress_module(m: &str) -> Option { - let compressing = ToCompress::ToCompressModule(m.to_string()); - let compress_data = compress(&compressing).await; - Option::from(compress_data) -} - -async fn llm_compress_package(pkg: &str) -> Option { - let compress_pkg = ToCompress::ToCompressPkg(pkg.to_string()); - let compress_data = compress(&compress_pkg).await; - Option::from(compress_data) -} - -async fn llm_compress_var(var: &String, refs: Vec, ty: &Option) -> Option { - let compress_var = ToCompressVar { - content: var, - r#type: ty, - refers: refs, - }; - let to_compress_str = serde_json::to_string(&compress_var).unwrap(); - let compress_enum = ToCompress::ToCompressVar(to_compress_str); - let compress_data = compress(&compress_enum).await; - Some(compress_data) -} - -async fn llm_compress_func( - func: &str, - funcs: HashMap, - types: HashMap, - vars: HashMap, - inputs: HashMap, - outputs: HashMap, - receiver: Option, -) -> Option { - let mut compress_func = ToCompressFunc { - content: func.to_string(), - related_func: None, - related_type: None, - related_var: None, - receiver: None, - params: None, - results: None, - }; - if !funcs.is_empty() { - let mut related_func = Vec::new(); - for (name, compressed_data) in funcs { - let re = CalledType { - call_name: name, - description: compressed_data, - }; - related_func.push(re); - } - compress_func.related_func = Some(related_func); - } - if !types.is_empty() { - let mut related_type = Vec::new(); - for (name, compressed_data) in types { - let re = KeyValueType { - name: name, - description: compressed_data, - }; - related_type.push(re); - } - compress_func.related_type = Some(related_type); - } - if !vars.is_empty() { - let mut related_var = Vec::new(); - for (name, compressed_data) in vars { - let re = KeyValueType { - name: name, - description: compressed_data, - }; - related_var.push(re); - } - compress_func.related_var = Some(related_var); - } - if !inputs.is_empty() { - let mut params = Vec::new(); - for (name, compressed_data) in inputs { - let re = KeyValueType { - name: name, - description: compressed_data, - }; - params.push(re); - } - compress_func.params = Some(params); - } - if !outputs.is_empty() { - let mut results = Vec::new(); - for (name, compressed_data) in outputs { - let re = KeyValueType { - name: name, - description: compressed_data, - }; - results.push(re); - } - compress_func.results = Some(results); - } - if let Some(r) = receiver { - compress_func.receiver = Some(r); - } - let to_compress_str = serde_json::to_string(&compress_func).unwrap(); - let compress_func_enum = ToCompress::ToCompressFunc(to_compress_str); - let compress_data = compress(&compress_func_enum).await; - Option::from(compress_data) -} - -// depends on the compressed info of methods, so call llm_compress_func first. -async fn llm_compress_type( - func: &str, - extra_type: HashMap, - related_methods: HashMap, -) -> Option { - let mut compress_type = ToCompressType { - content: func.to_string(), - related_methods: None, - related_types: None, - }; - if !extra_type.is_empty() { - let mut r_type = Vec::new(); - for (name, compressed_data) in extra_type { - let re = KeyValueType { - name, - description: compressed_data, - }; - r_type.push(re); - } - compress_type.related_types = Some(r_type); - } - - if !related_methods.is_empty() { - let mut r_methods = Vec::new(); - for (name, compressed_data) in related_methods { - let re = KeyValueType { - name, - description: compressed_data, - }; - r_methods.push(re); - } - compress_type.related_methods = Some(r_methods); - } - - let to_compress_str = serde_json::to_string(&compress_type).unwrap(); - let compress_type_enum = ToCompress::ToCompressType(to_compress_str); - let compress_data = compress(&compress_type_enum).await; - Option::from(compress_data) -} - -fn pkg_name_to_repo_name(s: &str) -> String { - let parts: Vec<_> = s.split('/').collect(); - - match parts.len() { - 0 | 1 | 2 => String::from(s), - _ => parts[1..3].join("/"), - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_pkg_name_to_repo_name() { - assert_eq!(pkg_name_to_repo_name("a/b/c"), "b/c"); - assert_eq!(pkg_name_to_repo_name("a/b/c/d"), "b/c"); - assert_eq!(pkg_name_to_repo_name("rust"), "rust"); - } -} diff --git a/src/compress/llm/coze.rs b/src/compress/llm/coze.rs deleted file mode 100644 index 363fb32e..00000000 --- a/src/compress/llm/coze.rs +++ /dev/null @@ -1,185 +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. - -use core::panic; -use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONNECTION, CONTENT_TYPE, HOST}; -use serde::{Deserialize, Serialize}; -use serde_json::{from_str, to_string, to_string_pretty}; -use std::ops::Add; -use std::{collections::HashMap, time::Duration}; - -use crate::{compress::llm::prompts::make_compress_prompt, config::CONFIG}; - -use super::ToCompress; - -#[derive(Serialize, Deserialize, Debug)] -struct Message { - role: String, - r#type: String, - content: String, - content_type: String, -} - -#[derive(Serialize, Deserialize, Debug)] -struct StreamResponse { - event: String, - message: Message, - conversation_id: String, - index: i32, - is_finish: bool, -} - -#[derive(Serialize, Deserialize, Debug)] -struct Response { - messages: Vec, - conversation_id: String, - code: i64, - msg: String, -} - -#[derive(Serialize, Deserialize, Debug)] -struct BotQuery { - bot_id: String, - user: String, - query: String, - stream: bool, -} - -fn panic_error(msg: &str, res: &reqwest::Response) { - let headers: HashMap = res - .headers() - .iter() - .map(|(k, v)| (k.to_string(), String::from(v.to_str().unwrap_or_default()))) - .collect(); - panic!( - "{}.\nstatus code is {}\nheader is {:?}\n", - msg, - res.status(), - headers, - ); -} - -fn make_lang_prompt() -> &'static str { - match &CONFIG.language { - crate::config::Language::Chinese => "现在,请使用中文解释以下输入:\n", - crate::config::Language::English => { - "Now, please use English to explain the following input:\n" - } - } -} - -pub async fn coze_compress(to_compress: ToCompress) -> String { - let mut headers = HeaderMap::new(); - - let auth = format!("Bearer {}", CONFIG.coze_api_token.as_ref().unwrap()); - headers.insert( - "Authorization", - HeaderValue::from_str(auth.as_str()).unwrap(), - ); - headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); - headers.insert(ACCEPT, HeaderValue::from_static("*/*")); - headers.insert(CONNECTION, HeaderValue::from_static("keep-alive")); - - let client = reqwest::Client::new(); - - let bot_id = CONFIG.coze_bot_id.as_ref().unwrap().clone(); - let to_compress_str = make_compress_prompt(&to_compress); - let bot_query = BotQuery { - bot_id: bot_id.to_string(), - user: "welkey".to_string(), - query: to_compress_str.to_string(), - stream: true, - }; - - println!( - "[coze_compress] request: {}", - to_string(&bot_query).unwrap() - ); - - let rb = client - .post("https://api.coze.com/open_api/v2/chat") - .headers(headers) - .json(&bot_query); - - let mut res = match rb.send().await { - Ok(r) => r, - Err(e) => { - panic!("http request faield: {:?}", e); - } - }; - let status = res.status(); - if status != 200 { - panic_error("coze request failed.", &res); - } - - // streaming repsonse - // allocate bytes buffer - let mut sse_body = Vec::new(); - loop { - match res.chunk().await { - Ok(c) => { - if let Some(chunk) = c { - // println!("chunk: {:?}", std::str::from_utf8(&chunk).unwrap()); - sse_body.extend_from_slice(&chunk); - } else { - break; - } - } - Err(e) => { - panic_error(format!("coze request failed: {:?}", e).as_str(), &res); - } - } - } - - let sse_body = std::str::from_utf8(&sse_body).unwrap(); - let mut output: String = String::new(); - - // handle SSE datas - for line in sse_body.lines() { - // println!("[coze_compress] receive chunk: {}", line); - - if line.len() == 0 || !line.starts_with("data:") { - continue; - } - let data = line.strip_prefix("data:").unwrap().trim(); - if data.len() == 0 { - continue; - } - let response: StreamResponse = - from_str(data).expect(format!("{} is not a valid json", data).as_str()); - - if response.is_finish || response.event != "message" { - break; - } - - if &response.message.r#type != "answer" { - continue; - } - output += &response.message.content; - } - - println!("[coze_compress] response body: {}", output); - - // unary response - // let body = res.bytes().await.unwrap(); - // let resp: Response = from_str(std::str::from_utf8(&body).unwrap()).unwrap(); - // if resp.code != 0 { - // panic!("code is {}, msg is {}", resp.code, resp.msg); - // } - // for message in resp.messages { - // output += &message.content; - // } - - output -} diff --git a/src/compress/llm/maas.rs b/src/compress/llm/maas.rs deleted file mode 100644 index 5e38dd4d..00000000 --- a/src/compress/llm/maas.rs +++ /dev/null @@ -1,84 +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. - -use std::{path::Path, process::Command, time::SystemTime}; - -use crate::config::CONFIG; - -use super::{prompts::make_compress_prompt, ToCompress}; - -pub fn maas_compress_py(to_compress: &ToCompress, model_name: &str) -> String { - let message = make_compress_prompt(to_compress); - use std::io::Write; - use std::process::{Command, Stdio}; - - let command = "python3"; - let path = format!("{}/maas/model_call.py", &CONFIG.work_dir); - println!("executing command: {} {} {}", command, path, model_name); - - // Create a new command process with piped stdin - let mut child = Command::new(command) - .arg(path) - .arg(model_name) - .stdin(Stdio::piped()) - .stdout(Stdio::piped()) - .spawn() - .expect("Failed to spawn command"); - - // Write the message to the child process's stdin - if let Some(mut stdin) = child.stdin.take() { - stdin - .write_all(message.as_bytes()) - .expect("Failed to write to stdin"); - } - - // Wait for the child process to complete - let output = child.wait_with_output().expect("Failed to read stdout"); - // Check if the command was successful - if output.status.success() { - // Print the standard output - let stdout = String::from_utf8_lossy(&output.stdout).to_string(); - println!("stdout: {}", stdout); - return stdout; - } else { - // Print the standard error - let stderr = String::from_utf8_lossy(&output.stderr); - panic!("Error: {}", stderr); - } -} - -pub async fn maas_compress_http(to_compress: &ToCompress, model_name: &str, url: &str) -> String { - let message = make_compress_prompt(to_compress); - let url = format!("http://{}", url); - let client = reqwest::Client::new(); - let response = client - .post(&url) - .json(&serde_json::json!({"model": model_name, "prompt": message})) - .send() - .await - .expect("Failed to send request"); - - if response.status().is_success() { - let body = response.text().await.expect("Failed to read response body"); - // get json key "ans" - let v: serde_json::Value = serde_json::from_str(&body).expect("Failed to parse response"); - if let Some(ans) = v.get("ans") { - return ans.as_str().unwrap().to_string(); - } else { - panic!("Failed to get key 'ans' from response"); - } - } else { - panic!("Failed to read response body"); - } -} diff --git a/src/compress/llm/mod.rs b/src/compress/llm/mod.rs deleted file mode 100644 index c7b64a84..00000000 --- a/src/compress/llm/mod.rs +++ /dev/null @@ -1,50 +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. - -use crate::config::CONFIG; -pub mod coze; -pub mod maas; -pub mod ollama; -pub mod prompts; - -#[derive(Clone, Debug)] -pub enum ToCompress { - ToCompressFunc(String), - ToCompressType(String), - ToCompressVar(String), - ToCompressPkg(String), - ToCompressModule(String), - ToMergeRustPkg(String), - ToValidateRust(String), -} - -pub async fn compress(to_compress: &ToCompress) -> String { - match CONFIG.api_type.as_str() { - "coze" => coze::coze_compress(to_compress.clone()).await, - "maas" => { - if &CONFIG.mass_http_url == "" { - maas::maas_compress_py(to_compress, CONFIG.maas_model_name.as_str()) - } else { - maas::maas_compress_http( - to_compress, - CONFIG.maas_model_name.as_str(), - &CONFIG.mass_http_url, - ) - .await - } - } - "ollama" => ollama::ollama_compress(to_compress.clone()).await, - _ => panic!("Unknown API type {}", CONFIG.api_type), - } -} diff --git a/src/compress/llm/ollama.rs b/src/compress/llm/ollama.rs deleted file mode 100644 index 0b7cd07f..00000000 --- a/src/compress/llm/ollama.rs +++ /dev/null @@ -1,72 +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. - -use serde::{Deserialize, Serialize}; - -use crate::{compress::llm::prompts::make_compress_prompt, config::CONFIG}; - -use super::ToCompress; - -pub async fn ollama_compress(to_compress: ToCompress) -> String { - let request_url = format!("http://localhost:11434/api/generate"); - let to_compress_str = make_compress_prompt(&to_compress); - let model_name = CONFIG.ollama_model.as_ref().unwrap().clone(); - - println!("use prompt:\n{}", to_compress_str); - let req_body: OllamaReq = OllamaReq { - model: model_name, - prompt: to_compress_str, - }; - let client = reqwest::Client::new(); - let mut response = client - .post(&request_url) - .json(&req_body) - .send() - .await - .unwrap(); - - let mut output = String::new(); - while let Ok(Some(chunk)) = response.chunk().await { - let result = serde_json::from_slice(&chunk); - if result.is_err() { - break; - } - - let value: OllamaResp = result.unwrap(); - - if !value.response.is_empty() { - output.push_str(value.response.as_str()); - } - - if value.done { - break; - } - } - - output -} - -#[derive(Serialize, Deserialize, Debug)] -struct OllamaReq { - model: String, - prompt: String, -} - -#[derive(Serialize, Deserialize, Debug)] -struct OllamaResp { - model: String, - created_at: String, - response: String, - done: bool, -} diff --git a/src/compress/llm/prompts.rs b/src/compress/llm/prompts.rs deleted file mode 100644 index 3c439832..00000000 --- a/src/compress/llm/prompts.rs +++ /dev/null @@ -1,781 +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. - -use crate::config::{Language, CONFIG}; - -use super::ToCompress; -use paste::paste; - -// choose the prompt based on the language -macro_rules! choose_prompt_lang { - ($prompt: ident) => { - // return const {{$prompt}}_ZH or {{$prompt}}_EN - match &CONFIG.language { - Language::Chinese => paste! { [<$prompt _ZH>] }, - Language::English => paste! { [<$prompt _EN>] }, - } - }; -} - -pub fn make_compress_prompt(to_compress: &ToCompress) -> String { - match to_compress { - ToCompress::ToCompressModule(f) => { - choose_prompt_lang!(PROMPT_COMPRESS_MOD).replace("{{DATA}}", f) - } - ToCompress::ToCompressType(t) => { - choose_prompt_lang!(PROMPT_COMPRESS_TYPE).replace("{{DATA}}", t) - } - ToCompress::ToCompressFunc(f) => { - choose_prompt_lang!(PROMPT_COMPRESS_FUNC).replace("{{DATA}}", f) - } - ToCompress::ToCompressVar(v) => { - choose_prompt_lang!(PROMPT_COMPRESS_VAR).replace("{{DATA}}", v) - } - ToCompress::ToCompressPkg(p) => { - choose_prompt_lang!(PROMPT_COMPRESS_PKG).replace("{{DATA}}", p) - } - ToCompress::ToMergeRustPkg(p) => todo!(), - ToCompress::ToValidateRust(p) => todo!(), - } -} - -const PROMPT_COMPRESS_TYPE_ZH: &str = r##" -# 角色 -你是一名熟练的程序员,你擅长阅读理解并总结概括代码。你的目标是通过使这些API更易理解,帮助对这些API了解较少的工程师。 - -# 提示 - -## 输入格式(JSON) -包含 一个具体的类型定义 及 其依赖的其他语言符号描述: -- "Content": 类型定义, 格式为字符串 -- "Related_methods": 格式为数组。其中每个对象表示此类型上定义的相关方法: - - "CallName": 方法名,格式为字符串 - - "Description": 该方法的代码或总结 -- "Related_types": 格式为数组。该数组中的每个对象表示在该类型定义中依赖的其他类型: - - "CallName": 类型名,格式为字符串 - - "Description": 该类型的代码或总结,格式为字符串 - -## 输出格式(text) -直接输出总结内容。不要输出JSON(IMPORTANT)! - -## 总结内容 -- 该类型的主要功能和用途 -- 每个字段的意义(如果有) - -# 约束 -- 禁止谈论JSON的格式,不允许披露原始JSON字符串或其中的任何片段。 -- 你的总结应不包含任何代码,也不应该包括“Related_methods”和“Related_types”中的任何信息。 --直接以总结类型名称开始你的回答。 -- (IMPORTANT)输出内容必须符合500字符限制。 - -# 具体例子 - -## 输入 -{ - "Content": "type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}", - "Related_methods": [ - { - "Name": "Store", - "Description": "Store用于在存储具有特定ID的会话之前锁定分片,然后在操作完成后解锁。" - }, - { - "Name": "Delete", - "Description": "Delete用于从分片中删除通过其ID标识的会话,通过在删除之前锁定和之后解锁来确保线程安全。" - }, - { - "Name": "Load", - "Description": "Load函数用于使用给定的会话ID从分片中检索会话,并返回会话以及一个指示会话是否找到的布尔值。" - } - ], - "Related_types": [ - { - "Name": "Session", - "Description": "定义的类型是一个名为“Session”的接口,它概述了会话管理的结构。它包括三个方法:“IsValid”检查会话当前是否有效并返回布尔值;“Get”检索指定键的值,键和值都是interface类型,允许使用不同类型的值和键;“WithValue”设置特定键的值并返回反映此更改的新会话实例,有效地允许会话在保持不变性的同时进行修改。此接口没有相关的方法或类型。" - }, - { - "Name": "SessionID", - "Description": "名为SessionID的类型定义为无符号的64位整数。此类型没有指定的相关方法或相关类型。" - } - ] -} - -## 输出 -shard类型是一个结构体,包含一个读写锁和一个将会话ID与会话关联的映射,用于高效的会话管理。它包括如下字段: - - Session:定义了一个用于管理会话的结构的接口。它允许检查会话是否有效,检索和设置会话中的键值。 - - SessionID:定义为无符号的64位整数,这种类型作为会话的唯一标识符。 - - -# 现在,请开始处理如下输入: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_TYPE_EN: &str = r##" -# Character -You are a skilled programmer and you are good at reading, understanding and summarizing code. Your goal is to help engineers who know less about these apis by making them easier to understand. - -# Tips - -## Input format (JSON) -Contains a specific type definition and descriptions of other language symbols that depend on it: -- "Content": indicates the type definition. The format is a string -- "Related_methods": The format is an array. Where each object represents a related method defined on this type: - - "CallName": indicates the method name. The format is a string - - "Description": indicates the code or summary of the method -- "Related_types": The format is an array. Each object in this array represents other types that are dependent in that type definition: - - "CallName": Type name. The format is a string - - "Description": indicates the code or summary of the type. The format is a string - -## Output format (text) -Output summary content directly. Do not output JSON (IMPORTANT)! - -## Summarize the content -- The main functions and uses of this type -- The meaning of each field (if any) - -# Constraint -- It is forbidden to talk about the format of JSON, and it is not allowed to disclose the original JSON string or any fragment of it. -Your summary should not contain any code, nor should it include any information from "Related_methods" and "Related_types." -- Start your answer directly with the summary type name. -- (IMPORTANT) The output must meet the 500-character limit. - - -# Specific examples - -## Input -{ - "Content": "type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}", - "Related_methods": [ - { - "Name": "Store", - "Description": "Store is used to lock the shard before storing the session with a specific ID, and then unlock it after the operation is complete." - }, - { - "Name": "Delete", - "Description": "Delete is used to remove the session identified by its ID from the shard, ensuring thread safety by locking before deletion and unlocking after." - }, - { - "Name": "Load", - "Description": "Load function is used to retrieve the session from the shard using the given session ID, and returns the session along with a boolean value indicating whether the session is found." - } - ], - "Related_types": [ - { - "Name": "Session", - "Description": "The defined type is an interface named 'Session' that outlines the structure of session management. It includes three methods: 'IsValid' checks if the session is currently valid and returns a boolean value; 'Get' retrieves the value of a specified key, both key and value are of type interface, allowing values and keys of different types to be used; 'WithValue' sets the value of a specific key and returns a new session instance reflecting this change, effectively allowing the session to be modified while maintaining immutability. This interface has no related methods or types." - }, - { - "Name": "SessionID", - "Description": "The type named SessionID is defined as an unsigned 64-bit integer. This type has no specified related methods or related types." - } - ] -} - -## Output -The shard type is a structure that contains a read/write lock and a mapping that associates the session ID with the session for efficient session management. It includes the following fields: -- Session: Defines an interface for managing session structures. It allows you to check whether the session is valid, retrieve and set key values in the session. -- SessionID: Defined as an unsigned 64-bit integer. This type serves as the unique identifier of a session. - - -# Now, please summarize below input: - -{{DATA}} -"##; - -const PROMPT_COMPRESS_FUNC_ZH: &str = r##" -# 角色 -你是一名熟练的程序员,你擅长阅读理解并总结概括代码。你的目标是通过使这些API更易理解,帮助对这些API了解较少的工程师。 - -# 提示 - -## 输入的JSON格式 -包含 一个具体的函数定义 及 其依赖的其他语言符号描述: -- "Content": 类型定义, 格式为字符串 -- "Related_func": 格式为数组。其中每个对象表示函数体内用到的相关函数或方法: - - "CallName": 在函数体内的调用名称(函数名或类型名.方法名),格式为字符串 - - "Description": 该函数的代码或总结 -- "Related_type": 格式为数组。该数组中的每个对象表示在该函数定义(出入参、函数体内)中依赖的其他类型: - - "Name": 类型名称,格式为字符串 - - "Description": 该类型的代码或总结,格式为字符串 -- "Related_var": 格式为数组。该数组中的每个对象表示在该函数体重中依赖的其他全局变量(或常量): - - "Name": 变量名,格式为字符串 - - "Description": 该变量代码或总结,格式为字符串 -- "Receiver":(可选) 字符串。表示方法的接收者。不存在该字段表示该实体为函数 -- "Params":(可选) 格式为数组。每个对象表示函数的参数: - - "Name": 类型名,格式为字符串 - - "Description": 参数的代码或总结,格式为字符串 -- "Results":(可选) 格式为数组。每个对象表示函数的返回值: - - "Name": 类型名,格式为字符串 - - "Description": 返回值的代码或总结,格式为字符串 - -## 输出格式(text) -直接输出总结内容。不要输出JSON(IMPORTANT)! - -## 总结内容 -- 该函数的主要功能和用途 -- 该函数的每个参数的意义(如果有) - -# 约束 -- 你的总结应严格关于函数本身,禁止谈论JSON的格式,不允许披露原始JSON字符串或其中的任何片段。 -- 你的总结应不包含任何代码。 -- 直接以总结类型名称开始你的回答。 -- (IMPORTANT)输出内容必须符合500字符限制。 - -# 具体例子 - -### 输入 -{ - "Content": "func (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}", - "Receiver": [ - { - "Name": "SessionCtx", - "Description": "SessionCtx类型是一个结构体,主要用于管理会话上下文。它包含以下字段:\n- enabled:一个指向atomic.Value的指针,用于指示会话上下文是否启用。\n- storage:一个context.Context类型的值,用于存储与会话相关的上下文信息。\nSessionCtx类型的设计目的是提供一种安全且高效的方式来管理和访问会话上下文,其方法包括禁用会话、检验会话有效性、设置和获取上下文中的键值对等。" - } - ], - "Params": [ - { - "Name": "key", - "Description": "inteface{}" - } - ], - "Results": [ - { - "Name": "interface{}" - "Description": "interface{}" - } - ], - "Related_var": null, - "Related_func: [ - { - "CallName": "Value", - "Description": "Value函数用于从存储中检索与给定键相关联的值。" - } - ], -} - -### 输出 -Get函数用于从SessionCtx的存储中检索与给定键相关联的值。 -入参: -- key: 给定的键 -出参: -- 会话中存储的对应的值 - - -# 现在,请开始处理如下输入: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_FUNC_EN: &str = r##" -# Character -You are a skilled programmer and you are good at reading, understanding and summarizing code. Your goal is to help engineers who know less about these apis by making them easier to understand. - -# Tips - -## Input JSON format -Contains a specific function definition and descriptions of other language symbols on which it depends: -- "Content": indicates the type definition. The format is a string -- "Related_func": The format is an array. Where each object represents a related function or method used in the body of the function: - - "CallName": specifies the callee name in the function body (func_name or type.method_name). The format is a string - - "Description": indicates the code or summary of the function -- "Related_type": The format is an array. Each object in this array represents other types that are dependent in the function definition (input/exit parameters, function body) : - - "Name": indicates the type name. The format is a string - - "Description": indicates the code or summary of the type. The format is a string -- "Related_var": The format is an array. Each object in this array represents other global variables (or constants) that are dependent in the weight of this function: - - "Name": indicates the name of the variable. The format is a string - - "Description": indicates the code or summary of the variable. The format is a string -- "Receiver": (optional) string. Indicates the receiver of the method. The absence of this field indicates that the entity is a function -- "Params": (optional) The format is an array. Each object represents the parameters of the function: - - "Name": indicates the parameter type name. The format is a string - - "Description": indicates the code or summary of the parameter. The format is a string -- "Results": (optional) The format is an array. Each object represents the return value of the function: - - "Name": indicates the result type name. The format is a string - - "Description": indicates the code or summary of the result. The format is a string - -## Output format (text) -Output summary content directly. Do not output JSON (IMPORTANT)! - -## Summarize the content -- The main function and purpose of the function -- The meaning of each parameter of the function (if any) - -# Constraint -Your summary should be strictly about the function itself, do not talk about the format of JSON, and do not allow the disclosure of the original JSON string or any fragments of it. -- Your summary should not contain any code. -- Start your answer directly with the summary type name. -- (IMPORTANT) The output must meet the 500-character limit. - - -# Specific examples - -### Type -{ - "Content": "func (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}", - "Receiver": [ - { - "Name": "SessionCtx", - "Description": "SessionCtx is a struct type that is mainly used to manage session contexts. It includes the following fields:\n- enabled: a pointer to atomic.Value that indicates whether the session context is enabled.\n- storage: a value of type context.Context used to store context information related to the session.\nThe design purpose of the SessionCtx type is to provide a safe and efficient way to manage and access session contexts, and its methods include disabling sessions, checking session validity, setting and getting key-value pairs in the context, etc." - } - ], - "Params": [ - { - "Name": "interface{}", - "Description": "inteface{}" - } - ], - "Results": [ - { - "Name": "interface{}" - "Description": "interface{}" - } - ], - "Related_var": null, - "Related_func: [ - { - "CallName": "Value", - "Description": "Value function is used to retrieve the value associated with a given key from the store." - } - ], -} - -### Output -The Get function is used to retrieve the value associated with a given key from SessionCtx's store. -Entry: -- key: indicates the specified key -Input: -- The corresponding value stored in the session - - -# Now, please summarize below input: - -{{DATA}} -"##; - -const PROMPT_COMPRESS_VAR_ZH: &str = r##" -# 角色 -你是一名熟练的程序员,你擅长阅读理解并总结概括代码。你的目标是通过使这些API更易理解,帮助对这些API了解较少的工程师。 - -# 提示 - -## 输入格式(JSON) -包含一个 全局变量(或常量)的定义 和 引用它的其它语言节点 -- "Content": 该变量定义,格式为字符串 -- "References": 格式为数组。该数组中的每个对象表示一个引用该变量的节点: - - 改节点具体代码,格式为字符串 -- "Type":(optional) 该变量类型的总结,格式为字符串。简单类型没有该字段。 - -## 输出格式(text) -直接输出总结内容。不要输出JSON(IMPORTANT)! - -## 总结内容 -- 该变量的主要功能和用途 -- 该变量关联的主要函数或类型(如果有) - - -# 约束 -- 专注于总结lang包的基本功能,避免深入具体实现细节。 -- 编写简短且易于理解的总结,供其他工程师参考。 -- 保持与提供的输入数据一致的技术术语。 -- 输出字符限制为500字符。 - -# 示例 - -## 输入 -{ - "Content": "var bufferSizeLimit Integer = 1024", - "Type": "Integer是int整型的别名" - "Reference": [ - "func MakeBuffer(size int) []byte { if size > bufferSizeLimit { panic("over limit!") } return make([]byte, size) }", - "func SetBufferSizeLimit(limit int) []byte { bufferSizeLimit = limit }" - ] -} - -## 输出 -bufferSizeLimit是一个整数变量,初始值为整型1024,用于限制缓冲区的大小。 - - -# 现在,请开始处理如下输入: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_VAR_EN: &str = r##" -# Character -You are a skilled programmer and you are good at reading, understanding and summarizing code. Your goal is to help engineers who know less about these apis by making them easier to understand. - -# Tips - -## Input format (JSON) -Contains the definition of a global variable (or constant) and other language nodes that reference it -- "Content": This variable is defined in the format of a string -- "References": The format is an array. Each object in the array represents a node that references the variable: -- Change the node code to a string format -- "Type": (optional) Summary of the variable type. The format is a string. Simple types do not have this field. - -## Output format (text) -Output summary content directly. Do not output JSON (IMPORTANT)! - -## Summarize the content -- The main function and use of the variable -- The main function or type associated with the variable (if any) - - -# Constraint -- Focus on summarizing the basic features of the lang package and avoid delving into specific implementation details. -- Write short and easy to understand summaries for other engineers to refer to. -- Technical terms that are consistent with the input data provided. -- The output character limit is 500 characters. - - -# Examples - -## Input -{ - "Content": "var bufferSizeLimit Integer = 1024", - "Type": "Integer is an alias for the int type" - "Reference": [ - "func MakeBuffer(size int) []byte { if size > bufferSizeLimit { panic("over limit!") } return make([]byte, size) }", - "func SetBufferSizeLimit(limit int) []byte { bufferSizeLimit = limit }" - ] -} - -## Output -bufferSizeLimit is an integer variable with an initial value of integer 1024 that is used to limit the size of the buffer. - - -# Now, please summarize below input: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_PKG_ZH: &str = r##" -# 角色 -你是一名经验丰富的工程师,并深入了解其各种包。你的主要职责是利用其他开发人员提供的有关公共函数和类型的数据,简化并总结包的基本功能。你的目标是通过使这些包更易理解,帮助对这些包了解较少的工程师。 - -# 提示 - -## 输入格式(JSON) -包含 一个具体的类型定义 及 其依赖的其他语言符号描述: -- "PkgPath": 改包的import路径, 格式为字符串 -- "Functions": 格式为数组。其中每个对象表示此包内定义的公开函数和方法: - - "Name": 函数名,格式为字符串 - - "Description": 该方法的代码或总结, 格式为字符串 -- "Types": 格式为数组。该数组中的每个对象表示此包内定义的公开类型: - - "Name": 使用该类型的名称,格式为字符串 - - "Description": 该类型的代码或总结,格式为字符串 -- "Variables": 格式为数组。该数组中的每个对象表示在该包中定义的全局变量(或常量): - - "Name": 变量名,格式为字符串 - - "Description": 该变量代码或总结,格式为字符串 - -## 输出格式(text) -直接输出总结内容。不要输出JSON(IMPORTANT)! - -## 总结内容 -- 该包的主要功能和用途 -- 该包的一些关键函数和类型的描述 - - -# 约束 -- 专注于总结lang包的基本功能,避免深入具体实现细节。 -- 编写简短且易于理解的总结,供其他工程师参考。 -- 保持与提供的输入数据一致的技术术语。 -- 输出字符限制为2000字符。 - -# 示例 - -## 输入 -{ - "PkgPath": "github.com/cloudwego/localsession/backup", - "Functions": [ - { - "Description": "BackupCtx用于创建一个新的会话上下文,将会话标记为启用,并将其与给定的上下文关联。然后检查是否存在默认会话管理器,如果存在,则将创建的会话绑定到会话管理器。此过程包括根据会话ID和分片编号确定会话的适当分片,将会话存储在该分片中,并在会话管理器的选项启用时异步传输会话ID。它还涉及创建或更新标签映射以确保会话ID标签的唯一性,并使用新或修改的映射更新Pprof标签。此外,通过在存储会话之前锁定分片并在存储后解锁来保证线程安全。", - "Name": "BackupCtx", - }, - { - "Description": "RecoverCtxOnDemands用于根据需求使用备份处理程序恢复或更新上下文。它首先检查处理程序是否为nil,如果是,则返回未更改的当前上下文。该函数尝试使用CurSession检索当前会话,CurSession确定是否存在默认会话管理器并获取当前会话。如果未找到当前会话或其类型为SessionCtx,则函数返回未更改的上下文。然后使用Export方法从SessionCtx实例中检索存储并将其作为上下文返回。此存储与当前上下文一起传递给用户定义的处理程序,以可能生成新上下文并决定是否需要备份操作。如果不需要备份,则返回原始上下文。如果在预上下文中存在持久化的元信息值,函数将这些值合并到新或现有上下文中,优先考虑传入上下文而不是会话数据。这种双向合并确保所有持久化的元信息从先前的上下文传递到新或现有的上下文中。", - "Name": "RecoverCtxOnDemands", - }, - { - "Description": "DefaultOptions用于初始化具有默认值的Options结构,包括将Enable设置为false,并使用DefaultManagerOptions方法初始化ManagerOptions,分片数为100,垃圾收集间隔为10分钟,并禁用隐式异步传输。", - "Name": "DefaultOptions", - }, - { - "Description": "ClearCtx用于从默认会话管理器的分片中删除指定的会话ID(如果存在),通过检查当前例程的ID,根据该ID确定相关分片,并在找到时安全地删除会话。这还包括在启用跟踪时从Pprof标签中清除会话ID。", - "Name": "ClearCtx", - }, - { - "Description": "Init用于在启用选项时初始化会话管理器。它通过基于环境变量配置管理器的选项,终止任何现有会话以防止重叠,并创建一个新的SessionManager实例来实现。这包括初始化分片,确保分片数大于零,并在必要时启动垃圾收集以确保高效的会话管理并防止并发执行。", - "Name": "Init", - } - ], - "Types": [ - { - "Description": "\"Options\"结构包括一个名为\"Enable\"的布尔字段,并嵌入了本地会话包中的\"ManagerOptions\"。\"ManagerOptions\"专门用于指示会话管理的细节和goroutines的行为。它包括三个重要字段:\"EnableImplicitlyTransmitAsync\"、\"ShardNumber\"和\"GCInterval\"。\"EnableImplicitlyTransmitAsync\"字段是一个布尔值,便于将当前会话无缝传输到子goroutines,尽管它需要与`pprof.Do()`进行精确互动以正确操作。\"ShardNumber\"是一个整数,影响会话ID的分布,要求值大于零。\"GCInterval\"确定SessionManager中的垃圾收集频率,持续时间大于一秒钟会激活垃圾收集,值为零则关闭垃圾收集。此结构没有任何相关方法或类型。", - "Name": "Options", - }, - { - "Description": "类型`BackupHandler`是一个函数类型,接受两个参数,都是`context.Context`类型,分别表示先前和当前的上下文。它返回两个值:一个新的`context.Context`类型的上下文和一个布尔值,指示是否需要备份。此类型没有相关的方法或类型。", - "Name": "BackupHandler", - } - ], - "Variables": [ - { - "Description": "DefaultManager是一个全局变量,用于存储默认的会话管理器。它是一个指向`SessionManager`类型的指针,用于管理会话的创建、备份、恢复和清除。此变量没有相关的方法或类型。", - "Name": "DefaultManager", - } - ] -} - -## 输出 -此包位于github.com/cloudwego/localsession/backup,为应用中的会话管理提供工具,特别关注会话上下文的备份和恢复机制。它包括创建、备份、恢复和清除会话上下文的功能,以及使用默认或自定义设置初始化会话管理。 -关键函数: - - BackupCtx(ctx context.Context): 创建一个新的会话上下文,使其启用并将其与给定的上下文关联。它确保线程安全,并在配置时异步传输会话ID。 - - RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context: 使用备份处理程序根据需求恢复或更新上下文,能够合并先前上下文中的持久化元信息。 - - Init(opts Options): 使用指定的选项初始化会话管理器,确保高效的会话管理和垃圾收集。 -关键类型: - - Options: 一个结构体,包括会话管理的设置,例如启用隐式异步传输、分片数量和垃圾收集间隔。 - - BackupHandler: 一种函数类型,接受两个上下文(先前和当前),返回一个新的上下文和一个布尔值,指示是否需要备份。 -此包旨在通过提供强大的会话备份和恢复机制、自定义的会话管理选项,并确保线程安全和高效的资源管理,增强应用中的会话管理。 -关键全局变量: - - DefaultManager: 一个指向SessionManager类型的指针,用于管理会话的创建、备份、恢复和清除。 - - -# 现在,请开始处理如下输入: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_PKG_EN: &str = r##" -# Character -You are an experienced engineer who specializes in lang and has in-depth knowledge of its various packages. Your primary responsibility is to simplify and summarize the basic functionality of the lang package using data provided by other developers about common functions and types. Your goal is to help engineers who know less about these packages by making them easier to understand. - -# Tips - -## Input format (JSON) -Contains a specific type definition and descriptions of other language symbols that depend on it: -- "PkgPath": indicates the import path of the package. The format is a string -- "Functions": The format is an array. Where each object represents the public functions and methods defined within this package: -- "Name": indicates the function name. The format is a string -- "Description": indicates the code or summary of the method. The format is a string -- "Types": The format is an array. Each object in this array represents a public type defined within this package: -- "Name": specifies the name of the type. The format is a string -- "Description": indicates the code or summary of the type. The format is a string -- "Variables": Format is an array. Each object in this array represents a global variable (or constant) defined in that package: -- "Name": indicates the name of the variable. The format is a string -- "Description": indicates the code or summary of the variable. The format is a string - -## Output format (text) -Output summary content directly. Do not output JSON (IMPORTANT)! - -## Summarize the content -- The main functions and uses of the package -- Description of some of the key functions and types of the package - - -# Constraint -- Focus on summarizing the basic features of the lang package and avoid delving into specific implementation details. -- Write short and easy to understand summaries for other engineers to refer to. -- Technical terms that are consistent with the input data provided. -- The output character limit is 2000 characters. - -# Examples - -## Input -{ - "PkgPath": "github.com/cloudwego/localsession/backup", - "Functions": [ - { - "Description": "BackupCtx is used to create a new session context, mark the session as enabled, and associate it with the given context. It ensures thread safety", - "Name": "BackupCtx", - }, - { - "Description": "RecoverCtxOnDemands is used to recover or update the context on demand using a backup handler, allowing you to merge persistent meta-information from previous contexts.", - "Name": "RecoverCtxOnDemands", - }, - { - "Description": "DefaultOptions is used to initialize the Options structure with default values, including setting Enable to false and initializing ManagerOptions with DefaultManagerOptions method.", - "Name": "DefaultOptions", - }, - { - "Description": "ClearCtx is used to remove the specified session ID from the shards of the default session manager, ensuring thread safety.", - "Name": "ClearCtx", - }, - { - "Description": "Init is used to initialize the session manager when options are enabled.", - "Name": "Init", - } - ], - "Types": [ - { - "Description": "Options structure includes a boolean field named \"Enable\" and embeds \"ManagerOptions\" from the local session package.", - "Name": "Options", - }, - { - "Description": "BackupHandler type is a function type that accepts two contexts (previous and current) and returns a new context and a boolean value indicating whether a backup is required.", - "Name": "BackupHandler", - } - ], - "Variables": [ - { - "Description": "DefaultManager is a global variable used to store the default session manager.", - "Name": "DefaultManager", - } - ] -} - -## Output -This package is located in github.com/cloudwego/localsession/backup, to provide tools to application session management, pay special attention to the backup and restore mechanism of session context. It includes the ability to create, back up, restore, and clear session context, as well as initialize session management with default or custom Settings. -Key functions: -- BackupCtx(ctx context.context): Creates a new session context, enables it and associates it with the given Context. It ensures thread-safe and asynchronously transfers session ids when configured. -- RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context: Use a backup handler to restore or update the context on demand, allowing you to merge persistent meta-information from previous contexts. -- Init(opts Options): Initializes the session manager with the specified options, ensuring efficient session management and garbage collection. -Key types: -- Options: A structure that includes Settings for session management, such as enabling implicit asynchronous transfer, number of shards, and garbage collection interval. -- BackupHandler: A function type that accepts two contexts (previous and current) and returns a new context and a Boolean value indicating whether a backup is required. -This package is designed to enhance session management in applications by providing a robust session backup and recovery mechanism, custom session management options, and ensuring thread-safe and efficient resource management. -Key global variables: -- DefaultManager: A pointer to the SessionManager type, which is used to manage session creation, backup, recovery, and clearing. - - -# Now, please summarize below input: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_MOD_ZH: &str = r##" -# 角色 -你是一名经验丰富的工程师,并深入了解其各种模块。你的主要职责是利用其他开发人员提供的有关公共函数和类型的数据,简化并总结模块的基本功能。你的目标是通过使这些包更易理解,帮助对这些包了解较少的工程师。 - -# 提示 - -## 输入格式(JSON) -包含 一个具体的类型定义 及 其依赖的其他语言符号描述: -- "Name": 模块名称 -- "Dir": 模块所处的相对仓库位置 - - "Description": 该方法的代码或总结, 格式为字符串 -- "Packages": 格式为数组。该数组中的每个对象表示此模块内每个子包描述: - - "Name": 使用该包的名称,格式为字符串 - - "Description": 该包的总结,格式为字符串 - - -## 输出格式(text) -直接输出总结内容。不要输出JSON(IMPORTANT)! - -## 总结内容 -- 该模块的主要功能和用途 -- 该模块的一些关键函数和类型的描述 - - -# 约束 -- 专注于高度总结模块的基本功能,避免深入具体实现细节。 -- 编写简短且易于理解的总结,供其他工程师参考。 -- 保持与提供的输入数据一致的技术术语。 -- 输出字符限制为2000字符。 - - -# 示例 - -## 输入 -{ - "Name": "github.com/cloudwego/localsession", - "Dir": ".", - "Packages": [ - { - "Description": "该包用于管理会话上下文,并定义了通用的Session接口", - "Name": "github.com/cloudwego/localsession", - }, - { - "Description": "该包用于处理具体的上下文的metainfo等信息的兜底方式", - "Name": "github.com/cloudwego/localsession/backup", - } - ] -} - -## 输出 -此模块位于当前目录,为应用中的会话管理提供工具,特别关注会话上下文的备份和恢复机制。它包括创建、备份、恢复和清除会话上下文的功能,以及默认的上下文兜底方式。 -关键包: - - github.com/cloudwego/localsession: 该包用于管理会话上下文,并定义了通用的Session接口 - - github.com/cloudwego/localsession/backup: 该包用于处理具体的上下文的metainfo等信息的兜底方式 - - -# 现在,请开始处理如下输入: - -{{DATA}} - -"##; - -const PROMPT_COMPRESS_MOD_EN: &str = r##" -# Character -You are an experienced engineer and have in-depth knowledge of its various modules. Your primary responsibility is to simplify and summarize the basic functionality of the module using data about common functions and types provided by other developers. Your goal is to help engineers who know less about these packages by making them easier to understand. - -# Tips - -## Input format (JSON) -Contains a specific type definition and descriptions of other language symbols on which it depends: -- Name: indicates the module name -- "Dir": indicates the relative repository location of the module -- "Description": indicates the code or summary of the method. The format is a string -- "Packages": in array format. Each object in this array represents each subpackage description within this module: -- "Name": indicates the name of the package. The format is a string -- "Description": indicates the summary of the package. The format is a string - - -## Output format (text) -Output summary content directly. Do not output JSON (IMPORTANT)! - -## Summarize the content -- Main functions and uses of the module -- Description of some of the key functions and types of the module - - -# Constraint -- Focus on the basic functions of highly summarized modules and avoid delving into specific implementation details. -- Write short and easy to understand summaries for other engineers to refer to. -- Technical terms that are consistent with the input data provided. -- The output character limit is 2000 characters. - - -# Examples - -## Input -{ - "Name": "github.com/cloudwego/localsession", - "Dir": ".", - "Packages": [ - { - "Description": "This package manages the Session context and defines the generic session interface ", - "Name": "github.com/cloudwego/localsession", - }, - { - "Description": "This package is used to handle the specific context of metainfo and other information in the back of the way ", - "Name": "github.com/cloudwego/localsession/backup", - } - ] -} - -## Output -This module is located in the current directory and provides tools for session management in the application, with a special focus on backup and recovery mechanisms for session context. It includes the ability to create, back up, restore, and clear session context, as well as the default context bypass. -Key package: -- github.com/cloudwego/localsession: this package is used to manage Session context, and defines the general Session interface -- github.com/cloudwego/localsession/backup: this package to deal with the specific context of the information such as the metainfo way out - -# Now, please summarize below input: -{{DATA}} -"##; diff --git a/src/compress/mod.rs b/src/compress/mod.rs deleted file mode 100644 index 220bb52c..00000000 --- a/src/compress/mod.rs +++ /dev/null @@ -1,19 +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. - -pub mod compress; -mod llm; -pub mod parser; -pub mod rust; -pub mod types; diff --git a/src/compress/parser.rs b/src/compress/parser.rs deleted file mode 100644 index 7fa335e5..00000000 --- a/src/compress/parser.rs +++ /dev/null @@ -1,42 +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. - -use serde::{Deserialize, Serialize}; - - -#[derive(Serialize, Deserialize, Debug)] -pub struct Function { - pub(crate) name: String, - pub(crate) is_method: bool, - pub(crate) is_third_party: bool, - pub(crate) associated_struct: String, - pub(crate) content: String, - pub(crate) compressed_content: CompressedFunction, - pub(crate) calls: Vec, // names of the functions this one calls -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct CompressedFunction { - pub(crate) function_name: String, - pub(crate) description: String, - pub(crate) input: String, - pub(crate) output: String, - pub(crate) side_effect: String, -} - -pub trait LanguageParser { - fn new() -> Self; - fn process(&mut self); - fn summarize(&self, _function: &Function) -> String; -} \ No newline at end of file diff --git a/src/compress/rust/mod.rs b/src/compress/rust/mod.rs deleted file mode 100644 index 47e8e0d0..00000000 --- a/src/compress/rust/mod.rs +++ /dev/null @@ -1,242 +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. - -// Copyright 2024 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. - -use std::{cell::RefCell, collections::HashMap}; - -pub fn convert_crate(path: &str) -> String { - // extra last two parts - let ps: Vec<&str> = path.split("/").collect(); - if ps.len() >= 2 { - normalize_rust_import(format!("{}#{}", ps[ps.len() - 2], ps[ps.len() - 1]).as_str()) - } else { - normalize_rust_import(path) - } -} - -pub fn normalize_rust_import(path: &str) -> String { - let mut normalized = String::new(); - for ch in path.chars() { - if !ch.is_ascii_alphabetic() && !ch.is_ascii_digit() && ch != '/' { - normalized += "_"; - } else if ch == '/' { - normalized.push_str("::"); - } else { - normalized.push(ch); - } - } - normalized.split("::").fold(String::new(), |acc, p| { - if acc != "" { - let p = if let Some(n) = avoid_rust_keywords(p) { - n - } else { - p.to_string() - }; - format!("{}::{}", acc, p) - } else { - p.to_string() - } - }) -} - -pub fn new_rust_impt(_crate: &str, path: &str) -> String { - let p = if path != "" { - normalize_rust_import(path) - } else { - "*".to_string() - }; - return format!("{}::{}", normalize_rust_import(_crate), p); -} - -static RUST_KEY_WORDS: [&str; 52] = [ - "as", "break", "const", "continue", "crate", "else", "enum", "extern", "false", "fn", "for", - "if", "impl", "in", "let", "loop", "match", "mod", "move", "mut", "pub", "ref", "return", - "self", "Self", "static", "struct", "super", "trait", "true", "type", "unsafe", "use", "where", - "while", "abstract", "alignof", "become", "box", "do", "final", "macro", "offsetof", - "override", "priv", "proc", "pure", "sizeof", "typeof", "unsized", "virtual", "yield", -]; - -pub fn avoid_rust_keywords(word: &str) -> Option { - if RUST_KEY_WORDS.contains(&word) { - Some(format!("r#{}", word)) - } else { - None - } -} - -// format and replace root -pub fn replace_impt_crate(impt: &str, root: &Option, reop_id: &String) -> String { - let impt = impt.strip_prefix("use ").unwrap(); - let mut impt = impt.replace(" ", ""); - // for path specify root, replace it - if let Some(root) = root { - if impt.starts_with(root) { - // inside the root, replace it with crate - impt = impt.replace(root, "crate") - } else if impt.starts_with("crate::") { - // outside the root, replace it with repo_id - impt = impt.replace("crate", reop_id); - } - } - format!("use {}", impt) -} - -// rust error format: -/* -error: {{msg}} - --> {{file:line:col}} - | -79 | xxxxxxxxxxxxx - | ^^^^^^^^ help: xxxxx - */ -pub fn extract_msg_from_err(err: &str, ignore: bool) -> HashMap<&str, String> { - let mut files: HashMap<&str, String> = HashMap::new(); - let lines = err.split("\n").collect::>(); - - let mut i = 0; - 'out: while i < lines.len() { - let line = lines[i]; - if line.contains("--> ") { - let file = line - .trim() - .strip_prefix("--> ") - .unwrap() - .split(":") - .nth(0) - .unwrap(); - let msg = lines[i - 1]; - if ignore { - // ignore specific errors - for e in RUST_IGNORE_ERRS.iter() { - if msg.contains(e) { - i += 1; - continue 'out; - } - } - } - let mut errs = vec![msg, line]; - for j in (i + 1)..lines.len() { - let line = lines[j]; - if line.contains(" | ") { - errs.push(line); - } else { - i = j; - break; - } - } - if let Some(old) = files.get_mut(file) { - old.push_str("\n"); - old.push_str(&errs.join("\n")); - } else { - files.insert(file, errs.join("\n")); - } - } - i += 1; - } - files -} - -static RUST_IGNORE_ERRS: [&str; 5] = [ - "E0425", // not found in crate - "E0412", // not found in crate - "E0433", // use of undeclared crate or module - "E0601", // consider adding a `main` function to - "E0432", // unresolved import -]; - -#[derive(Debug, Clone)] -pub struct Cargo { - pub id: String, - deps: RefCell>, - bins: RefCell>, -} - -impl Cargo { - pub fn new(id: &str) -> Self { - Cargo { - id: normalize_rust_import(id.split("/").last().unwrap_or_default()), - deps: RefCell::new(HashMap::new()), - bins: RefCell::new(HashMap::new()), - } - } - - pub fn dep(&mut self, deps: &String) { - let lines = deps.split("\n").collect::>(); - for line in lines { - if !line.contains("=") { - continue; - } - let (a, b) = line.split_once("=").unwrap(); - let name = a.trim(); - let mut version = b.trim(); - if let Some(i) = version.find("//") { - version = &version[0..i]; - } - self.deps - .borrow_mut() - .insert(name.to_string(), version.to_string()); - } - } - - pub fn undep(&mut self, name: &String) { - self.deps.borrow_mut().remove(name); - } - - pub fn bin(&mut self, name: &String, path: &str) { - self.bins - .borrow_mut() - .insert(name.clone(), path.to_string()); - } - - pub fn to_string(&mut self) -> String { - let deps = self - .deps - .borrow() - .iter() - .filter(|(k, _)| !k.contains("crate")) - .fold(String::new(), |acc, (k, v)| { - format!("{}\n{} = {}", acc, k, v) - }); - let bins = self.bins.borrow().iter().fold(String::new(), |acc, b| { - format!( - "{}\n[[bin]]\nname = \"{}\"\npath = \"src/{}/main.rs\"\n", - acc, b.0, b.1 - ) - }); - format!( - r#"[package] -name = "{}" -version = "0.1.0" -edition = "2021" -{} -[dependencies] -{} -"#, - self.id, bins, deps, - ) - } -} diff --git a/src/compress/types/mod.rs b/src/compress/types/mod.rs deleted file mode 100644 index ff1ce1c3..00000000 --- a/src/compress/types/mod.rs +++ /dev/null @@ -1,16 +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. - -mod test; -pub mod types; diff --git a/src/compress/types/test.rs b/src/compress/types/test.rs deleted file mode 100644 index a4c7d206..00000000 --- a/src/compress/types/test.rs +++ /dev/null @@ -1,61 +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. - -use std::{cell::RefCell, collections::HashMap, rc::Rc}; - -fn ensure_node_in_map<'a>(id: i32, map: &'a mut HashMap) -> &'a mut i32 { - map.entry(id).or_insert(0) -} - -fn test_multi_mut(data: HashMap>) { - let graph = Rc::new(RefCell::new(HashMap::new())); - - for (k, _mod) in data { - // First, get the value of `k` from the graph - let mut inode_value = { - let mut graph_ref = graph.borrow_mut(); - let inode = ensure_node_in_map(k, &mut graph_ref); - *inode - }; - - for id in _mod { - // Update the value of `id` in the graph with the value of `k` - let mut graph_ref = graph.borrow_mut(); - let v = ensure_node_in_map(id, &mut graph_ref); - *v = inode_value; - inode_value += 1; - } - - // update to k - { - let mut graph_ref = graph.borrow_mut(); - let inode = ensure_node_in_map(k, &mut graph_ref); - *inode = inode_value; - } - } -} - -#[test] -fn test_main() { - let data = vec![(1, vec![2, 3]), (2, vec![3, 4])]; - let mut map = HashMap::new(); - for (k, v) in data { - let mut vec = Vec::new(); - for i in v { - vec.push(i); - } - map.insert(k, vec); - } - test_multi_mut(map); -} diff --git a/src/compress/types/types.rs b/src/compress/types/types.rs deleted file mode 100644 index a768b5de..00000000 --- a/src/compress/types/types.rs +++ /dev/null @@ -1,977 +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. - -use serde_json::{json, Value}; -use std::{ - cell::RefCell, - collections::{HashMap, HashSet}, - hash::{Hash, Hasher}, - rc::Rc, -}; - -use crate::storage::cache::get_cache; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Repository { - #[serde(default)] - pub id: String, - #[serde(rename = "Modules")] - pub modules: HashMap, - - // constructed by ABCoder - #[serde(rename = "Graph")] - pub graph: Option>, -} - -#[derive(Serialize, Deserialize, Debug, Clone, Default)] -pub struct Node { - #[serde(rename = "Type")] - pub r#type: NodeType, - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub(crate) pkg_path: String, - #[serde(rename = "Name")] - pub(crate) name: String, - #[serde(rename = "Dependencies")] - pub dependencies: Option>, - #[serde(rename = "References")] - pub references: Option>, -} - -impl Node { - pub fn id(&self) -> Identity { - Identity { - mod_path: self.mod_path.clone(), - pkg_path: self.pkg_path.clone(), - name: self.name.clone(), - } - } -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub enum RelationKind { - Dependency, - Reference, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Relation { - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub(crate) pkg_path: String, - #[serde(rename = "Name")] - pub(crate) name: String, - #[serde(rename = "Kind")] - pub(crate) kind: RelationKind, - #[serde(rename = "Desc")] - pub(crate) desc: Option, - #[serde(rename = "Codes")] - pub(crate) codes: Option, -} - -impl Relation { - pub fn id(&self) -> Identity { - Identity { - mod_path: self.mod_path.clone(), - pkg_path: self.pkg_path.clone(), - name: self.name.clone(), - } - } -} - -#[derive(Debug, Clone, Default)] -pub enum NodeType { - #[default] - Unknown, - Func, - Type, - Var, -} - -impl NodeType { - pub fn to_string(&self) -> String { - match self { - NodeType::Func => "FUNC".to_string(), - NodeType::Type => "TYPE".to_string(), - NodeType::Var => "VAR".to_string(), - _ => "UNKNOWN".to_string(), - } - } -} - -impl Serialize for NodeType { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(&self.to_string()) - } -} - -impl<'de> Deserialize<'de> for NodeType { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - match s.as_str() { - "FUNC" => Ok(NodeType::Func), - "TYPE" => Ok(NodeType::Type), - "VAR" => Ok(NodeType::Var), - _ => Ok(NodeType::Unknown), - } - } -} - -impl Repository { - pub fn is_external_mod(&self, mod_path: &str) -> bool { - return mod_path.contains("@") || mod_path == "std" || mod_path == ""; - } - - pub fn get_id_content(&self, id: &Identity) -> Option { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.functions.get(&id.name) { - return Some(f.content.clone()); - } else if let Some(t) = pkg.types.get(&id.name) { - return Some(t.content.clone()); - } else if let Some(v) = pkg.vars.get(&id.name) { - return Some(v.content.clone()); - } - } - } - None - } - - pub fn get_id_content_ref(&self, id: &Identity) -> Option<&String> { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.functions.get(&id.name) { - return Some(&f.content); - } else if let Some(t) = pkg.types.get(&id.name) { - return Some(&t.content); - } else if let Some(v) = pkg.vars.get(&id.name) { - return Some(&v.content); - } - } - } - None - } - - pub fn get_pkg(&self, id: &Identity) -> Option<(&Module, &Package)> { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - return Some((m, pkg)); - } - } - None - } - - pub fn inside_main_pkg(&self, m: &str, pkg: &str) -> Option<&String> { - if let Some(m) = self.modules.get(m) { - for (name, p) in m.packages.iter() { - if p.is_main && pkg.starts_with(name) { - return Some(&p.id); - } - } - } - None - } - - pub fn remove_id(&mut self, id: &Identity) { - for (_, _mod) in self.modules.iter_mut() { - for (_, pkg) in _mod.packages.iter_mut() { - if let Some(_) = pkg.functions.remove(&id.name) { - continue; - } else if let Some(_) = pkg.types.remove(&id.name) { - continue; - } else if let Some(_) = pkg.vars.remove(&id.name) { - continue; - } - } - } - } - - pub fn remove_unreferenced(&mut self, reffered: &HashSet<&Identity>) { - // filter all external (or "kitex_gen" or "hertz_gen") and not referred nodes in repo - for (_, v) in self.graph.clone().unwrap().iter() { - if (!v.id().inside() - || v.pkg_path.contains("kitex_gen") - || v.pkg_path.contains("hertz_gen")) - && !reffered.contains(&v.id()) - { - // remove id in repo - self.remove_id(&v.id()); - } - } - } - - pub fn contains(&self, id: &Identity) -> bool { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(p) = m.packages.get(&id.pkg_path) { - if let Some(_) = p.functions.get(&id.name) { - return true; - } else if let Some(_) = p.types.get(&id.name) { - return true; - } - } - } - false - } - - pub fn merge_with(&mut self, other: &Repository) { - for (mod_name, _mod) in other.modules.iter() { - if let Some(smod) = self.modules.get_mut(mod_name) { - for (pkg_name, pkg) in _mod.packages.iter() { - if let Some(p) = smod.packages.get_mut(pkg_name) { - p.merge_with(pkg); - } else { - smod.packages.insert(pkg_name.clone(), pkg.clone()); - } - smod.name = _mod.name.clone(); - smod.dir = _mod.dir.clone(); - smod.dependencies = _mod.dependencies.clone(); - } - } else { - self.modules.insert(mod_name.clone(), _mod.clone()); - } - } - self.graph = other.graph.clone(); - } - - pub fn save_to_cache(&self) { - let repo = serde_json::to_string(&self).expect("marshal struct error"); - get_cache() - .put(self.id.as_ref(), Vec::from(repo)) - .expect("save to cache failed"); - } - - pub fn get_func(&self, id: &Identity) -> Option<&Function> { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.functions.get(&id.name) { - return Some(f); - } - } - } - None - } - - pub fn get_type(&self, id: &Identity) -> Option<&Struct> { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.types.get(&id.name) { - return Some(f); - } - } - } - None - } - - pub fn get_kind(&self, id: &Identity) -> NodeType { - if let Some(func) = self.get_func(id) { - return NodeType::Func; - } else if let Some(t) = self.get_type(id) { - return NodeType::Type; - } else if let Some(v) = self.get_var(id) { - return NodeType::Var; - } else if let Some(code) = self.get_id_content(id) { - NodeType::Unknown - } else { - return NodeType::Unknown; - } - } - - pub fn get_file_line<'a>(&'a self, id: &'a Identity) -> FileLine { - if let Some(func) = self.get_func(id) { - return FileLine { - pkg: &id.pkg_path, - file: &func.file, - line: func.line, - }; - } else if let Some(t) = self.get_type(id) { - return FileLine { - pkg: &id.pkg_path, - file: &t.file, - line: t.line, - }; - } else if let Some(v) = self.get_var(id) { - return FileLine { - pkg: &id.pkg_path, - file: &v.file, - line: v.line, - }; - } else { - FileLine { - pkg: "", - file: "", - line: 0, - } - } - } - - pub fn is_exported(&self, id: &Identity) -> bool { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.functions.get(&id.name) { - return f.is_exported; - } else if let Some(t) = pkg.types.get(&id.name) { - return t.is_exported; - } else if let Some(v) = pkg.vars.get(&id.name) { - return v.is_exported; - } - } - } - false - } - - pub fn get_var(&self, id: &Identity) -> Option<&Variant> { - if let Some(m) = self.modules.get(&id.mod_path) { - if let Some(pkg) = m.packages.get(&id.pkg_path) { - if let Some(f) = pkg.vars.get(&id.name) { - return Some(f); - } - } - } - None - } - - pub fn get_node(&self, id: &Identity) -> Option<&Node> { - if let Some(graph) = &self.graph { - return graph.get(&String::from(id)); - } - None - } -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Module { - #[serde(rename = "Name")] - pub name: String, - #[serde(rename = "Dir")] - pub dir: String, - #[serde(rename = "Dependencies")] - pub dependencies: Option>, - #[serde(rename = "Packages")] - pub packages: HashMap, - #[serde(rename = "Files")] - pub files: Option>, - #[serde(rename = "Language", default)] - pub language: String, - #[serde(rename = "compress_data")] - pub compress_data: Option, -} - -impl Module { - pub fn to_compress(&self) -> ToCompressModule { - let mut packages = Vec::new(); - for (_, p) in self.packages.iter() { - packages.push(Description { - name: &p.id, - description: p.compress_data.as_ref().unwrap(), - }); - } - - ToCompressModule { - name: &self.name, - dir: &self.dir, - packages: Some(packages), - } - } -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct File { - #[serde(rename = "Name")] - pub name: String, - #[serde(rename = "Path")] - pub path: String, - #[serde(rename = "Imports")] - pub imports: Option>, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Import { - #[serde(rename = "Alias")] - pub alias: Option, - #[serde(rename = "Path")] - pub path: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Package { - #[serde(rename = "PkgPath", default)] - pub id: String, - #[serde(rename = "IsMain", default)] - pub is_main: bool, - #[serde(rename = "Dependencies", default)] - pub dependencies: Vec, - #[serde(rename = "Functions")] - pub functions: HashMap, - #[serde(rename = "Types")] - pub types: HashMap, - #[serde(rename = "Vars")] - pub vars: HashMap, - #[serde(rename = "compress_data")] - pub compress_data: Option, -} - -fn format_file(file: &str) -> String { - // count non-alphanumeric characters - let mut i = 0; - for c in file.chars() { - if !c.is_alphanumeric() { - i += 1; - } - } - if i >= 2 { - // replace non-alphanumeric characters with '_' before last - file.replace( - |c: char| -> bool { - if !c.is_alphanumeric() && i > 1 { - i -= 1; - return true; - } - false - }, - "_", - ) - } else { - file.to_string() - } -} - -#[test] -fn test_format_file() { - assert_eq!(format_file("a/b/c.go"), "a_b_c.go"); - assert_eq!(format_file("x.pb.go"), "x_pb.go"); -} - -impl Package { - pub fn to_files(&self) -> HashMap> { - let mut files: HashMap> = HashMap::new(); - for (_, f) in self.functions.iter() { - let file = format_file(&f.file); - if let Some(nodes) = files.get_mut(&file) { - nodes.push(f.id()); - } else { - files.insert(file, vec![f.id()]); - } - } - for (_, t) in self.types.iter() { - let file = format_file(&t.file); - if let Some(nodes) = files.get_mut(&file) { - nodes.push(t.id()); - } else { - files.insert(file, vec![t.id()]); - } - } - for (_, v) in self.vars.iter() { - let file = format_file(&v.file); - if let Some(nodes) = files.get_mut(&file) { - nodes.push(v.id()); - } else { - files.insert(file, vec![v.id()]); - } - } - files - } - - pub fn merge_with(&mut self, other: &Package) { - self.id = other.id.clone(); - for (name, f) in other.functions.iter() { - if let Some(func) = self.functions.get_mut(name) { - func.merge_with(f); - } else { - self.functions.insert(name.clone(), f.clone()); - } - } - for (name, t) in other.types.iter() { - if let Some(typ) = self.types.get_mut(name) { - typ.merge_with(t); - } else { - self.types.insert(name.clone(), t.clone()); - } - } - for (name, v) in other.vars.iter() { - if let Some(var) = self.vars.get_mut(name) { - var.merge_with(v); - } else { - self.vars.insert(name.clone(), v.clone()); - } - } - } - - // output a json string of exported functions and types, schema: - // {"Functions":[{"Name":"", "Description":"", "Signature":""}], "Types":[{"Name":"", "Description":"", "Signature":""}]} - pub fn to_compress(&self) -> ToCompressPkg { - // functions - let mut funcs = Vec::new(); - for (name, f) in self.functions.iter() { - // skip non-exported functions - if !f.is_exported { - continue; - } - if let Some(d) = &f.compress_data { - funcs.push(Description { - name: name, - description: d, - }); - } - } - // types - let mut types = Vec::new(); - for (name, t) in self.types.iter() { - // skip non-exported types - if !t.is_exported { - continue; - } - if let Some(d) = &t.compress_data { - types.push(Description { - name: name, - description: d, - }); - } - } - // vars - let mut vars = Vec::new(); - for (name, t) in self.vars.iter() { - // skip non-exported types - if !t.is_exported { - continue; - } - if let Some(d) = &t.compress_data { - vars.push(Description { - name: name, - description: d, - }); - } - } - return ToCompressPkg { - path: &self.id, - funcs: Some(funcs), - types: Some(types), - vars: Some(vars), - }; - } -} - -#[derive(Serialize, Deserialize, Debug, Clone, Default)] -pub struct Variant { - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub pkg_path: String, - #[serde(rename = "Name")] - pub name: String, - #[serde(rename = "File")] - pub file: String, - #[serde(rename = "Line")] - pub line: u32, - #[serde(rename = "IsExported", default)] - pub is_exported: bool, - #[serde(rename = "IsConst", default)] - pub is_const: bool, - #[serde(rename = "Type")] - pub type_id: Option, - #[serde(rename = "IsPointer", default)] - pub is_pointer: bool, - #[serde(rename = "Content")] - pub content: String, - - // compress_data - #[serde(rename = "compress_data")] - pub compress_data: Option, -} - -impl Variant { - pub fn id(&self) -> Identity { - Identity { - mod_path: self.mod_path.clone(), - pkg_path: self.pkg_path.clone(), - name: self.name.clone(), - } - } - - pub fn merge_with(&mut self, other: &Variant) { - let compress = self.compress_data.clone(); - *self = other.clone(); - self.compress_data = compress; - } -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Function { - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub pkg_path: String, - #[serde(rename = "Name")] - pub name: String, - #[serde(rename = "File")] - pub file: String, - #[serde(rename = "Line")] - pub line: u32, - #[serde(rename = "Exported", default)] - pub is_exported: bool, - #[serde(rename = "IsMethod", default)] - is_method: bool, - #[serde(rename = "IsInterfaceMethod", default)] - is_interface_method: bool, - #[serde(rename = "Content")] - pub content: String, - #[serde(rename = "Receiver")] - pub receiver: Option, - #[serde(rename = "Params")] - pub params: Option>, - #[serde(rename = "Results")] - pub results: Option>, - #[serde(rename = "FunctionCalls")] - pub function_calls: Option>, - #[serde(rename = "MethodCalls")] - pub method_calls: Option>, - #[serde(rename = "Types")] - pub types: Option>, - #[serde(rename = "GlobalVars")] - pub global_vars: Option>, - - // compress_data - #[serde(rename = "compress_data")] - pub compress_data: Option, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Receiver { - #[serde(rename = "IsPointer")] - pub is_pointer: bool, - #[serde(rename = "Type")] - pub type_id: Identity, -} - -impl Function { - pub fn id(&self) -> Identity { - Identity { - mod_path: self.mod_path.clone(), - pkg_path: self.pkg_path.clone(), - name: self.name.clone(), - } - } - - pub fn merge_with(&mut self, other: &Function) { - let compress = self.compress_data.clone(); - *self = other.clone(); - self.compress_data = compress; - } -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Struct { - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub(crate) pkg_path: String, - #[serde(rename = "Name")] - pub(crate) name: String, - #[serde(rename = "File")] - pub file: String, - #[serde(rename = "Line")] - pub line: u32, - #[serde(rename = "Exported", default)] - pub is_exported: bool, - #[serde(rename = "TypeKind")] - pub type_kind: String, - #[serde(rename = "Content")] - pub(crate) content: String, - #[serde(rename = "SubStruct")] - pub(crate) sub_struct: Option>, - #[serde(rename = "InlineStruct")] - pub(crate) inline_struct: Option>, - #[serde(rename = "Methods")] - pub(crate) methods: Option>, - - // compress_data - #[serde(rename = "compress_data")] - pub compress_data: Option, -} - -impl Struct { - pub fn id(&self) -> Identity { - Identity { - mod_path: self.mod_path.clone(), - pkg_path: self.pkg_path.clone(), - name: self.name.clone(), - } - } - pub fn merge_with(&mut self, other: &Struct) { - let compress = self.compress_data.clone(); - *self = other.clone(); - self.compress_data = compress; - } -} - -#[derive(Serialize, Deserialize, Debug, Clone, Eq, Default)] -pub struct Identity { - #[serde(rename = "ModPath")] - pub mod_path: String, - #[serde(rename = "PkgPath")] - pub pkg_path: String, - #[serde(rename = "Name")] - pub name: String, - // #[serde(rename = "Extra", skip_serializing_if = "Option::is_none")] - // pub extra: Option>, -} - -impl Identity { - pub fn inside(&self) -> bool { - self.mod_path != "" && !self.mod_path.contains("@") - } - - pub fn to_string(&self) -> String { - format!("{}?{}#{}", self.mod_path, self.pkg_path, self.name,) - } -} - -impl From<&Identity> for String { - fn from(id: &Identity) -> Self { - format!("{}?{}#{}", id.mod_path, id.pkg_path, id.name,) - } -} - -impl From<&String> for Identity { - fn from(s: &String) -> Self { - let mut parts = s.split('?'); - let mod_path = parts.next().unwrap(); - let mut parts = parts.next().unwrap().split('#'); - let pkg_path = parts.next().unwrap(); - let name = parts.next().unwrap(); - Identity { - mod_path: mod_path.to_string(), - pkg_path: pkg_path.to_string(), - name: name.to_string(), - } - } -} - -impl Hash for Identity { - fn hash(&self, state: &mut H) { - self.mod_path.hash(state); - self.pkg_path.hash(state); - self.name.hash(state); - } -} - -impl PartialEq for Identity { - fn eq(&self, other: &Self) -> bool { - self.mod_path == other.mod_path - && self.pkg_path == other.pkg_path - && self.name == other.name - } -} - -#[derive(PartialEq, Eq, PartialOrd, Ord)] -pub struct FileLine<'a> { - pub pkg: &'a str, - pub file: &'a str, - pub line: u32, -} - -#[derive(Serialize, Debug)] -pub(crate) struct ToCompressPkg<'a> { - #[serde(rename = "PkgPath")] - pub(crate) path: &'a str, - #[serde(rename = "Functions")] - pub(crate) funcs: Option>>, - #[serde(rename = "Types")] - pub(crate) types: Option>>, - #[serde(rename = "Variables")] - pub(crate) vars: Option>>, -} - -#[derive(Serialize, Debug)] -pub(crate) struct ToCompressModule<'a> { - #[serde(rename = "Name")] - pub(crate) name: &'a str, - #[serde(rename = "Dir")] - pub(crate) dir: &'a str, - #[serde(rename = "Packages")] - pub(crate) packages: Option>>, -} - -#[derive(Serialize, Debug)] -pub(crate) struct Description<'a> { - pub name: &'a str, - pub description: &'a str, -} - -#[derive(Serialize, Debug)] -pub(crate) struct ToCompressVar<'a> { - #[serde(rename = "Content")] - pub(crate) content: &'a String, - #[serde(rename = "Type", skip_serializing_if = "Option::is_none")] - pub(crate) r#type: &'a Option, - #[serde(rename = "References")] - pub(crate) refers: Vec, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct ToCompressFunc { - #[serde(rename = "Content")] - pub(crate) content: String, - #[serde(rename = "Receiver", skip_serializing_if = "Option::is_none")] - pub(crate) receiver: Option, - #[serde(rename = "Params", skip_serializing_if = "Option::is_none")] - pub(crate) params: Option>, - #[serde(rename = "Results", skip_serializing_if = "Option::is_none")] - pub(crate) results: Option>, - #[serde(rename = "Related_func")] - pub(crate) related_func: Option>, - #[serde(rename = "Related_type")] - pub(crate) related_type: Option>, - #[serde(rename = "Related_var")] - pub(crate) related_var: Option>, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct ToCompressType { - #[serde(rename = "Content")] - pub(crate) content: String, - #[serde(rename = "Related_methods")] - pub(crate) related_methods: Option>, - #[serde(rename = "Related_types")] - pub(crate) related_types: Option>, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct CalledType { - #[serde(rename = "CallName")] - pub call_name: String, - #[serde(rename = "Description")] - pub description: String, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct KeyValueType { - #[serde(rename = "Name")] - pub name: String, - #[serde(rename = "Description")] - pub description: String, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct ToConvert { - #[serde(rename = "Name")] - pub(crate) name: String, - #[serde(rename = "Receiver", skip_serializing_if = "Option::is_none")] - pub(crate) receiver: Option, - #[serde(rename = "Definition")] - pub(crate) definition: String, - #[serde(rename = "Dependencies")] - pub(crate) dependencies: HashMap, - #[serde(rename = "References")] - pub(crate) references: HashMap, -} - -#[derive(Serialize, Deserialize, Debug)] -pub(crate) struct Reference { - // #[serde(rename = "NeedMock")] - // pub(crate) need_mock: bool, - #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] - pub(crate) name: Option, - #[serde(rename = "Code")] - pub(crate) code: String, - #[serde(rename = "ImportPath", skip_serializing_if = "Option::is_none")] - pub(crate) import: Option, -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct ToMerge { - #[serde(rename = "ID")] - pub(crate) id: String, - #[serde(rename = "Code")] - pub(crate) code: String, -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct ToValidate { - #[serde(rename = "Code")] - pub(crate) code: String, - #[serde(rename = "Error")] - pub(crate) error: String, -} - -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Code { - #[serde(rename = "Code")] - pub code: String, - #[serde(rename = "Imports", skip_serializing_if = "Option::is_none")] - pub imports: Option>, - #[serde(rename = "Crates", skip_serializing_if = "Option::is_none")] - pub crates: Option, -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct CodeCache { - pub id: String, - pub nodes: HashMap, - #[serde(default)] - pub files: HashMap, -} - -impl CodeCache { - pub fn new(id: String) -> Self { - CodeCache { - nodes: HashMap::new(), - id: id, - files: HashMap::new(), - } - } - - pub fn get(&self, id: &str) -> Option<&Code> { - self.nodes.get(id) - } - - pub fn get_by_id(&self, id: &Identity) -> Option<&Code> { - self.nodes.get(&String::from(id)) - } - - pub fn insert(&mut self, id: &str, code: Code) { - self.nodes.insert(id.to_string(), code); - } - - pub fn insert_by_id(&mut self, id: &Identity, code: Code) { - self.nodes.insert(String::from(id), code); - } - - pub fn save_to_cache(&self) { - let repo = serde_json::to_string(&self).expect("marshal struct error"); - get_cache() - .put(&self.id, Vec::from(repo)) - .expect("save to cache failed"); - } - - pub fn load_from_cache(&mut self) -> bool { - if let Some(repo) = get_cache().get(&self.id) { - if let Ok(repo) = String::from_utf8(repo) { - if let Ok(repo) = serde_json::from_str(&repo) { - *self = repo; - return true; - } - } - } - false - } -} diff --git a/src/config/mod.rs b/src/config/mod.rs deleted file mode 100644 index e1a64095..00000000 --- a/src/config/mod.rs +++ /dev/null @@ -1,187 +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. -use std::path::{Path, PathBuf}; - -use lazy_static::lazy_static; -use serde::Deserialize; - -use crate::parse; - -#[derive(Debug)] -pub enum Language { - English, - Chinese, -} - -#[derive(Debug)] -pub struct Config { - pub work_dir: String, - pub parser_dir: String, - pub api_type: String, - pub maas_model_name: String, - pub mass_http_url: String, - - pub coze_api_token: Option, - pub coze_bot_id: Option, - - pub ollama_model: Option, - - pub language: Language, - pub exclude_dirs: Vec, -} - -fn default_work_dir() -> String { - "tmp_abcoder".to_string() -} - -fn default_parser_dir() -> String { - "tools/parser".to_string() -} - -fn default_api_type() -> String { - "maas".to_string() -} - -fn default_maas_model_name() -> String { - "".to_string() -} - -impl Config { - pub fn new() -> Self { - Self { - work_dir: default_work_dir(), - parser_dir: default_parser_dir(), - api_type: default_api_type(), - maas_model_name: default_maas_model_name(), - mass_http_url: "".to_string(), - coze_api_token: None, - coze_bot_id: None, - ollama_model: None, - exclude_dirs: vec![], - language: Language::Chinese, - } - } - - pub fn parse_from_env() -> Self { - let mut s = Self { - work_dir: std::env::var("WORK_DIR").unwrap_or_else(|_| default_work_dir()), - parser_dir: std::env::var("PARSER_DIR").unwrap_or_else(|_| default_parser_dir()), - api_type: std::env::var("API_TYPE").unwrap_or_else(|_| default_api_type()), - maas_model_name: std::env::var("MAAS_MODEL_NAME") - .unwrap_or_else(|_| default_maas_model_name()), - mass_http_url: std::env::var("MASS_HTTP_URL").unwrap_or_else(|_| "".to_string()), - coze_api_token: std::env::var("COZE_API_TOKEN").ok(), - coze_bot_id: std::env::var("COZE_BOT_ID").ok(), - ollama_model: std::env::var("OLLAMA_MODEL").ok(), - exclude_dirs: std::env::var("EXCLUDE_DIRS") - .map(|v| v.split(',').map(|s| s.to_string()).collect()) - .unwrap_or_else(|_| vec![]), - language: std::env::var("LANGUAGE") - .map(|v| match v.as_str() { - "en" => Language::English, - "zh" => Language::Chinese, - _ => Language::Chinese, - }) - .unwrap_or(Language::Chinese), - }; - // if work_dir is not absolute path, make it absolute path - if !Path::new(&s.work_dir).is_absolute() { - s.work_dir = PathBuf::from(std::env::current_dir().unwrap()) - .join(s.work_dir) - .to_str() - .unwrap() - .to_string(); - } - s - } -} - -lazy_static! { - pub static ref CONFIG: Config = { - dotenv::dotenv().ok(); - Config::parse_from_env() - }; -} - -pub fn parser_path() -> String { - Path::new(&CONFIG.parser_dir) - .join("lang") - .to_str() - .unwrap() - .to_string() -} - -pub enum ProgramLanguage { - Rust, - Go, - Unknown(String), -} - -impl ProgramLanguage { - pub fn to_string(&self) -> String { - match self { - ProgramLanguage::Rust => "rust".to_string(), - ProgramLanguage::Go => "go".to_string(), - ProgramLanguage::Unknown(s) => s.to_string(), - } - } -} - -fn decide_language(path: &str) -> ProgramLanguage { - // scan root directory - walkdir::WalkDir::new(path) - .max_depth(2) - .into_iter() - .filter_map(|entry| { - let binding = entry.unwrap(); - let path = binding.path(); - if !path.is_dir() { - let name = path.file_name().unwrap().to_str().unwrap(); - if name == "Cargo.toml" { - return Some(ProgramLanguage::Rust); - } - if name == "go.mod" { - return Some(ProgramLanguage::Go); - } - } - None - }) - .next() - .unwrap_or(ProgramLanguage::Unknown(path.to_string())) -} - -pub fn parser_and_args<'a>( - repo_path: &'a str, - opts: &parse::CompressOptions, -) -> (String, Vec) { - let lang = decide_language(repo_path); - let path = parser_path(); - println!("parser path: {:?}", path); - let mut args = vec![ - "collect".to_string(), - lang.to_string(), - repo_path.to_string(), - ]; - for exclude in &CONFIG.exclude_dirs { - args.push(format!("--exclude={exclude}")); - } - if !opts.not_load_external_symbol { - args.push("--load-external-symbol".to_string()); - } - if opts.no_need_comment { - args.push("--no-need-comment".to_string()); - } - (path, args) -} diff --git a/src/export.rs b/src/export.rs deleted file mode 100644 index f2569150..00000000 --- a/src/export.rs +++ /dev/null @@ -1,290 +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. -use std::{ - fs::{self, File}, - io::Write, - path::{Path, PathBuf}, -}; - -use csv::Writer; - -use crate::{ - compress::{compress, types::types::Repository}, - config::{self, CONFIG}, - storage::cache, - utils::{cmd, errors::Error, git, split}, -}; - -#[derive(Clone, Debug, Default)] -pub struct ExportOptions { - pub csv: bool, - pub public_only: bool, - pub output: Option, -} - -fn to_csv_summary(repo: &Repository) -> String { - let mut w = Writer::from_writer(Vec::new()); - // add header - w.write_record(&["Package", "Name", "Kind", "Signature", "Summary"]) - .unwrap(); - - for (mod_name, _mod) in repo.modules.iter() { - for (pname, pkg) in _mod.packages.iter() { - for (name, f) in pkg.functions.iter() { - let tmp = &"".to_string(); - // split content, 1024B for each - let sums = split::split_text(f.compress_data.as_ref().unwrap_or(tmp), 924); - for sum in sums { - w.write_record(&[ - pname, - name, - "Function", - f.content.split_once('\n').unwrap_or((&f.content, "")).0, - &format!("{}: {}", name, sum), - ]) - .unwrap(); - } - } - for (name, t) in pkg.types.iter() { - let tmp = &"".to_string(); - // split content, 1024B for each - let sums = split::split_text(t.compress_data.as_ref().unwrap_or(tmp), 924); - for sum in sums { - w.write_record(&[ - pname, - name, - "Type", - t.content.split_once('\n').unwrap_or((&t.content, "")).0, - &format!("{}: {}", name, sum), - ]) - .unwrap(); - } - } - for (name, v) in pkg.vars.iter() { - let tmp = &"".to_string(); - // split content, 1024B for each - let sums = split::split_text(v.compress_data.as_ref().unwrap_or(tmp), 924); - for sum in sums { - w.write_record(&[ - pname, - name, - "Var", - v.content.split_once('\n').unwrap_or((&v.content, "")).0, - &format!("{}: {}", name, sum), - ]) - .unwrap(); - } - } - } - } - w.flush().unwrap(); - String::from_utf8(w.into_inner().unwrap()).unwrap() -} - -pub fn to_csv_decl(repo: &Repository) -> String { - let mut w = Writer::from_writer(Vec::new()); - // add header - w.write_record(&["Identity", "Kind", "Definition"]).unwrap(); - - for (mod_name, _mod) in repo.modules.iter() { - for (pname, pkg) in _mod.packages.iter() { - for (name, f) in pkg.functions.iter() { - let decl = f.content.as_str(); - // split content, 1024B for each - let mut start = 0; - let mut end = 1024; - while start < decl.len() { - if end > decl.len() { - end = decl.len(); - } - if start >= 1024 { - start -= 100; - } - w.write_record(&[ - &format!("{}.{}", pname, name), - "Function", - &decl[start..end], - ]) - .unwrap(); - start = end; - end += 924; - } - } - for (name, t) in pkg.types.iter() { - let decl = t.content.as_str(); - // split content, 1024B for each - let mut start = 0; - let mut end = 1024; - while start < decl.len() { - if end > decl.len() { - end = decl.len(); - } - if start >= 1024 { - start -= 100; - } - w.write_record(&[&format!("{}.{}", pname, name), "Type", &decl[start..end]]) - .unwrap(); - start = end; - end += 924; - } - } - for (name, v) in pkg.vars.iter() { - let decl = v.content.as_str(); - // split content, 1024B for each - let mut start = 0; - let mut end = 1024; - while start < decl.len() { - if end > decl.len() { - end = decl.len(); - } - if start >= 1024 { - start -= 100; - } - w.write_record(&[&format!("{}.{}", pname, name), "Var", &decl[start..end]]) - .unwrap(); - start = end; - end += 924; - } - } - } - } - w.flush().unwrap(); - String::from_utf8(w.into_inner().unwrap()).unwrap() -} - -pub fn to_csv_pkgs(repo: &Repository) -> String { - let mut w = Writer::from_writer(Vec::new()); - // add header - w.write_record(&["Name", "Summary"]).unwrap(); - - for (mod_name, _mod) in repo.modules.iter() { - for (pname, pkg) in _mod.packages.iter() { - // split comress_data into chunks - let empty = &"".to_string(); - let sums = split::split_text(pkg.compress_data.as_ref().unwrap_or(empty), 924); - for sum in sums { - w.write_record(&[&format!("{}", pname), &format!("{}: {}", pname, sum)]) - .unwrap(); - } - } - } - w.flush().unwrap(); - String::from_utf8(w.into_inner().unwrap()).unwrap() -} - -pub fn to_markdown(repo: &Repository, opts: &ExportOptions) -> String { - let mut md = String::new(); - - for (mod_name, module) in repo.modules.iter() { - if repo.is_external_mod(mod_name) { - continue; - } - - // 添加模块标题 - md.push_str(&format!("# {}\n\n", mod_name)); - let lang = &module.language; - - for (pkg_name, pkg) in module.packages.iter() { - // 添加包标题 - md.push_str(&format!("## {}\n\n", pkg_name)); - if let Some(data) = &pkg.compress_data { - md.push_str(&format!("{}\n\n", data)); - } - - // 添加函数 - for (func_name, func) in pkg.functions.iter() { - if opts.public_only && !repo.is_exported(&func.id()) { - continue; - } - - md.push_str(&format!("### {}\n\n", func_name)); - if let Some(data) = &func.compress_data { - md.push_str(&format!("{}\n\n", data)); - } - md.push_str(&format!("- Position\n\n{}:{}\n\n", func.file, func.line)); - md.push_str(&format!( - "- Codes\n\n```{}\n{}\n```\n\n", - lang, func.content - )); - } - - // 添加类型 - for (type_name, typ) in pkg.types.iter() { - if opts.public_only && !repo.is_exported(&typ.id()) { - continue; - } - - md.push_str(&format!("### {}\n\n", type_name)); - if let Some(data) = &typ.compress_data { - md.push_str(&format!("{}\n\n", data)); - } - md.push_str(&format!("- Position\n\n{}:{}\n\n", typ.file, typ.line)); - md.push_str(&format!("- Codes\n\n```{}\n{}\n```\n\n", lang, typ.content)); - } - - // 添加变量 - for (var_name, var) in pkg.vars.iter() { - if opts.public_only && !repo.is_exported(&var.id()) { - continue; - } - - md.push_str(&format!("### {}\n\n", var_name)); - if let Some(data) = &var.compress_data { - md.push_str(&format!("{}\n\n", data)); - } - md.push_str(&format!("- Position\n\n{}:{}\n\n", var.file, var.line)); - md.push_str(&format!("- Codes\n\n```{}\n{}\n```\n\n", lang, var.content)); - } - } - } - - md -} - -// ... existing code ... - -pub fn export_repo(repo: &Repository, opts: &ExportOptions) { - let dir = if let Some(path) = &opts.output { - Path::new(path) - } else { - // pwd - Path::new(&CONFIG.work_dir) - }; - - if opts.csv { - // write summary to csv - let csv_sum = to_csv_summary(repo); - let path_sum = dir.join(repo.id.replace("/", "_").to_string() + "_summary.csv"); - let mut file = File::create(&path_sum).unwrap(); - file.write_all(csv_sum.as_bytes()).unwrap(); - - // write summary to csv - let csv_decl = to_csv_decl(repo); - let path_decl = dir.join(repo.id.replace("/", "_").to_string() + "_decl.csv"); - let mut file = File::create(&path_decl).unwrap(); - file.write_all(csv_decl.as_bytes()).unwrap(); - - // write package to csv - let csv_pkg = to_csv_pkgs(repo); - let path_pkg = dir.join(repo.id.replace("/", "_").to_string() + "_pkg.csv"); - let mut file = File::create(&path_pkg).unwrap(); - file.write_all(csv_pkg.as_bytes()).unwrap(); - } else { - // write markdown - let md = to_markdown(repo, opts); - let path_md = dir.join(repo.id.replace("/", "_").to_string() + ".md"); - let mut file = File::create(&path_md).unwrap(); - file.write_all(md.as_bytes()).unwrap(); - } -} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 7cde95a5..00000000 --- a/src/lib.rs +++ /dev/null @@ -1,20 +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. - -pub mod compress; -pub mod config; -pub mod export; -pub mod parse; -pub mod storage; -pub mod utils; diff --git a/src/parse.rs b/src/parse.rs deleted file mode 100644 index 079ad503..00000000 --- a/src/parse.rs +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright 2025 ByteDance Inc. - * - * 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. - */ -use std::path::{Path, PathBuf}; - -use crate::{ - compress::{compress, types::types::Repository}, - config::{self, CONFIG}, - storage::cache, - utils::{cmd, errors::Error, git, split}, -}; - -#[derive(Clone, Debug, Default)] -pub struct CompressOptions { - pub parse_only: bool, - pub not_load_external_symbol: bool, - pub no_need_comment: bool, - pub force_update_ast: bool, -} - -pub fn force_parse_repo(repo_path: &String, opts: &CompressOptions) -> Result { - let path = parse_repo_path(repo_path)?; - // force to parse the repo - let data = parse_repo(&path, opts)?; - match compress::from_json(&repo_path, String::from_utf8(data).unwrap().as_str()) { - Ok(repo) => Ok(repo), - Err(err) => Err(Error::Parse(err.to_string())), - } -} - -fn parse_repo_path(repo_path: &String) -> Result { - let git_dir = Path::new(CONFIG.work_dir.as_str()); - - let ps: Vec<&str> = repo_path.split('/').collect(); - let path = if repo_path.ends_with(".git") || repo_path.starts_with("https://") { - // url - let repo_name = ps[ps.len() - 1].strip_suffix(".git").unwrap(); - let path = git_dir.join(repo_name); - if !path.exists() { - // git clone - git::git_clone(&repo_path, &path).expect("Failed to clone repo"); - } - path - } else { - // existing path - let path = git_dir.join(&repo_path); - if !path.exists() { - println!("path not exists: {:?}", path); - return Err(Error::GitCloneError("path not exists".to_string())); - } - // directly use the repo name - path - }; - Ok(path) -} - -pub fn get_repo(repo_path: &String, opts: &CompressOptions) -> Result { - let path = parse_repo_path(repo_path)?; - - // check if cache the result - let data = if let Some(data) = cache::get_cache().get(&path.to_str().unwrap()) { - data - } else { - // parse the repo - parse_repo(&path, opts)? - }; - - match compress::from_json( - &path.to_str().unwrap(), - String::from_utf8(data).unwrap().as_str(), - ) { - Ok(repo) => Ok(repo), - Err(err) => Err(Error::Parse(err.to_string())), - } -} - -fn parse_repo(path: &Path, opts: &CompressOptions) -> Result, Error> { - let (parser, args) = config::parser_and_args(path.to_str().unwrap(), opts); - // parse the repo by parse - match cmd::run_command_bytes(&parser, args) { - Ok(output) => { - cache::get_cache() - .put(&path.to_str().unwrap(), output.clone()) - .unwrap(); - return Ok(output); - } - Err(err) => { - println!( - "plugin parse repo {} error: {}", - path.to_str().unwrap(), - err.to_string() - ); - return Err(Error::Parse(err.to_string())); - } - } -} diff --git a/src/storage/cache.rs b/src/storage/cache.rs deleted file mode 100644 index 3f71c777..00000000 --- a/src/storage/cache.rs +++ /dev/null @@ -1,79 +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. - -use std::error::Error; -use std::path::Path; - -use crate::compress::compress; -use crate::compress::types::types::Repository; -use crate::config::CONFIG; -use crate::storage::fs::FileStorage; -use crate::storage::memory::MemoryCache; - -pub trait StorageEngine: Send { - fn get(&mut self, key: &str) -> Option>; - fn put(&mut self, key: &str, value: Vec) -> Result<(), Box>; -} - -pub struct CachingStorageEngine { - cache: C, - backend: B, -} - -impl CachingStorageEngine { - pub fn new(cache: C, backend: B) -> Self { - CachingStorageEngine { cache, backend } - } -} - -impl StorageEngine for CachingStorageEngine { - fn get(&mut self, key: &str) -> Option> { - if let Some(value) = self.cache.get(key) { - Some(value) - } else { - if let Some(value) = self.backend.get(key) { - let _ = self.cache.put(key, value.clone()); - Some(value) - } else { - None - } - } - } - - fn put(&mut self, key: &str, value: Vec) -> Result<(), Box> { - self.cache.put(key, value.clone())?; - self.backend.put(key, value) - } -} - -pub fn get_cache() -> Box { - let mem = MemoryCache::new(12); - let fs = FileStorage::new(Path::new(CONFIG.work_dir.as_str())).unwrap(); - - let mut cache = CachingStorageEngine::new(mem, fs); - return Box::new(cache); -} - -pub fn load_repo(cache: &mut Box, repo_name: &str) -> Option> { - if let Some(repo) = cache.get(repo_name) { - if let Ok(repo) = String::from_utf8(repo) { - if let Ok(repo) = compress::from_json(repo_name, &repo) { - let repo = Box::new(repo); - return Some(repo); - } - } - } - - None -} diff --git a/src/storage/fs.rs b/src/storage/fs.rs deleted file mode 100644 index 394132fb..00000000 --- a/src/storage/fs.rs +++ /dev/null @@ -1,68 +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. - -use std::error::Error; -use std::fs::File; -use std::io::{Read, Write}; -use std::ops::Add; -use std::path::{Path, PathBuf}; - -use crate::storage::cache::StorageEngine; - -pub struct FileStorage { - base_dir: PathBuf, -} - -impl FileStorage { - pub fn new(base_dir: &Path) -> Result> { - if !base_dir.exists() { - std::fs::create_dir_all(base_dir)?; - } - Ok(FileStorage { - base_dir: base_dir.to_path_buf(), - }) - } -} - -impl StorageEngine for FileStorage { - fn get(&mut self, key: &str) -> Option> { - let mut path = self.base_dir.clone(); - let safe_key = key.replace("/", "_"); - let json_key = safe_key.add(".json"); - path.push(json_key); - println!("read file cached: {:?}", path); - let mut file = match File::open(&path) { - Ok(file) => file, - Err(_) => { - println!("not cached: {:?}", path); - return None; - } - }; - let mut contents = Vec::new(); - match file.read_to_end(&mut contents) { - Ok(_) => Some(contents), - Err(_) => None, - } - } - - fn put(&mut self, key: &str, value: Vec) -> Result<(), Box> { - let mut path = self.base_dir.clone(); - let safe_key = key.replace("/", "_"); - let json_key = safe_key.add(".json"); - path.push(json_key); - let mut file = File::create(path)?; - file.write_all(&value)?; - Ok(()) - } -} diff --git a/src/storage/memory.rs b/src/storage/memory.rs deleted file mode 100644 index 36c8ae19..00000000 --- a/src/storage/memory.rs +++ /dev/null @@ -1,39 +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. - -use std::collections::HashMap; -use std::error::Error; - -use crate::storage::cache::StorageEngine; - -pub struct MemoryCache { - map: HashMap>, -} - -impl MemoryCache { - pub fn new(cache_size: usize) -> Self { - MemoryCache { map: HashMap::with_capacity(cache_size) } - } -} - -impl StorageEngine for MemoryCache { - fn get(&mut self, key: &str) -> Option> { - self.map.get(key).cloned() - } - - fn put(&mut self, key: &str, value: Vec) -> Result<(), Box> { - self.map.insert(key.to_string(), value); - Ok(()) - } -} \ No newline at end of file diff --git a/src/storage/mod.rs b/src/storage/mod.rs deleted file mode 100644 index 7bb4763c..00000000 --- a/src/storage/mod.rs +++ /dev/null @@ -1,17 +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. - -pub mod cache; -pub mod fs; -pub mod memory; diff --git a/src/utils/cmd.rs b/src/utils/cmd.rs deleted file mode 100644 index 168e0c5f..00000000 --- a/src/utils/cmd.rs +++ /dev/null @@ -1,46 +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. - -use std::io::{self, Error}; -use std::process::Command; -use std::{env, os}; - -pub fn run_command(cmd: &str, args: Vec<&str>) -> Result { - println!("execute command: {} {:?}", cmd, args); - // get current directory - let output = Command::new(cmd).args(args).output()?; - - match output.status.success() { - true => Ok(String::from_utf8_lossy(&output.stdout).into_owned()), - false => Err(io::Error::new( - io::ErrorKind::Other, - String::from_utf8_lossy(vec![output.stdout, output.stderr].concat().as_slice()) - .into_owned(), - )), - } -} - -pub fn run_command_bytes(cmd: &str, args: Vec) -> Result, Error> { - println!("execute command: {} {:?}", cmd, args); - let output = Command::new(cmd).args(args).output()?; - - match output.status.success() { - true => Ok(output.stdout), - false => Err(io::Error::new( - io::ErrorKind::Other, - String::from_utf8_lossy(vec![output.stdout, output.stderr].concat().as_slice()) - .into_owned(), - )), - } -} diff --git a/src/utils/errors.rs b/src/utils/errors.rs deleted file mode 100644 index 68d2e1e1..00000000 --- a/src/utils/errors.rs +++ /dev/null @@ -1,59 +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. - -// Import necessary types from the standard library -use std::process::Output; -use std::{fmt, io, num::ParseIntError}; - -// Our custom error type that can encompass various types of errors -// that may occur in our application -pub enum Error { - Io(io::Error), - GitCloneError(String), - Parse(String), - // more error types can be added here as needed by the application... -} - -// Implement the Display trait for our Error type, so we can print the error messages -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - Error::Io(ref err) => write!(f, "IO error: {}", err), - Error::GitCloneError(message) => write!(f, "Git clone error: {}", message), - Error::Parse(ref err) => write!(f, "Parse error: {}", err), - // ... - } - } -} - -// We also implement the Debug trait, here we elect to delegate to the Display implementation -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(self, f) - } -} - -// We implement conversion from io:Error into our custom type -impl From for Error { - fn from(err: io::Error) -> Error { - Error::Io(err) - } -} - -// We implement conversion from Output into our custom type -impl From for Error { - fn from(output: Output) -> Error { - Error::GitCloneError(String::from_utf8_lossy(&output.stderr).into_owned()) - } -} diff --git a/src/utils/files.rs b/src/utils/files.rs deleted file mode 100644 index c8cd0623..00000000 --- a/src/utils/files.rs +++ /dev/null @@ -1,176 +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. - -use std::fmt; -use std::fs; -use std::fs::File; -use std::io::{self, BufRead}; -use std::path::Path; -use std::path::PathBuf; - -use crate::config::CONFIG; - -pub fn read_file(path: &str) -> io::Result { - fs::read_to_string(path) -} - -// Function to count the lines in a file -pub fn count_lines(path: &Path, skip_empty: bool) -> io::Result { - let file = File::open(path)?; - let reader = io::BufReader::new(file); - - if skip_empty { - let line_count = reader - .lines() - .filter_map(Result::ok) - .filter(|line| !line.trim().is_empty()) - .count(); - return Ok(line_count); - } - - let line_count = reader.lines().count(); - Ok(line_count) -} - -// Define our tree node -pub struct Node { - name: String, - children: Vec, -} - -impl Node { - fn new(name: String) -> Node { - Node { - name, - children: Vec::new(), - } - } - - fn add_child(&mut self, child: Node) { - self.children.push(child); - } -} - -// Use this to print the tree with indentation -impl fmt::Display for Node { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fn recurse(node: &Node, f: &mut fmt::Formatter<'_>, depth: usize) -> fmt::Result { - for _ in 0..depth { - write!(f, " ")?; - } - let display_name = node.name.trim_start_matches(&CONFIG.work_dir); - writeln!(f, "└──{}", display_name)?; - - for child in &node.children { - recurse(child, f, depth + 1)?; - } - - Ok(()) - } - - recurse(self, f, 0) - } -} - -pub fn tree(dir: &PathBuf, suffix: &str) -> Option { - let mut node = Node::new(dir.to_string_lossy().to_string()); - let mut has_matching_file = false; - - if let Ok(entries) = fs::read_dir(dir) { - for entry in entries { - if let Ok(entry) = entry { - let path = entry.path(); - if path.is_dir() { - if let Some(child) = tree(&path, suffix) { - has_matching_file = true; - node.add_child(child); - } - } else { - if let Some(ext) = path.extension() { - if ext.to_str().unwrap() == suffix { - has_matching_file = true; - node.add_child(Node::new(path.display().to_string())); - } - } - } - } - } - } - - if has_matching_file { - Some(node) - } else { - None - } -} - -pub fn camel_to_snake(camel: &str) -> String { - let mut snake = String::new(); - for (i, ch) in camel.chars().enumerate() { - if ch.is_ascii_uppercase() && i > 0 { - // get i-1th char - let before_ch = camel.chars().nth(i - 1).unwrap(); - let after_ch = if i < camel.len() - 1 { - camel.chars().nth(i + 1).unwrap() - } else { - ' ' - }; - if before_ch.is_alphanumeric() - && (before_ch.is_ascii_lowercase() || before_ch.is_digit(10)) - || (after_ch.is_alphanumeric() && after_ch.is_ascii_lowercase() - || before_ch.is_digit(10)) - { - snake.push('_'); - } - } - snake.push(ch.to_ascii_lowercase()); - } - snake -} - -pub fn snake_to_camel(snake: &str) -> String { - let mut camel = String::new(); - let mut upper = true; - for ch in snake.chars() { - if ch == '_' { - upper = true; - } else { - if upper { - camel.push(ch.to_ascii_uppercase()); - upper = false; - } else { - camel.push(ch); - } - } - } - camel -} - -#[test] -fn test_camel_to_snake() { - assert_eq!(camel_to_snake("camel"), "camel"); - assert_eq!(camel_to_snake("Camel"), "camel"); - assert_eq!(camel_to_snake("CAMEL"), "camel"); - assert_eq!(camel_to_snake("JSONString"), "json_string"); - assert_eq!(camel_to_snake("CamelCase"), "camel_case"); - assert_eq!(camel_to_snake("Camel2Case"), "camel2_case"); - assert_eq!(camel_to_snake("Camel2Case3A"), "camel2_case3_a"); - assert_eq!(camel_to_snake("CamelJSONString"), "camel_json_string"); -} - -#[test] -fn test_snake_camel() { - assert_eq!(snake_to_camel("camel"), "Camel"); - assert_eq!(snake_to_camel("_camel"), "Camel"); -} diff --git a/src/utils/git.rs b/src/utils/git.rs deleted file mode 100644 index 09564695..00000000 --- a/src/utils/git.rs +++ /dev/null @@ -1,148 +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. - -use std::fs::File; -use std::io::Read; -use std::io::Write; -use std::ops::Add; -use std::path::Path; -use std::process::Command; - -use reqwest::Client; -use reqwest::Error as RError; -use serde::{Deserialize, Serialize}; -use serde_json::Value; -use serde_yaml; -use tokio; - -use super::errors::Error; - -// TODO config-lize -static GLOBAL_GIT_TOKEN: Option<&str> = option_env!("ABCoder_github_token"); - -// Function that clones a git repository and takes the URL of the -// repository and the directory where it should be cloned as arguments -pub fn git_clone(url: &str, directory: &Path) -> Result<(), Error> { - // The git command is executed as a child process - let output = Command::new("git") - .args(&["clone", url, directory.to_str().unwrap()]) - .output()?; - - // Check if the git clone operation was successful - if output.status.success() { - Ok(()) - } else { - // Convert the Output into our custom error type and return the error - Err(output.into()) - } -} - -// 以下代码用于描述返回的 json 数据结构 -#[derive(Serialize, Deserialize, Debug)] -pub struct RepositoryStat { - stargazers_count: usize, - forks: usize, - open_issues: usize, -} - -pub async fn get_repo_stats(repo: &str) -> Result<(RepositoryStat), Box> { - let request_url = format!("https://api.github.com/repos/{}", repo); - let client = reqwest::Client::new(); - let response = client - .get(&request_url) - .header("User-Agent", "reqwest") - .header( - "Authorization", - "Bearer ".to_string().add(GLOBAL_GIT_TOKEN.unwrap()), - ) - .send() - .await?; - - if response.status() != 200 { - return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, - format!("status is not 200, body is: {}", response.text().await?)))); - } - - // println!("{}",response.text().await?); - - let resp: RepositoryStat = response.json().await?; - - println!("Stars: {}", resp.stargazers_count); - println!("Forks: {}", resp.forks); - println!("Open Issues: {}", resp.open_issues); - - Ok((resp)) -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct Issue { - pub title: String, - pub body: String, - pub url: String, - pub isClosed: bool, -} - - -pub async fn search_issue( - repo: &str, - keywords: &str, limit: i8, -) -> Result, Box> { - let client = Client::new(); - - let resp = client - .get(format!( - "https://api.github.com/search/issues?q=repo:{}+is:issue+{}", - repo, keywords - )) - .header("User-Agent", "Your-User-Agent") // Replace "Your-User-Agent" with the actual one - .header( - "Authorization", - "Bearer ".to_string().add(GLOBAL_GIT_TOKEN.unwrap()), - ) - .send() - .await?; - - let body = resp.text().await?; - - let data: Value = serde_json::from_str(&body)?; - let issues_data = data["items"].as_array().unwrap(); - - let mut issues = vec![]; - - let mut issue_count = 0; - - for item in issues_data { - if limit != -1 && issue_count >= limit { - break; - } - - let issue = Issue { - title: item["title"].as_str().unwrap().to_string(), - body: item["body"].as_str().unwrap().to_string(), - url: item["html_url"].as_str().unwrap().to_string(), - isClosed: item["state"].as_str().unwrap().eq("closed"), - }; - - issues.push(issue); - issue_count += 1; - } - - // let doc_content = serde_yaml::to_string(&issues)?; - - // let mut file = File::create("issues.yml")?; - // file.write_all(doc_content.as_bytes())?; - - println!("Done"); - Ok(issues) -} diff --git a/src/utils/llm.rs b/src/utils/llm.rs deleted file mode 100644 index 641dacda..00000000 --- a/src/utils/llm.rs +++ /dev/null @@ -1,35 +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. - -use std::fs::File; -use std::io::{self, BufRead}; -use std::path::Path; - -// roughly count the token count in a file. -pub fn count_tokens_rough(path: &Path) -> io::Result { - let file = File::open(path)?; - let reader = io::BufReader::new(file); - - let mut token_count = 0; - - for line in reader.lines() { - let line = line?; - let tokens: Vec<&str> = line - .split(|c: char| c.is_whitespace() || c.is_ascii_punctuation()) - .collect(); - token_count += tokens.len(); - } - - Ok(token_count) -} diff --git a/src/utils/markdown.rs b/src/utils/markdown.rs deleted file mode 100644 index 916690e6..00000000 --- a/src/utils/markdown.rs +++ /dev/null @@ -1,62 +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. - -use std::fs; -use std::path::Path; - -use serde::{Deserialize, Serialize}; - -use crate::utils::files; - -pub fn get_all_md(dir: &Path, files_list: &mut Vec) -> std::io::Result<()> { - if dir.is_dir() { - for entry in fs::read_dir(dir)? { - let entry = entry?; - let path = entry.path(); - if path.is_dir() && !path.ends_with(".github") { - get_all_md(&path, files_list)?; - } else if path.is_file() { - if let Some(ext) = path.extension() { - if ext == "md" { - files_list.push(path.to_string_lossy().to_string()); - } - } - } - } - } - Ok(()) -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct FileWithContent { - pub(crate) name: String, - pub(crate) content: String, -} - -pub fn get_readme_json(repo_dir: &Path) -> Option { - let mut md_list = Vec::new(); - get_all_md(repo_dir, &mut md_list).expect("TODO: panic message"); - for md in &md_list { - if md.ends_with("README.md") { - let content = files::read_file(md).unwrap(); - let readme = &FileWithContent { - name: "README".to_string(), - content, - }; - - return Some(serde_json::to_string_pretty(readme).unwrap()); - } - } - None -} diff --git a/src/utils/mod.rs b/src/utils/mod.rs deleted file mode 100644 index 65a4ae37..00000000 --- a/src/utils/mod.rs +++ /dev/null @@ -1,21 +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. - -pub mod cmd; -pub mod errors; -pub mod files; -pub mod git; -pub mod llm; -pub mod markdown; -pub mod split; diff --git a/src/utils/split.rs b/src/utils/split.rs deleted file mode 100644 index 6e6402e7..00000000 --- a/src/utils/split.rs +++ /dev/null @@ -1,22 +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. - -use text_splitter::{Characters, TextSplitter}; - -pub fn split_text(text: &str, max_length: usize) -> Vec<&str> { - let splitter = TextSplitter::default() - // Optionally can also have the splitter trim whitespace for you - .with_trim_chunks(true); - splitter.chunks(text, max_length).collect() -} diff --git a/testdata/rust2-wobyted/Cargo.toml b/testdata/rust2-wobyted/Cargo.toml deleted file mode 100644 index ea8d0ade..00000000 --- a/testdata/rust2-wobyted/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "rust2" -version = "0.1.0" -edition = "2021" - -[dependencies] -lazy_static = "1.4.0" diff --git a/testdata/rust2-wobyted/src/entity/func.rs b/testdata/rust2-wobyted/src/entity/func.rs deleted file mode 100644 index 3a24c6af..00000000 --- a/testdata/rust2-wobyted/src/entity/func.rs +++ /dev/null @@ -1,45 +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. - -use std::io::{self, Write}; - -use super::{MyEnum, MyInt, MyInt2, MyStruct, MyTrait}; - -#[warn(unused_variables)] -pub fn write_to_output( - output: &mut W, - input: &T, - arg: &MyStruct, -) -> io::Result<(MyEnum, MyInt2)> { - Ok((MyEnum::A(input.my_trait() + arg.a), arg.b)) -} - -use core::f64::consts::E; -use std::f32::consts::PI; - -fn apply_closure MyInt2>(x: Option, func: F, func2: Y) -> MyInt2 -where - F: Fn(MyInt) -> MyInt2, -{ - func(x.unwrap()) -} - -/// This is a test function -/// # Example -/// ``` -/// let obj = new_obj(); -/// ``` -pub fn new_obj() -> MyStruct { - MyStruct { a: 1, b: MyInt2(2) } -} diff --git a/testdata/rust2-wobyted/src/entity/inter.rs b/testdata/rust2-wobyted/src/entity/inter.rs deleted file mode 100644 index f59188a2..00000000 --- a/testdata/rust2-wobyted/src/entity/inter.rs +++ /dev/null @@ -1,65 +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. - -/** - * Copyright 2025 ByteDance Inc. - * - * 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. - */ - -pub trait Addable { - fn id() -> i64; - fn add(&self, b: i64) -> i64; -} - -pub struct AnyInt(i64); - -impl AnyInt { - pub fn id() -> i64 { - 0 - } - pub fn add(&self, b: i64) -> i64 { - self.0 + b - } -} - -impl Addable for AnyInt { - fn add(&self, b: i64) -> i64 { - // use the method defined in the struct - self.add(b) - } - fn id() -> i64 { - // use the method defined in the struct - AnyInt::id() - } -} - -fn add_trait(i: T, v: i64) { - println!("{}", i.add(v)) -} - -#[test] -fn test() { - add_trait(AnyInt(1), 2); -} diff --git a/testdata/rust2-wobyted/src/entity/mod.rs b/testdata/rust2-wobyted/src/entity/mod.rs deleted file mode 100644 index c197ca26..00000000 --- a/testdata/rust2-wobyted/src/entity/mod.rs +++ /dev/null @@ -1,85 +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. - -pub type MyInt = i32; - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct MyInt2(pub i32); - -impl std::ops::Add for MyInt2 { - type Output = MyInt; - - fn add(self, rhs: MyInt) -> MyInt { - self.0 + rhs - } -} - -pub const MY_INT: MyInt = 42; - -pub fn add(a: MyInt, b: MyInt2) -> MyInt { - b + a -} - -pub struct MyStruct { - pub a: MyInt, - pub b: MyInt2, -} - -impl MyStruct { - pub fn new(a: MyInt, b: MyInt2) -> MyStruct { - MyStruct { a, b } - } - - pub fn add(&self) -> MyInt { - self.b + self.a - } -} - -trait MyTrait { - fn my_trait(&self) -> MyInt; -} - -impl MyTrait for MyStruct { - fn my_trait(&self) -> MyInt { - self.a - } -} - -static MY_STATIC: MyInt = 42; - -use lazy_static::lazy_static; - -lazy_static! { - pub static ref MY_LAZY_STATIC: MyInt = 44; -} - -#[derive(Debug)] -pub enum MyEnum { - A(MyInt), - B(MyInt2), -} - -#[macro_export] -macro_rules! my_macro { - ($e:expr) => { - $e - }; -} - -pub mod func; -pub mod inter; - -lazy_static! { - pub static ref MY_LAZY_STATIC2: MyInt = 45; -} diff --git a/testdata/rust2-wobyted/src/main.rs b/testdata/rust2-wobyted/src/main.rs deleted file mode 100644 index 643fd87a..00000000 --- a/testdata/rust2-wobyted/src/main.rs +++ /dev/null @@ -1,33 +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. - -mod entity; - -static MY_INT2: u32 = 42; - -fn main() { - let a = entity::MyStruct::new(1, entity::MyInt2(2)); - println!("{} + {:?} = {}", a.a, a.b, a.add()); - let b = entity::add(1, entity::MyInt2(2)); - println!("1 + 2 = {}", b); - println!("MY_INT = {}", entity::MY_INT); - println!("MY_INT2 = {}", MY_INT2); - - _ = entity::MyEnum::A(1); - _ = entity::MyEnum::B(entity::MyInt2(2)); - _ = crate::my_macro!(1); - - let mut buf = Vec::new(); - entity::func::write_to_output(&mut buf, &a, &a).unwrap(); -} From 872313a80679f12c28fa60a1789f684b709b66ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Wed, 16 Apr 2025 15:42:11 +0800 Subject: [PATCH 02/15] refactor: move out main --- .gitignore | 1 + go.go | 45 -------- lang/collect/collect.go | 2 +- lang/lsp/client.go | 6 +- lang/lsp/spec.go | 22 +++- lang/parse.go | 188 ++++++++++++++++++++++++++++++++ main.go | 236 ++++++++++------------------------------ 7 files changed, 269 insertions(+), 231 deletions(-) delete mode 100644 go.go create mode 100644 lang/parse.go diff --git a/.gitignore b/.gitignore index 14fbf546..40f7ab82 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ src/lang/testdata *.json tools +abcoder diff --git a/go.go b/go.go deleted file mode 100644 index 74a24262..00000000 --- a/go.go +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2025 ByteDance Inc. - * - * 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 main - -import ( - "context" - - "github.com/cloudwego/abcoder/lang/collect" - "github.com/cloudwego/abcoder/lang/golang/parser" - "github.com/cloudwego/abcoder/lang/uniast" -) - -func callGoParser(ctx context.Context, repoPath string, opts collect.CollectOption) (*uniast.Repository, error) { - goopts := parser.Options{} - if opts.LoadExternalSymbol { - goopts.ReferCodeDepth = 1 - } - if !opts.NoNeedComment { - goopts.CollectComment = true - } - if opts.NeedTest { - goopts.NeedTest = true - } - goopts.Excludes = opts.Excludes - p := parser.NewParser(repoPath, repoPath, goopts) - repo, err := p.ParseRepo() - if err != nil { - return nil, err - } - return &repo, nil -} diff --git a/lang/collect/collect.go b/lang/collect/collect.go index 53e0834f..9f296810 100644 --- a/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -29,11 +29,11 @@ import ( ) type CollectOption struct { + Language lsp.Language LoadExternalSymbol bool NeedStdSymbol bool NoNeedComment bool NeedTest bool - Language lsp.Language Excludes []string } diff --git a/lang/lsp/client.go b/lang/lsp/client.go index 4c88efd0..6826a109 100644 --- a/lang/lsp/client.go +++ b/lang/lsp/client.go @@ -50,7 +50,7 @@ func NewLSPClient(repo string, openfile string, wait time.Duration, opts ClientO return nil, err } - cli, err := initLSPClient(context.Background(), svr, lsp.DocumentURI(NewURI(repo)), opts.Verbose) + cli, err := initLSPClient(context.Background(), svr, NewURI(repo), opts.Verbose) if err != nil { return nil, err } @@ -110,7 +110,7 @@ type initializeResult struct { Capabilities interface{} `json:"capabilities,omitempty"` } -func initLSPClient(ctx context.Context, svr io.ReadWriteCloser, dir lsp.DocumentURI, verbose bool) (*LSPClient, error) { +func initLSPClient(ctx context.Context, svr io.ReadWriteCloser, dir DocumentURI, verbose bool) (*LSPClient, error) { h := newLSPHandler() stream := jsonrpc2.NewBufferedStream(svr, jsonrpc2.VSCodeObjectCodec{}) conn := jsonrpc2.NewConn(ctx, stream, h) @@ -131,7 +131,7 @@ func initLSPClient(ctx context.Context, svr io.ReadWriteCloser, dir lsp.Document initParams := initializeParams{ ProcessID: os.Getpid(), - RootURI: dir, + RootURI: lsp.DocumentURI(dir), Capabilities: cs, Trace: lsp.Trace(trace), ClientInfo: lsp.ClientInfo{Name: "vscode"}, diff --git a/lang/lsp/spec.go b/lang/lsp/spec.go index 02a66a5a..62d34a63 100644 --- a/lang/lsp/spec.go +++ b/lang/lsp/spec.go @@ -14,15 +14,31 @@ package lsp -import "github.com/cloudwego/abcoder/lang/uniast" +import ( + "strings" + + "github.com/cloudwego/abcoder/lang/uniast" +) type Language string const ( - Rust Language = "rust" - Golang Language = "golang" + Rust Language = "rust" + Golang Language = "golang" + Unknown Language = "" ) +func NewLanguage(l string) Language { + switch strings.ToLower(l) { + case "rust": + return Rust + case "go", "golang": + return Golang + default: + return Unknown + } +} + func (l Language) String() string { switch l { case Rust: diff --git a/lang/parse.go b/lang/parse.go new file mode 100644 index 00000000..61a51627 --- /dev/null +++ b/lang/parse.go @@ -0,0 +1,188 @@ +/** + * Copyright 2025 ByteDance Inc. + * + * 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 lang + +import ( + "context" + "encoding/json" + "fmt" + "os" + "os/exec" + "path/filepath" + "time" + + "github.com/cloudwego/abcoder/lang/collect" + "github.com/cloudwego/abcoder/lang/golang/parser" + "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/rust" + "github.com/cloudwego/abcoder/lang/uniast" +) + +type ParseOptions struct { + LSP string + Verbose bool + collect.CollectOption +} + +func Parse(ctx context.Context, uri string, args ParseOptions) ([]byte, error) { + if !filepath.IsAbs(uri) { + uri, _ = filepath.Abs(uri) + } + l, lspPath := checkLSP(args.Language, args.LSP) + openfile, opentime, err := checkRepoPath(uri, l) + if err != nil { + return nil, err + } + + var client *lsp.LSPClient + if lspPath != "" { + // Initialize the LSP client + log.Info("start initialize LSP server %s...\n", lspPath) + var err error + client, err = lsp.NewLSPClient(uri, openfile, opentime, lsp.ClientOptions{ + Server: lspPath, + Language: l, + Verbose: args.Verbose, + }) + if err != nil { + log.Error("failed to initialize LSP server: %v\n", err) + return nil, err + } + log.Info("end initialize LSP server") + } + + repo, err := collectSymbol(ctx, client, uri, args.CollectOption) + if err != nil { + log.Error("Failed to collect symbols: %v\n", err) + return nil, err + } + log.Info("all symbols collected, start writing to stdout...\n") + out, err := json.Marshal(repo) + if err != nil { + log.Error("Failed to marshal repository: %v\n", err) + return nil, err + } + return out, nil +} + +func checkRepoPath(repoPath string, language lsp.Language) (openfile string, wait time.Duration, err error) { + if _, err := os.Stat(repoPath); os.IsNotExist(err) { + return "", 0, fmt.Errorf("repository not found: %s", repoPath) + } + switch language { + case lsp.Rust: + // NOTICE: open the Cargo.toml file is required for Rust projects + openfile, wait = rust.CheckRepo(repoPath) + default: + openfile = "" + wait = 0 + } + + log.Info("open file '%s' and wait for %d seconds for initialize workspace\n", openfile, wait/time.Second) + return +} + +func checkVerbose(verbose bool, debug bool) { + if debug { + + } else if verbose { + log.SetLogLevel(log.InfoLevel) + } else { + log.SetLogLevel(log.ErrorLevel) + } +} + +func checkLSP(language lsp.Language, lspPath string) (l lsp.Language, s string) { + switch language { + case lsp.Rust: + l, s = rust.GetDefaultLSP() + case lsp.Golang: + l = lsp.Golang + s = "" + if _, err := exec.LookPath("go"); err != nil { + if _, err := os.Stat(lspPath); os.IsNotExist(err) { + log.Error("Go compiler not found, please make it excutable!\n", lspPath) + os.Exit(1) + } + } + return + default: + log.Error("Unsupported language: %s\n", language) + os.Exit(1) + } + // check if lsp excutable + if lspPath != "" { + if _, err := exec.LookPath(lspPath); err != nil { + if _, err := os.Stat(lspPath); os.IsNotExist(err) { + log.Error("Language server %s not found, please make it excutable!\n", lspPath) + os.Exit(1) + } + } + s = lspPath + } + + return +} + +func collectSymbol(ctx context.Context, cli *lsp.LSPClient, repoPath string, opts collect.CollectOption) (repo *uniast.Repository, err error) { + if opts.Language == lsp.Golang { + repo, err = callGoParser(ctx, repoPath, opts) + if err != nil { + return nil, err + } + } else { + collector := collect.NewCollector(repoPath, cli) + collector.CollectOption = opts + log.Info("start collecting symbols...\n") + err = collector.Collect(ctx) + if err != nil { + return nil, err + } + log.Info("all symbols collected.\n") + log.Info("start exporting symbols...\n") + repo, err = collector.Export(ctx) + if err != nil { + return nil, err + } + } + + if err := repo.BuildGraph(); err != nil { + return nil, err + } + return repo, nil +} + +func callGoParser(ctx context.Context, repoPath string, opts collect.CollectOption) (*uniast.Repository, error) { + goopts := parser.Options{} + if opts.LoadExternalSymbol { + goopts.ReferCodeDepth = 1 + } + if !opts.NoNeedComment { + goopts.CollectComment = true + } + if opts.NeedTest { + goopts.NeedTest = true + } + goopts.Excludes = opts.Excludes + p := parser.NewParser(repoPath, repoPath, goopts) + repo, err := p.ParseRepo() + if err != nil { + return nil, err + } + return &repo, nil +} diff --git a/main.go b/main.go index 6f24e86a..6a1d5ff2 100644 --- a/main.go +++ b/main.go @@ -32,207 +32,85 @@ package main import ( "context" - "encoding/json" + "flag" + "fmt" "os" - "os/exec" - "path/filepath" - "time" + "strings" - "github.com/cloudwego/abcoder/lang/collect" + "github.com/cloudwego/abcoder/lang" "github.com/cloudwego/abcoder/lang/log" "github.com/cloudwego/abcoder/lang/lsp" - "github.com/cloudwego/abcoder/lang/rust" - "github.com/cloudwego/abcoder/lang/uniast" - "github.com/spf13/cobra" ) -func main() { - var client *lsp.LSPClient - var repoPath string - var lang lsp.Language - - // Define flags - var flagLsp string - var flagVerbose, flagDebug bool - var excludes *[]string - var opts collect.CollectOption - - var rootCmd = &cobra.Command{ - Use: `lang +const Usage = `abcoder [Flags] Action: - collect Parse repo and export AST + parse Parse the whole repo and export AST Language: rust For rust codes - go For go codes`, - Short: "Lang: An universal language analyzer based on Language-Server-Protocol", - Args: cobra.ExactArgs(3), - - PreRun: func(cmd *cobra.Command, args []string) { - // validate arguments - checkVerbose(flagVerbose, flagDebug) - var err error - repoPath, err = filepath.Abs(args[2]) - if err != nil { - log.Error("Failed to get absolute path of repository: %v\n", err) - os.Exit(1) - } - l, lspPath := checkLSP(args[1], flagLsp) - lang = l - openfile, opentime := checkRepoPath(repoPath, l) - if lang == lsp.Golang { - return - } - // Initialize the LSP client - log.Info("start initialize LSP server %s...\n", lspPath) - client, err = lsp.NewLSPClient(repoPath, openfile, opentime, lsp.ClientOptions{ - Server: lspPath, - Language: l, - Verbose: flagVerbose || flagDebug, - }) - if err != nil { - log.Error("failed to initialize LSP server: %v\n", err) - os.Exit(2) - } - log.Info("end initialize LSP server") - }, - - Run: func(cmd *cobra.Command, args []string) { - action := args[0] - log.Info("start %s repository %s...\n", action, repoPath) - // Perform the action - ctx := context.Background() - switch action { - case "collect": - if excludes != nil { - opts.Excludes = *excludes - } - opts.Language = lang - repo, err := collectSymbol(ctx, client, repoPath, opts) - if err != nil { - log.Error("Failed to collect symbols: %v\n", err) - os.Exit(3) - } - log.Info("all symbols collected, start writing to stdout...\n") - out, err := json.Marshal(repo) - if err != nil { - log.Error("Failed to marshal repository: %v\n", err) - return - } - for n := 0; n < len(out); { - i, err := os.Stdout.Write(out) - if err != nil { - log.Error("Failed to write to stdout: %v\n", err) - return - } - n += i - } - return - default: - log.Error("Unsupported action: %s\n", action) - os.Exit(1) - } - }, - } + go For go codes +RepoPath: + The directory path of the repo to parse +` - rootCmd.Flags().StringVar(&flagLsp, "lsp", "", "Specify the language server path.") - rootCmd.Flags().BoolVarP(&flagVerbose, "verbose", "v", false, "Verbose mode.") - rootCmd.Flags().BoolVarP(&flagDebug, "debug", "d", false, "Debug mode.") - rootCmd.Flags().BoolVarP(&opts.LoadExternalSymbol, "load-external-symbol", "", false, "load external symbols into results") - excludes = rootCmd.Flags().StringSlice("exclude", []string{}, "exclude files or directories") - rootCmd.Flags().BoolVarP(&opts.NoNeedComment, "no-need-comment", "", false, "do not need comment (only works for Go now)") - rootCmd.Flags().BoolVarP(&opts.NeedTest, "need-test", "", false, "need parse test files (only works for Go now)") - - // Execute the command - if err := rootCmd.Execute(); err != nil { - log.Error("Failed to execute command: %v\n", err) - os.Exit(1) +func main() { + flags := flag.NewFlagSet("abcoder", flag.ExitOnError) + flags.Usage = func() { + fmt.Fprintf(os.Stderr, Usage) + fmt.Fprintf(os.Stderr, "Flags:\n") + flags.PrintDefaults() } -} -func checkRepoPath(repoPath string, language lsp.Language) (openfile string, wait time.Duration) { - if _, err := os.Stat(repoPath); os.IsNotExist(err) { - log.Error("Repository not found: %s\n", repoPath) + if len(os.Args) < 4 { + fmt.Fprintf(os.Stderr, Usage) os.Exit(1) } - switch language { - case lsp.Rust: - // NOTICE: open the Cargo.toml file is required for Rust projects - openfile, wait = rust.CheckRepo(repoPath) - default: - openfile = "" - wait = 0 - } - - log.Info("open file '%s' and wait for %d seconds for initialize workspace\n", openfile, wait/time.Second) - return -} - -func checkVerbose(verbose bool, debug bool) { - if debug { - log.SetLogLevel(log.DebugLevel) - } else if verbose { - log.SetLogLevel(log.InfoLevel) - } else { - log.SetLogLevel(log.ErrorLevel) - } -} -func checkLSP(language string, lspPath string) (l lsp.Language, s string) { - switch language { - case "rust": - l, s = rust.GetDefaultLSP() - case "golang", "go": - l = lsp.Golang - s = "" - if _, err := exec.LookPath("go"); err != nil { - if _, err := os.Stat(lspPath); os.IsNotExist(err) { - log.Error("Go compiler not found, please make it excutable!\n", lspPath) - os.Exit(1) - } - } - return - default: - log.Error("Unsupported language: %s\n", language) + action := os.Args[1] + language := lsp.NewLanguage(os.Args[2]) + if language == lsp.Unknown { + fmt.Fprintf(os.Stderr, "unsupported language: %s\n", os.Args[2]) os.Exit(1) } - // check if lsp excutable - if lspPath != "" { - if _, err := exec.LookPath(lspPath); err != nil { - if _, err := os.Stat(lspPath); os.IsNotExist(err) { - log.Error("Language server %s not found, please make it excutable!\n", lspPath) - os.Exit(1) - } + repoPath := os.Args[3] + + var flagLsp string + var flagVerbose bool + flags.StringVar(&flagLsp, "lsp", "", "Specify the language server path.") + flags.BoolVar(&flagVerbose, "verbose", false, "Verbose mode.") + + switch action { + case "parse": + var opts lang.ParseOptions + flags.BoolVar(&opts.LoadExternalSymbol, "load-external-symbol", false, "load external symbols into results") + flags.BoolVar(&opts.NoNeedComment, "no-need-comment", false, "do not need comment (only works for Go now)") + flags.BoolVar(&opts.NeedTest, "need-test", false, "need parse test files (only works for Go now)") + flags.Var((*StringArray)(&opts.Excludes), "exclude", "exclude files or directories, support multiple values") + + flags.Parse(os.Args[4:]) + if flagVerbose { + log.SetLogLevel(log.DebugLevel) } - s = lspPath - } - return -} + opts.Language = language + opts.LSP = flagLsp + opts.Verbose = flagVerbose -func collectSymbol(ctx context.Context, cli *lsp.LSPClient, repoPath string, opts collect.CollectOption) (repo *uniast.Repository, err error) { - if opts.Language == lsp.Golang { - repo, err = callGoParser(ctx, repoPath, opts) - if err != nil { - return nil, err - } - } else { - collector := collect.NewCollector(repoPath, cli) - collector.CollectOption = opts - log.Info("start collecting symbols...\n") - err = collector.Collect(ctx) + out, err := lang.Parse(context.Background(), repoPath, opts) if err != nil { - return nil, err - } - log.Info("all symbols collected.\n") - log.Info("start exporting symbols...\n") - repo, err = collector.Export(ctx) - if err != nil { - return nil, err + log.Error("Failed to parse: %v\n", err) + os.Exit(1) } + fmt.Fprintf(os.Stdout, "%s\n", out) } +} - if err := repo.BuildGraph(); err != nil { - return nil, err - } - return repo, nil +type StringArray []string + +func (s *StringArray) Set(value string) error { + *s = append(*s, value) + return nil +} + +func (s *StringArray) String() string { + return strings.Join(*s, ",") } From ba36b557022c452bfa71fef668e742441e2175a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Wed, 16 Apr 2025 16:07:13 +0800 Subject: [PATCH 03/15] go mod tidy --- go.mod | 5 +---- go.sum | 8 -------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 5dc22fbe..141256fc 100644 --- a/go.mod +++ b/go.mod @@ -1,22 +1,19 @@ module github.com/cloudwego/abcoder -go 1.24.1 +go 1.23.0 require ( github.com/Knetic/govaluate v3.0.0+incompatible github.com/davecgh/go-spew v1.1.1 github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd github.com/sourcegraph/jsonrpc2 v0.2.0 - github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 golang.org/x/mod v0.24.0 golang.org/x/tools v0.32.0 ) require ( - github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/spf13/pflag v1.0.6 // indirect golang.org/x/sync v0.13.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index f89ddc49..4737dbe5 100644 --- a/go.sum +++ b/go.sum @@ -1,25 +1,17 @@ github.com/Knetic/govaluate v3.0.0+incompatible h1:7o6+MAPhYTCF0+fdvoz1xDedhRb4f6s9Tn1Tt7/WTEg= github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd h1:Dq5WSzWsP1TbVi10zPWBI5LKEBDg4Y1OhWEph1wr5WQ= github.com/sourcegraph/go-lsp v0.0.0-20240223163137-f80c5dd31dfd/go.mod h1:SULmZY7YNBsvNiQbrb/BEDdEJ84TGnfyUQxaHt8t8rY= github.com/sourcegraph/jsonrpc2 v0.2.0 h1:KjN/dC4fP6aN9030MZCJs9WQbTOjWHhrtKVpzzSrr/U= github.com/sourcegraph/jsonrpc2 v0.2.0/go.mod h1:ZafdZgk/axhT1cvZAPOhw+95nz2I/Ra5qMlU4gTRwIo= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= From b6f1aafd9c612d6d8cf97b27d128b5fda9685f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Wed, 16 Apr 2025 21:56:10 +0800 Subject: [PATCH 04/15] readme --- README.md | 118 +++++++++++++------------------------------- docs/uniast-zh.md | 16 ++++++ lang/uniast/ast.go | 20 +++++--- lang/uniast/node.go | 17 +++++-- 4 files changed, 76 insertions(+), 95 deletions(-) create mode 100644 docs/uniast-zh.md diff --git a/README.md b/README.md index 8aaf3bbf..465a0ba0 100644 --- a/README.md +++ b/README.md @@ -18,109 +18,57 @@ ![ABCoder](images/ABCoder.png) -ABCoder, an AI-powered tool, streamlines coding by keeping real-time status updates, providing lossless code compression, and giving development guidance. It enhances testing by identifying quality, generating reports, and auto-creating test cases. It also offers guidance for refactoring, including language stack switches. - -# Table of Contents - -- [ABCoder: AI-Based Coder(AKA: A Brand-new Coder)](#abcoder-ai-based-coderaka-a-brand-new-coder) -- [Table of Contents](#table-of-contents) -- [Overview](#overview) -- [Quick Start](#quick-start) - - [Prerequisites](#prerequisites) - - [Running through Coze OpenAPI](#running-through-coze-openapi) -- [Status Update](#status-update) -- [Lossless Compression](#lossless-compression) -- [Development Guide](#development-guide) -- [Testing Enhancements](#testing-enhancements) -- [Refactor/Rewrite Guide](#refactorrewrite-guide) -- [Getting Involved](#getting-involved) - -# Overview - -ABCoder is a comprehensive open-source software development tool that aims to utilize artificial intelligence to enhance -the process of coding. This project focuses on various aspects of software development ranging from repository analysis, -issue and pull request tracking, to automated code compression, development guidance, testing enhancement, and -refactoring guidance. - -# Quick Start - -## Prerequisites -- install git and set your access token for github on cmd-line -- install [rust-toolchain](https://www.rust-lang.org/tools/install) (stable) -- (optional) install [ollama](https://github.com/ollama/ollama) and run your LLM -- (optional) create a [Coze](https://www.coze.com/docs/developer_guides/coze_api_overview?_lang=en) agent and set its OpenAPI key - -## Running through Coze OpenAPI -1. Set .env file for configuration on ABCoder's working directory. Taking Coze as an example: -``` -# cache for repo,AST and so on -WORK_DIR=tmp_abcoder +ABCoder, an AI-oriented code handling tool, is designed to enhance coding-context for Large-Language-Model (LLM). -# exclude dirs for repo parsing, separated by comma -EXCLUDE_DIRS=target,gen-codes -# LLM's api type -API_TYPE=coze # coze|ollama +## Features -# LLM's output language -LANGUAGE=zh +- Universal Abstract Syntax Tree (UniAST), an language-independent and AI-friendly coding-context, provides ample and recursive code information for AI or programs. + +- Universal Parser, parses abitary languages to UniAST. -# Coze options -COZE_API_TOKEN="{YOUR_COZE_API_TOKEN}" -COZE_BOT_ID={YOUR_COZE_BOT_ID} -``` +- Univeral Writer, transforms UniAST back to codes. -2. compile the parsers -``` -./script/make_parser.sh -``` +- (WIP) Code Understanding and Semantic Querying, which can be used to retrieve codes with natural language for either human or AI. + +Based on these features, ABCoder can help developers to easily implement or enhance many AI-assisted coding applications, such as code reviewer, IDE copilot and so on. -3. compile and run ABCoder -``` -cargo run --bin cmd compress https://xxx.git -``` +## Getting Started -4. Once triggered, ABCoder will take three steps: - 1. Download the repository in {REPO_DIR} - 2. Parse the repository and store the AST in {CACHE_DIR} - 3. Call the LLM to compress the repository codes, and refresh the AST for each call. -You can stop the process at anytime after step 2. You can restart the compressing by running the same command. - -5. Export the compressed results +1. Install ABCoder: +```bash +go install github.com/cloudwego/abcoder@latest ``` -cargo run --bin cmd export https://xxx.git --out-dir {OUTPUT_DIR} +2. Use ABCoder to parse a repository to UniAST (JSON) +```bash +abcoder parse > +``` +3. Use ABCoder as a writer +```bash +abcoder write ``` -# Status Update - -The system is designed to automatically fetch the latest data from Github upon triggering relevant tasks, ensuring the -repository status is always up-to-date. It can answer queries related to function, defects based on issue and PR -information. For more details, check out our Issues and Pull Requests sections on Github. - -# Lossless Compression - -The system also offers a lossless compression feature for repository code. The specific implementation methods are being -optimized, and more details will be available soon. +## Universal-Abstract-Syntax-Tree Specification -# Development Guide +see [UniAST Specification](docs/uniast-zh.md) -We welcome all developers wishing to contribute to ABCoder. Our system provides detailed guidance for manual development -and also supports auto-generation of instructions. Check out our Contribution Guide for more information. -# Testing Enhancements +## Supported Languages -The system is designed to analyze existing functions and corresponding tests, identify the overall quality of testing, -produce reports, and automatically generate test cases for weakly covered items. Our goal is to help repositories -enhance and perfect their test cases. +ABCoder currently supports the following languages: -# Refactor/Rewrite Guide +| Language | Parser | Writer | +| -------- | ------ | ------ | +| Go | ✅ | ✅ | +| Rust | ✅ | WIP | +| C | WIP | ❌ | -We offer guidance for both small-scale feature iterations and large-scale rewrites, including language stack switches. -Our system provides a detailed guide for manual development and also supports automated guidance generation. -# Getting Involved +## Getting Involved We encourage developers to contribute and make this tool more powerful. If you are interested in contributing to ABCoder -project, kindly check out our Getting Involved Guide. +project, kindly check out our Getting Involved Guide: +- [Parser Extension](docs/parser_extension-zh.md) +- [Writer Extension](docs/writer_extension-zh.md) > Note: This is a dynamic README and is subject to changes as the project evolves. diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md new file mode 100644 index 00000000..05c6e6df --- /dev/null +++ b/docs/uniast-zh.md @@ -0,0 +1,16 @@ + + diff --git a/lang/uniast/ast.go b/lang/uniast/ast.go index b2a0755a..fbd3e4d5 100644 --- a/lang/uniast/ast.go +++ b/lang/uniast/ast.go @@ -47,11 +47,15 @@ func NewLanguage(lang string) (l Language) { } } +// Node ID (string) => Node +// Node ID comes from Identity.Full() +type NodeGraph map[string]*Node + // Repository type Repository struct { Name string `json:"id"` // module name - Modules map[string]*Module // module name => Library - Graph map[string]*Node + Modules map[string]*Module // module name => module + Graph NodeGraph // node id => node } func (r Repository) ID() string { @@ -223,12 +227,16 @@ func ModPathName(mod ModPath) string { return mod } -// Identity holds identity information about a third party declaration +// Identity is the universal-unique for an ast node. type Identity struct { - ModPath `json:"ModPath" jsonschema:"description=the compiling module of the ast node, the format is {ModName} or {ModName}@{Version}"` // ModPath is the module which the package belongs to - PkgPath `json:"PkgPath" jsonschema:"description=the namespace of the ast node"` // Import Path of the third party package + // module id, must be unique within a repo + ModPath `json:"ModPath" jsonschema:"description=the compiling module of the ast node, the format is {ModName} or {ModName}@{Version}"` + + // path id, must be unique within a module + PkgPath `json:"PkgPath" jsonschema:"description=the namespace of the ast node"` - Name string `json:"Name" jsonschema:"description=unique name of the ast node, the format is one of {FunctionName}, {TypeName}.{MethodName}, {InterfaceName}<{TypeName}>.{MethodName}, {TypeName}"` // Unique Name of declaration (FunctionName, TypeName.MethodName, InterfaceName.MethodName, or TypeName) + // symbol id , must be unique within a package + Name string `json:"Name" jsonschema:"description=unique name of the ast node, the format is one of {FunctionName}, {TypeName}.{MethodName}, {InterfaceName}<{TypeName}>.{MethodName}, {TypeName}"` } func NewIdentity(mod, pkg, name string) Identity { diff --git a/lang/uniast/node.go b/lang/uniast/node.go index 9e70b928..e0960681 100644 --- a/lang/uniast/node.go +++ b/lang/uniast/node.go @@ -201,13 +201,16 @@ type Relation struct { // return json.Marshal(rr) // } -// Node 类型 +// Node Type type NodeType int const ( UNKNOWN NodeType = iota + // top Function、 methods FUNC + // Struct、TypeAlias、Enum... TYPE + // Global Varable or Global Const VAR ) @@ -251,12 +254,18 @@ func NewNodeType(typ string) NodeType { } } +// an Entity in a language type Node struct { + // unique identity of the node Identity - Type NodeType + // Node Type, must be one of FUNC, TYPE, VAR + Type NodeType + // other nodes that depends on this node Dependencies []Relation - References []Relation - Repo *Repository `json:"-"` + // other nodes that reference this node + References []Relation + // the repo that this node belongs to + Repo *Repository `json:"-"` } func (n Node) GetDependency(id Identity) *Relation { From 4a853dd8e756ed51c5e976ff80e0137e1d2e2a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Thu, 17 Apr 2025 14:25:08 +0800 Subject: [PATCH 05/15] feat: comand write --- README.md | 27 ++-- lang/collect/collect.go | 12 +- lang/golang/writer/write.go | 38 +++++- lang/golang/writer/write_test.go | 2 +- lang/lsp/client.go | 3 +- lang/lsp/spec.go | 32 ----- lang/parse.go | 41 +++--- lang/rust/repo.go | 6 +- lang/uniast/ast.go | 13 +- lang/write.go | 50 ++++++++ main.go | 80 +++++++++--- out/localsession/backup/metainfo.go | 97 ++++++++++++++ out/localsession/gls.go | 145 +++++++++++++++++++++ out/localsession/go.mod | 14 ++ out/localsession/go.sum | 21 +++ out/localsession/manager.go | 190 ++++++++++++++++++++++++++++ out/localsession/session.go | 158 +++++++++++++++++++++++ out/localsession/stubs.go | 74 +++++++++++ 18 files changed, 899 insertions(+), 104 deletions(-) create mode 100644 lang/write.go create mode 100644 out/localsession/backup/metainfo.go create mode 100644 out/localsession/gls.go create mode 100644 out/localsession/go.mod create mode 100644 out/localsession/go.sum create mode 100644 out/localsession/manager.go create mode 100644 out/localsession/session.go create mode 100644 out/localsession/stubs.go diff --git a/README.md b/README.md index 465a0ba0..b5bfe31b 100644 --- a/README.md +++ b/README.md @@ -18,20 +18,17 @@ ![ABCoder](images/ABCoder.png) -ABCoder, an AI-oriented code handling tool, is designed to enhance coding-context for Large-Language-Model (LLM). - +ABCoder, an AI-oriented code-processing tool, is designed to enhance coding-context for Large-Language-Model (LLM), simplify AI-assisted-coding process. ## Features -- Universal Abstract Syntax Tree (UniAST), an language-independent and AI-friendly coding-context, provides ample and recursive code information for AI or programs. +- Universal Abstract Syntax Tree (UniAST), an language-independent and AI-friendly coding-context AST specfication, providing ample and recursive code information for both AI and hunman. - Universal Parser, parses abitary languages to UniAST. - Univeral Writer, transforms UniAST back to codes. -- (WIP) Code Understanding and Semantic Querying, which can be used to retrieve codes with natural language for either human or AI. - -Based on these features, ABCoder can help developers to easily implement or enhance many AI-assisted coding applications, such as code reviewer, IDE copilot and so on. +Based on these features, developers can easily implement or enhance their AI-assisted-coding agent or workflow, such as reviewing, optimizing, translating... ## Getting Started @@ -41,11 +38,12 @@ go install github.com/cloudwego/abcoder@latest ``` 2. Use ABCoder to parse a repository to UniAST (JSON) ```bash -abcoder parse > +abcoder parse {language} {repo-path} > ast.json ``` -3. Use ABCoder as a writer +3. Do your magic with UniAST... +4. Use ABCoder to write a UniAST back to codes ```bash -abcoder write +abcoder write {language} ast.json ``` ## Universal-Abstract-Syntax-Tree Specification @@ -57,11 +55,12 @@ see [UniAST Specification](docs/uniast-zh.md) ABCoder currently supports the following languages: -| Language | Parser | Writer | -| -------- | ------ | ------ | -| Go | ✅ | ✅ | -| Rust | ✅ | WIP | -| C | WIP | ❌ | +| Language | Parser | Writer | +| -------- | ----------- | ----------- | +| Go | ✅ | ✅ | +| Rust | ✅ | Coming Soon | +| Kotlin | Coming Soon | ❌ | +| C | WIP | ❌ | ## Getting Involved diff --git a/lang/collect/collect.go b/lang/collect/collect.go index 9f296810..c68f8693 100644 --- a/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -23,13 +23,13 @@ import ( "unicode" "github.com/cloudwego/abcoder/lang/log" - "github.com/cloudwego/abcoder/lang/lsp" . "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/rust" + "github.com/cloudwego/abcoder/lang/uniast" ) type CollectOption struct { - Language lsp.Language + Language uniast.Language LoadExternalSymbol bool NeedStdSymbol bool NoNeedComment bool @@ -75,9 +75,9 @@ type functionInfo struct { OutputsSorted []dependency `json:"-"` } -func switchSpec(l lsp.Language) lsp.LanguageSpec { +func switchSpec(l uniast.Language) LanguageSpec { switch l { - case Rust: + case uniast.Rust: return &rust.RustSpec{} default: panic(fmt.Sprintf("unsupported language %s", l)) @@ -94,7 +94,7 @@ func NewCollector(repo string, cli *LSPClient) *Collector { deps: map[*DocumentSymbol][]dependency{}, vars: map[*DocumentSymbol]dependency{}, } - if cli.Language == Rust { + if cli.Language == uniast.Rust { ret.modPatcher = &rust.RustModulePatcher{Root: repo} } return ret @@ -522,7 +522,7 @@ func (c *Collector) collectImpl(ctx context.Context, sym *DocumentSymbol, depth } var impl string if fn > 0 && fn < len(sym.Tokens) { - impl = lsp.ChunkHead(sym.Text, sym.Location.Range.Start, sym.Tokens[fn].Location.Range.Start) + impl = ChunkHead(sym.Text, sym.Location.Range.Start, sym.Tokens[fn].Location.Range.Start) } if impl == "" || len(impl) < len(sym.Name) { impl = sym.Name diff --git a/lang/golang/writer/write.go b/lang/golang/writer/write.go index e54eef02..474f34f3 100644 --- a/lang/golang/writer/write.go +++ b/lang/golang/writer/write.go @@ -22,11 +22,14 @@ import ( "go/parser" "go/token" "os" + "os/exec" "path/filepath" + "regexp" "sort" "strconv" "strings" + "github.com/cloudwego/abcoder/lang/log" "github.com/cloudwego/abcoder/lang/uniast" "github.com/cloudwego/abcoder/lang/utils" ) @@ -36,7 +39,7 @@ var _ uniast.Writer = (*Writer)(nil) type Options struct { // RepoDir string // OutDir string - GoVersion string + CompilerPath string } type Writer struct { @@ -55,6 +58,9 @@ type chunk struct { } func NewWriter(opts Options) *Writer { + if opts.CompilerPath == "" { + opts.CompilerPath = "go" + } return &Writer{ Options: opts, visited: make(map[string]map[string]*fileNode), @@ -126,12 +132,16 @@ func (w *Writer) WriteModule(repo *uniast.Repository, modPath string, outDir str } } - // go mod + // create go mod var bs strings.Builder bs.WriteString("module ") bs.WriteString(mod.Name) bs.WriteString("\n\ngo ") - bs.WriteString(w.Options.GoVersion) + goVersion, err := w.GetGoVersion() + if err != nil { + goVersion = "1.21" + } + bs.WriteString(goVersion) bs.WriteString("\n\n") if len(mod.Dependencies) > 0 { bs.WriteString("require (\n") @@ -151,9 +161,31 @@ func (w *Writer) WriteModule(repo *uniast.Repository, modPath string, outDir str return fmt.Errorf("write go.mod failed: %v", err) } + // go mod tidy + cmd := exec.Command(w.Options.CompilerPath, "mod", "tidy") + cmd.Dir = outdir + if err := cmd.Run(); err != nil { + log.Error("go mod tidy failed: %v", err) + } return nil } +var goVersionRegex = regexp.MustCompile(`go(\d+\.\d+(\.\d+)?)`) + +func (w *Writer) GetGoVersion() (string, error) { + cmd := exec.Command(w.Options.CompilerPath, "version") + out, err := cmd.Output() + if err != nil { + return "", fmt.Errorf("get go version failed: %v", err) + } + // extract with regexp + matches := goVersionRegex.FindStringSubmatch(string(out)) + if len(matches) == 0 { + return "", fmt.Errorf("get go version failed: %v", err) + } + return matches[1], nil +} + func (w *Writer) appendPackage(repo *uniast.Repository, pkg *uniast.Package) error { for _, v := range pkg.Vars { n := repo.GetNode(v.Identity) diff --git a/lang/golang/writer/write_test.go b/lang/golang/writer/write_test.go index 751a720a..aee60bba 100644 --- a/lang/golang/writer/write_test.go +++ b/lang/golang/writer/write_test.go @@ -46,7 +46,7 @@ func TestWriter_WriteRepo(t *testing.T) { name: "test", fields: fields{ Options: Options{ - GoVersion: "1.18", + CompilerPath: "1.18", }, }, args: args{repo: repo}, diff --git a/lang/lsp/client.go b/lang/lsp/client.go index 6826a109..58479fe6 100644 --- a/lang/lsp/client.go +++ b/lang/lsp/client.go @@ -24,6 +24,7 @@ import ( "time" "github.com/cloudwego/abcoder/lang/log" + "github.com/cloudwego/abcoder/lang/uniast" lsp "github.com/sourcegraph/go-lsp" "github.com/sourcegraph/jsonrpc2" ) @@ -39,7 +40,7 @@ type LSPClient struct { type ClientOptions struct { Server string - Language + uniast.Language Verbose bool } diff --git a/lang/lsp/spec.go b/lang/lsp/spec.go index 62d34a63..454dc2c9 100644 --- a/lang/lsp/spec.go +++ b/lang/lsp/spec.go @@ -15,41 +15,9 @@ package lsp import ( - "strings" - "github.com/cloudwego/abcoder/lang/uniast" ) -type Language string - -const ( - Rust Language = "rust" - Golang Language = "golang" - Unknown Language = "" -) - -func NewLanguage(l string) Language { - switch strings.ToLower(l) { - case "rust": - return Rust - case "go", "golang": - return Golang - default: - return Unknown - } -} - -func (l Language) String() string { - switch l { - case Rust: - return "rust" - case Golang: - return "go" - default: - return "unknown" - } -} - type LanguageSpec interface { // initialize a root workspace, and return all modules [modulename=>abs-path] inside WorkSpace(root string) (map[string]string, error) diff --git a/lang/parse.go b/lang/parse.go index 61a51627..95f3d77c 100644 --- a/lang/parse.go +++ b/lang/parse.go @@ -33,8 +33,11 @@ import ( "github.com/cloudwego/abcoder/lang/uniast" ) +// ParseOptions is the options for parsing the repo. type ParseOptions struct { - LSP string + // LSP sever executable path + LSP string + // Language of the repo Verbose bool collect.CollectOption } @@ -43,7 +46,10 @@ func Parse(ctx context.Context, uri string, args ParseOptions) ([]byte, error) { if !filepath.IsAbs(uri) { uri, _ = filepath.Abs(uri) } - l, lspPath := checkLSP(args.Language, args.LSP) + l, lspPath, err := checkLSP(args.Language, args.LSP) + if err != nil { + return nil, err + } openfile, opentime, err := checkRepoPath(uri, l) if err != nil { return nil, err @@ -80,12 +86,12 @@ func Parse(ctx context.Context, uri string, args ParseOptions) ([]byte, error) { return out, nil } -func checkRepoPath(repoPath string, language lsp.Language) (openfile string, wait time.Duration, err error) { +func checkRepoPath(repoPath string, language uniast.Language) (openfile string, wait time.Duration, err error) { if _, err := os.Stat(repoPath); os.IsNotExist(err) { return "", 0, fmt.Errorf("repository not found: %s", repoPath) } switch language { - case lsp.Rust: + case uniast.Rust: // NOTICE: open the Cargo.toml file is required for Rust projects openfile, wait = rust.CheckRepo(repoPath) default: @@ -97,40 +103,29 @@ func checkRepoPath(repoPath string, language lsp.Language) (openfile string, wai return } -func checkVerbose(verbose bool, debug bool) { - if debug { - - } else if verbose { - log.SetLogLevel(log.InfoLevel) - } else { - log.SetLogLevel(log.ErrorLevel) - } -} - -func checkLSP(language lsp.Language, lspPath string) (l lsp.Language, s string) { +func checkLSP(language uniast.Language, lspPath string) (l uniast.Language, s string, err error) { switch language { - case lsp.Rust: + case uniast.Rust: l, s = rust.GetDefaultLSP() - case lsp.Golang: - l = lsp.Golang + case uniast.Golang: + l = uniast.Golang s = "" if _, err := exec.LookPath("go"); err != nil { if _, err := os.Stat(lspPath); os.IsNotExist(err) { log.Error("Go compiler not found, please make it excutable!\n", lspPath) - os.Exit(1) + return uniast.Unknown, "", err } } return default: - log.Error("Unsupported language: %s\n", language) - os.Exit(1) + return uniast.Unknown, "", fmt.Errorf("unsupported language: %s", language) } // check if lsp excutable if lspPath != "" { if _, err := exec.LookPath(lspPath); err != nil { if _, err := os.Stat(lspPath); os.IsNotExist(err) { log.Error("Language server %s not found, please make it excutable!\n", lspPath) - os.Exit(1) + return uniast.Unknown, "", err } } s = lspPath @@ -140,7 +135,7 @@ func checkLSP(language lsp.Language, lspPath string) (l lsp.Language, s string) } func collectSymbol(ctx context.Context, cli *lsp.LSPClient, repoPath string, opts collect.CollectOption) (repo *uniast.Repository, err error) { - if opts.Language == lsp.Golang { + if opts.Language == uniast.Golang { repo, err = callGoParser(ctx, repoPath, opts) if err != nil { return nil, err diff --git a/lang/rust/repo.go b/lang/rust/repo.go index 2fc00c68..0bf2c041 100644 --- a/lang/rust/repo.go +++ b/lang/rust/repo.go @@ -23,7 +23,7 @@ import ( "time" "github.com/cloudwego/abcoder/lang/log" - "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/uniast" "github.com/cloudwego/abcoder/lang/utils" ) @@ -73,8 +73,8 @@ next: return openfile, wait } -func GetDefaultLSP() (lang lsp.Language, name string) { - return lsp.Rust, "rust-analyzer" +func GetDefaultLSP() (lang uniast.Language, name string) { + return uniast.Rust, "rust-analyzer" } func GetLastCommitTime(repo string) time.Time { diff --git a/lang/uniast/ast.go b/lang/uniast/ast.go index fbd3e4d5..52c434eb 100644 --- a/lang/uniast/ast.go +++ b/lang/uniast/ast.go @@ -28,9 +28,20 @@ type Language string const ( Golang Language = "go" Rust Language = "rust" - Unknown Language = "unknown" + Unknown Language = "" ) +func (l Language) String() string { + switch l { + case Rust: + return "rust" + case Golang: + return "go" + default: + return string(l) + } +} + func NewLanguage(lang string) (l Language) { // sp := strings.Split(lang, "@") // if len(sp) > 1 { diff --git a/lang/write.go b/lang/write.go new file mode 100644 index 00000000..1e8d14f6 --- /dev/null +++ b/lang/write.go @@ -0,0 +1,50 @@ +/** + * Copyright 2025 ByteDance Inc. + * + * 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 lang + +import ( + "context" + "fmt" + + "github.com/cloudwego/abcoder/lang/golang/writer" + "github.com/cloudwego/abcoder/lang/uniast" +) + +// Write writes the AST to the output directory. +type WriteOptions struct { + // OutputDir is the output directory. + OutputDir string + // Compiler path + Compiler string +} + +// Write writes the AST to the output directory. +func Write(ctx context.Context, repo *uniast.Repository, args WriteOptions) error { + for mpath, m := range repo.Modules { + var w uniast.Writer + switch m.Language { + case uniast.Golang: + w = writer.NewWriter(writer.Options{CompilerPath: args.Compiler}) + default: + return fmt.Errorf("unsupported language: %s", m.Language) + } + if err := w.WriteModule(repo, mpath, args.OutputDir); err != nil { + return err + } + } + return nil +} diff --git a/main.go b/main.go index 6a1d5ff2..53e026f0 100644 --- a/main.go +++ b/main.go @@ -35,21 +35,25 @@ import ( "flag" "fmt" "os" + "path/filepath" "strings" "github.com/cloudwego/abcoder/lang" "github.com/cloudwego/abcoder/lang/log" - "github.com/cloudwego/abcoder/lang/lsp" + "github.com/cloudwego/abcoder/lang/uniast" + "github.com/cloudwego/abcoder/lang/utils" ) -const Usage = `abcoder [Flags] +const Usage = `abcoder [Flags] Action: - parse Parse the whole repo and export AST + parse parse the whole repo and output UniAST + write write the UniAST to the output directory Language: - rust For rust codes - go For go codes -RepoPath: - The directory path of the repo to parse + rust for rust codes + go for golang codes +URI: + for action parse: the directory path of the repo + for action write: the file path of the UniAST for writer ` func main() { @@ -65,42 +69,78 @@ func main() { os.Exit(1) } - action := os.Args[1] - language := lsp.NewLanguage(os.Args[2]) - if language == lsp.Unknown { + action := strings.ToLower(os.Args[1]) + language := uniast.NewLanguage(os.Args[2]) + if language == uniast.Unknown { fmt.Fprintf(os.Stderr, "unsupported language: %s\n", os.Args[2]) os.Exit(1) } - repoPath := os.Args[3] - var flagLsp string - var flagVerbose bool - flags.StringVar(&flagLsp, "lsp", "", "Specify the language server path.") - flags.BoolVar(&flagVerbose, "verbose", false, "Verbose mode.") + uri := os.Args[3] + + flagVerbose := flags.Bool("verbose", false, "Verbose mode.") + + flagOutput := flags.String("o", "", "Output path.") switch action { case "parse": var opts lang.ParseOptions + flags.BoolVar(&opts.LoadExternalSymbol, "load-external-symbol", false, "load external symbols into results") flags.BoolVar(&opts.NoNeedComment, "no-need-comment", false, "do not need comment (only works for Go now)") flags.BoolVar(&opts.NeedTest, "need-test", false, "need parse test files (only works for Go now)") flags.Var((*StringArray)(&opts.Excludes), "exclude", "exclude files or directories, support multiple values") + flagLsp := flags.String("lsp", "", "Specify the language server path.") flags.Parse(os.Args[4:]) - if flagVerbose { + if flagVerbose != nil && *flagVerbose { log.SetLogLevel(log.DebugLevel) + opts.Verbose = true } opts.Language = language - opts.LSP = flagLsp - opts.Verbose = flagVerbose + if flagLsp != nil { + opts.LSP = *flagLsp + } - out, err := lang.Parse(context.Background(), repoPath, opts) + out, err := lang.Parse(context.Background(), uri, opts) if err != nil { log.Error("Failed to parse: %v\n", err) os.Exit(1) } - fmt.Fprintf(os.Stdout, "%s\n", out) + + if flagOutput != nil && *flagOutput != "" { + if err := utils.MustWriteFile(*flagOutput, out); err != nil { + log.Error("Failed to write output: %v\n", err) + } + } else { + fmt.Fprintf(os.Stdout, "%s\n", out) + } + case "write": + repo, err := uniast.LoadRepo(uri) + if err != nil { + log.Error("Failed to load repo: %v\n", err) + os.Exit(1) + } + + var opts lang.WriteOptions + flags.StringVar(&opts.Compiler, "compiler", "", "destination compiler path.") + + flags.Parse(os.Args[4:]) + + if flagVerbose != nil && *flagVerbose { + log.SetLogLevel(log.DebugLevel) + } + if flagOutput != nil && *flagOutput != "" { + opts.OutputDir = *flagOutput + } else { + opts.OutputDir = filepath.Base(repo.Name) + } + + if err := lang.Write(context.Background(), repo, opts); err != nil { + log.Error("Failed to write: %v\n", err) + os.Exit(1) + } } } diff --git a/out/localsession/backup/metainfo.go b/out/localsession/backup/metainfo.go new file mode 100644 index 00000000..7beb9e69 --- /dev/null +++ b/out/localsession/backup/metainfo.go @@ -0,0 +1,97 @@ +package backup + +import ( + "context" + "github.com/bytedance/gopkg/cloud/metainfo" + "github.com/cloudwego/localsession" +) +// BackupHandler is used to decide and recover prev context to cur context +type BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool) + +// Options +type Options struct { + Enable bool + localsession.ManagerOptions +} + +// Default Options +func DefaultOptions() Options { + return Options{ + Enable: false, + ManagerOptions: localsession.DefaultManagerOptions(), + } +} + +// Init gloabal session manager +// It uses env config first, the key is localsession.SESSION_CONFIG_KEY +func Init(opts Options) { + if opts.Enable { + localsession.InitDefaultManager(opts.ManagerOptions) + } +} + +// If handler != nil, this func will try to merge metainfo +// and pre-defined key-values (through Options.BackupHanlder) +// from backup context into given context +func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context { + if handler == nil { + return ctx + } + s, ok := localsession.CurSession() + if !ok { + return ctx + } + c, ok := s.(localsession.SessionCtx) + if !ok { + return ctx + } + pre := c.Export() + + // trigger user-defined handler if any + nctx, backup := handler(pre, ctx) + if !backup { + return ctx + } + ctx = nctx + + // two-way merge all persistent metainfo if pre context has + if n := metainfo.CountPersistentValues(pre); n > 0 { + // persistent kvs + kvs := make([]string, 0, n*2) + mkvs := metainfo.GetAllPersistentValues(ctx) + + // incoming ctx is prior to session + if len(mkvs) == 0 { + // merge all kvs from pre + metainfo.RangePersistentValues(pre, func(k, v string) bool { + kvs = append(kvs, k, v) + return true + }) + } else { + metainfo.RangePersistentValues(pre, func(k, v string) bool { + // filter kvs which exists in cur + if _, ok := mkvs[k]; !ok { + kvs = append(kvs, k, v) + } + return true + }) + } + ctx = metainfo.WithPersistentValues(ctx, kvs...) + } + + return ctx +} + +// Set current Sessioin +func BackupCtx(ctx context.Context) { + if localsession.GetDefaultManager() == nil { + return + } + localsession.BindSession(localsession.NewSessionCtx(ctx)) +} + +// Unset current Session +func ClearCtx() { + localsession.UnbindSession() +} + diff --git a/out/localsession/gls.go b/out/localsession/gls.go new file mode 100644 index 00000000..d167a1c3 --- /dev/null +++ b/out/localsession/gls.go @@ -0,0 +1,145 @@ +package localsession + +import ( + "fmt" + "os" + "strconv" + "strings" + "sync" + "time" +) +// SESSION_CONFIG_KEY is the env key for configuring default session manager. +// +// Value format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval] +// - EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled +// - ShardNumber: integer > 0 +// - GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC +// +// Once the key is set, default option values will be set if the option value doesn't exist. +const SESSION_CONFIG_KEY = "CLOUDWEGO_SESSION_CONFIG_KEY" + +var defaultManagerObj *SessionManager + +var defaultManagerOnce sync.Once + +// DefaultManagerOptions returns default options for the default manager +func DefaultManagerOptions() ManagerOptions { + return ManagerOptions{ + ShardNumber: 100, + GCInterval: time.Minute * 10, + EnableImplicitlyTransmitAsync: false, + } +} + +// GetDefaultManager returns the default manager +func GetDefaultManager() *SessionManager { + return defaultManagerObj +} + +// InitDefaultManager update and restart default manager. +// It accept argument opts and env config both. +// +// NOTICE: +// - It use env SESSION_CONFIG_KEY prior to argument opts; +// - If both env and opts are empty, it won't reset manager; +// - For concurrent safety, you can only successfully reset manager ONCE. +// +//go:nocheckptr +func InitDefaultManager(opts ManagerOptions) { + defaultManagerOnce.Do(func() { + // env config has high priority + checkEnvOptions(&opts) + + if defaultManagerObj != nil { + defaultManagerObj.Close() + } + obj := NewSessionManager(opts) + defaultManagerObj = &obj + }) +} + +func checkEnvOptions(opts *ManagerOptions) { + if env := os.Getenv(SESSION_CONFIG_KEY); env != "" { + envs := strings.Split(env, ",") + // parse first option as EnableTransparentTransmitAsync + if strings.ToLower(envs[0]) == "true" { + opts.EnableImplicitlyTransmitAsync = true + } + + // parse first option as ShardNumber + if len(envs) > 1 { + if opt, err := strconv.Atoi(envs[1]); err == nil { + opts.ShardNumber = opt + } + } + + // parse third option as EnableTransparentTransmitAsync + if len(envs) > 2 { + if d, err := time.ParseDuration(envs[2]); err == nil && d > time.Second { + opts.GCInterval = d + } + } + } +} + +// CurSession gets the session for current goroutine +// +// NOTICE: MUST call `InitDefaultManager()` once before using this API +func CurSession() (Session, bool) { + if defaultManagerObj == nil { + return nil, false + } + s, ok := defaultManagerObj.GetSession(SessionID(goID())) + return s, ok +} + +// BindSession binds the session with current goroutine +// +// NOTICE: MUST call `InitDefaultManager()` once before using this API +func BindSession(s Session) { + if defaultManagerObj == nil { + return + } + defaultManagerObj.BindSession(SessionID(goID()), s) +} + +// UnbindSession unbind a session (if any) with current goroutine +// +// NOTICE: If you want to end the session, +// please call `Disable()` (or whatever make the session invalid) +// on your session's implementation +// +// NOTICE: MUST call `InitDefaultManager()` once before using this API +func UnbindSession() { + if defaultManagerObj == nil { + return + } + defaultManagerObj.UnbindSession(SessionID(goID())) +} + +// Go calls f asynchronously and pass caller's session to the new goroutine +func Go(f func()) { + s, ok := CurSession() + if !ok { + GoSession(nil, f) + } else { + GoSession(s, f) + } +} + +// SessionGo calls f asynchronously and pass s session to the new goroutine +func GoSession(s Session, f func()) { + go func() { + defer func() { + if v := recover(); v != nil { + println(fmt.Sprintf("GoSession recover: %v", v)) + } + UnbindSession() + }() + if s != nil { + BindSession(s) + } + f() + }() +} + diff --git a/out/localsession/go.mod b/out/localsession/go.mod new file mode 100644 index 00000000..0e8e5d5d --- /dev/null +++ b/out/localsession/go.mod @@ -0,0 +1,14 @@ +module github.com/cloudwego/localsession + +go 1.24.1 + +require ( + github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b + github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5 +) + +require ( + github.com/modern-go/reflect2 v1.0.2 // indirect + golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect + golang.org/x/text v0.3.7 // indirect +) diff --git a/out/localsession/go.sum b/out/localsession/go.sum new file mode 100644 index 00000000..76f8e2ad --- /dev/null +++ b/out/localsession/go.sum @@ -0,0 +1,21 @@ +github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b h1:R6PWoQtxEMpWJPHnpci+9LgFxCS7iJCfOGBvCgZeTKI= +github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5 h1:uiS4zKYKJVj5F3ID+5iylfKPsEQmBEOucSD9Vgmn0i0= +github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5/go.mod h1:I8AX+yW//L8Hshx6+a1m3bYkwXkpsVjA2795vP4f4oQ= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b h1:tvrvnPFcdzp294diPnrdZZZ8XUt2Tyj7svb7X52iDuU= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/out/localsession/manager.go b/out/localsession/manager.go new file mode 100644 index 00000000..ab23f5ba --- /dev/null +++ b/out/localsession/manager.go @@ -0,0 +1,190 @@ +package localsession + +import ( + "sync" + "sync/atomic" + "time" +) +// ManagerOptions for SessionManager +type ManagerOptions struct { + // EnableImplicitlyTransmitAsync enables transparently transmit + // current session to children goroutines + // + // WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`, + // otherwise transmitting will be disfunctional + EnableImplicitlyTransmitAsync bool + + // ShardNumber is used to shard session id, it must be larger than zero + ShardNumber int + + // GCInterval decides the GC interval for SessionManager, + // it must be larger than 1s or zero means disable GC + GCInterval time.Duration +} + +type shard struct { + lock sync.RWMutex + m map[SessionID]Session +} + +// SessionManager maintain and manage sessions +type SessionManager struct { + shards []*shard + inGC uint32 + tik *time.Ticker + opts ManagerOptions +} + +var defaultShardCap int = 10 + +func newShard() *shard { + ret := new(shard) + ret.m = make(map[SessionID]Session, defaultShardCap) + return ret +} + +// NewSessionManager creates a SessionManager with default containers +// If opts.GCInterval > 0, it will start scheduled GC() loop automatically +func NewSessionManager(opts ManagerOptions) SessionManager { + if opts.ShardNumber <= 0 { + panic("ShardNumber must be larger than zero") + } + shards := make([]*shard, opts.ShardNumber) + for i := range shards { + shards[i] = newShard() + } + ret := SessionManager{ + shards: shards, + opts: opts, + } + + if opts.GCInterval > 0 { + ret.startGC() + } + return ret +} + +// Options shows the manager's Options +func (self SessionManager) Options() ManagerOptions { + return self.opts +} + +// SessionID is the identity of a session +type SessionID uint64 + +func (s *shard) Load(id SessionID) (Session, bool) { + s.lock.RLock() + + // p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&s.m))) + // m := *(*map[SessionID]Session)(unsafe.Pointer(p)) + + session, ok := s.m[id] + s.lock.RUnlock() + return session, ok +} + +func (s *shard) Store(id SessionID, se Session) { + s.lock.Lock() + s.m[id] = se + s.lock.Unlock() +} + +func (s *shard) Delete(id SessionID) { + s.lock.Lock() + delete(s.m, id) + s.lock.Unlock() +} + +// Get gets specific session +// or get inherited session if option EnableImplicitlyTransmitAsync is true +func (self *SessionManager) GetSession(id SessionID) (Session, bool) { + shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] + session, ok := shard.Load(id) + if ok { + return session, ok + } + if !self.opts.EnableImplicitlyTransmitAsync { + return nil, false + } + + id, ok = getSessionID() + if !ok { + return nil, false + } + shard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)] + return shard.Load(id) +} + +// BindSession binds the session with current goroutine +func (self *SessionManager) BindSession(id SessionID, s Session) { + shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] + + shard.Store(id, s) + + if self.opts.EnableImplicitlyTransmitAsync { + transmitSessionID(id) + } +} + +// UnbindSession clears current session +// +// Notice: If you want to end the session, +// please call `Disable()` (or whatever make the session invalid) +// on your session's implementation +func (self *SessionManager) UnbindSession(id SessionID) { + shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] + + _, ok := shard.Load(id) + if ok { + shard.Delete(id) + } + + if self.opts.EnableImplicitlyTransmitAsync { + clearSessionID() + } +} + +// GC sweep invalid sessions and release unused memory +func (self SessionManager) GC() { + if !atomic.CompareAndSwapUint32(&self.inGC, 0, 1) { + return + } + + for _, shard := range self.shards { + shard.lock.Lock() + n := shard.m + m := make(map[SessionID]Session, len(n)) + for id, s := range n { + // Warning: may panic here? + if s.IsValid() { + m[id] = s + } + } + // atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&shard.m)), unsafe.Pointer(&m)) + shard.m = m + shard.lock.Unlock() + } + + atomic.StoreUint32(&self.inGC, 0) +} + +// startGC start a scheduled goroutine to call GC() according to GCInterval +func (self *SessionManager) startGC() { + if self.opts.GCInterval < time.Second { + panic("GCInterval must be larger than 1 second") + } + self.tik = time.NewTicker(self.opts.GCInterval) + go func() { + for range self.tik.C { + self.GC() + } + }() +} + +// Close stop persistent work for the manager, like GC +func (self SessionManager) Close() { + if self.tik != nil { + self.tik.Stop() + } +} + diff --git a/out/localsession/session.go b/out/localsession/session.go new file mode 100644 index 00000000..bcff3a3a --- /dev/null +++ b/out/localsession/session.go @@ -0,0 +1,158 @@ +package localsession + +import ( + "context" + "sync" + "sync/atomic" + "time" +) +// Session represents a local storage for one session +type Session interface { + // IsValid tells if the session is valid at present + IsValid() bool + + // Get returns value for specific key + Get(key interface{}) interface{} + + // WithValue sets value for specific key,and return newly effective session + WithValue(key interface{}, val interface{}) Session +} + +// SessionCtx implements Session with context, +// which means children session WON'T affect parent and sibling sessions +type SessionCtx struct { + enabled *atomic.Value + storage context.Context +} + +// NewSessionCtx creates and enables a SessionCtx +func NewSessionCtx(ctx context.Context) SessionCtx { + var enabled atomic.Value + enabled.Store(true) + return SessionCtx{ + enabled: &enabled, + storage: ctx, + } +} + +// NewSessionCtx creates and enables a SessionCtx, +// and disable the session after timeout +func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx { + ret := NewSessionCtx(ctx) + go func() { + <-time.NewTimer(timeout).C + ret.Disable() + }() + return ret +} + +// Disable ends the session +func (self SessionCtx) Disable() { + self.enabled.Store(false) +} + +// Export exports underlying context +func (self SessionCtx) Export() context.Context { + return self.storage +} + +// IsValid tells if the session is valid at present +func (self SessionCtx) IsValid() bool { + return self.enabled.Load().(bool) +} + +// Get value for specific key +func (self SessionCtx) Get(key interface{}) interface{} { + return self.storage.Value(key) +} + +// Set value for specific key,and return newly effective session +func (self SessionCtx) WithValue(key interface{}, val interface{}) Session { + ctx := context.WithValue(self.storage, key, val) + return SessionCtx{ + enabled: self.enabled, + storage: ctx, + } +} + +// NewSessionMap implements Session with map, +// which means children session WILL affect parent session and sibling sessions +type SessionMap struct { + enabled *atomic.Value + storage map[interface{}]interface{} + lock sync.RWMutex +} + +// NewSessionMap creates and enables a SessionMap +func NewSessionMap(m map[interface{}]interface{}) *SessionMap { + var enabled atomic.Value + enabled.Store(true) + return &SessionMap{ + enabled: &enabled, + storage: m, + } +} + +// NewSessionCtx creates and enables a SessionCtx, +// and disable the session after timeout +func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap { + ret := NewSessionMap(m) + go func() { + <-time.NewTimer(timeout).C + ret.Disable() + }() + return ret +} + +// IsValid tells if the session is valid at present +func (self *SessionMap) IsValid() bool { + if self == nil { + return false + } + return self.enabled.Load().(bool) +} + +// Disable ends the session +func (self *SessionMap) Disable() { + if self == nil { + return + } + self.enabled.Store(false) +} + +// Export COPIES and exports underlying map +func (self *SessionMap) Export() map[interface{}]interface{} { + if self == nil { + return nil + } + m := make(map[interface{}]interface{}, len(self.storage)) + self.lock.RLock() + for k, v := range self.storage { + m[k] = v + } + self.lock.RUnlock() + return m +} + +// Get value for specific key +func (self *SessionMap) Get(key interface{}) interface{} { + if self == nil { + return nil + } + self.lock.RLock() + val := self.storage[key] + self.lock.RUnlock() + return val +} + +// Set value for specific key,and return itself +func (self *SessionMap) WithValue(key, val interface{}) Session { + if self == nil { + return nil + } + self.lock.Lock() + self.storage[key] = val + self.lock.Unlock() + return self +} + diff --git a/out/localsession/stubs.go b/out/localsession/stubs.go new file mode 100644 index 00000000..8af7932b --- /dev/null +++ b/out/localsession/stubs.go @@ -0,0 +1,74 @@ +package localsession + +import ( + "strconv" + _ "unsafe" + "github.com/modern-go/gls" +) +//go:nocheckptr +func goID() uint64 { + return uint64(gls.GoID()) +} + +type labelMap map[string]string + +//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel +func setPprofLabel(m *labelMap) + +//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel +func getPproLabel() *labelMap + +const Pprof_Label_Session_ID = "go_session_id" + +func transmitSessionID(id SessionID) { + m := getPproLabel() + + var n labelMap + if m == nil { + n = make(labelMap) + } else { + n = make(labelMap, len(*m)) + for k, v := range *m { + if k != Pprof_Label_Session_ID { + n[k] = v + } + } + } + + n[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10) + setPprofLabel(&n) +} + +func getSessionID() (SessionID, bool) { + m := getPproLabel() + if m == nil { + return 0, false + } + if v, ok := (*m)[Pprof_Label_Session_ID]; !ok { + return 0, false + } else { + id, err := strconv.ParseInt(v, 10, 64) + if err != nil { + return 0, false + } + return SessionID(id), true + } +} + +func clearSessionID() { + m := getPproLabel() + if m == nil { + return + } + if _, ok := (*m)[Pprof_Label_Session_ID]; !ok { + return + } + n := make(labelMap, len(*m)) + for k, v := range *m { + if k != Pprof_Label_Session_ID { + n[k] = v + } + } + setPprofLabel(&n) +} + From ea2a96828b7b92a3f3caab11a0b49a8b37f3227b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Thu, 17 Apr 2025 21:42:26 +0800 Subject: [PATCH 06/15] doc: add docs --- README.md | 29 +- docs/parser-zh.md | 103 ++ docs/uniast-zh.md | 2020 +++++++++++++++++++++++++++++- images/lang-parser.png | Bin 0 -> 189415 bytes lang/golang/writer/write_test.go | 1 - lang/lsp/spec.go | 4 +- lang/uniast/ast.go | 2 - lang/uniast/node.go | 21 +- lang/write.go | 3 + 9 files changed, 2137 insertions(+), 46 deletions(-) create mode 100644 docs/parser-zh.md create mode 100644 images/lang-parser.png diff --git a/README.md b/README.md index b5bfe31b..9bd52e92 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,22 @@ - - # ABCoder: AI-Based Coder(AKA: A Brand-new Coder) ![ABCoder](images/ABCoder.png) -ABCoder, an AI-oriented code-processing tool, is designed to enhance coding-context for Large-Language-Model (LLM), simplify AI-assisted-coding process. +ABCoder, an AI-oriented code-processing SDK, is designed to enhance coding context for Large-Language-Model (LLM), and boost developing AI-assisted-coding workflow. ## Features -- Universal Abstract Syntax Tree (UniAST), an language-independent and AI-friendly coding-context AST specfication, providing ample and recursive code information for both AI and hunman. +- Universal Abstract Syntax Tree (UniAST), an language-independent, AI-friendly code-struct specfication, providing flexible and structrual coding-context for both AI and hunman. - Universal Parser, parses abitary languages to UniAST. - Univeral Writer, transforms UniAST back to codes. + +- (Comming Soon) Univeral Iterator, provides a set of interfaces and tools to help developers to implement their agents without deep knowledge of the UniAST structure. + +- (Comming Soon) Code RAG, provides a set of tools to help the LLM understand your codes much deeper than ever. -Based on these features, developers can easily implement or enhance their AI-assisted-coding agent or workflow, such as reviewing, optimizing, translating... +Based on these features, developers can easily implement or enhance their AI-assisted-coding workflows (or agents), such as reviewing, optimizing, translating... ## Getting Started @@ -67,7 +55,6 @@ ABCoder currently supports the following languages: We encourage developers to contribute and make this tool more powerful. If you are interested in contributing to ABCoder project, kindly check out our Getting Involved Guide: -- [Parser Extension](docs/parser_extension-zh.md) -- [Writer Extension](docs/writer_extension-zh.md) +- [Parser Extension](docs/parser-zh.md) > Note: This is a dynamic README and is subject to changes as the project evolves. diff --git a/docs/parser-zh.md b/docs/parser-zh.md new file mode 100644 index 00000000..d06524cc --- /dev/null +++ b/docs/parser-zh.md @@ -0,0 +1,103 @@ +# ABCoder - Language Parser 介绍 + +当前 ABCoder 基于 [LSP](https://microsoft.github.io/language-server-protocol/) 协议实现 Parser ,以达到精确依赖收集,并方便后续多语言扩展 + +## 代码结构 + +位于 [lang](/lang) 包下,包括: + +- uniast:统一 AST 结构的 golang 定义 +- lsp:LSP 协议处理 client,提供了 文件解析、引用查找、语法树解析、定义查找等接口,以及**通用的语言规范 LanguageSpec 接口** +- collect:负责基于 LSP 符号收集和导出 UniAST,是核心运算逻辑 +- rust:主体是对 lsp#Spec 接口的 rust 语言规范实现。此外还有具体 lsp(rust-analyzer)的一些具体调用逻辑,以及针对按 id 查找的实现 +- go: go 的 parser 和 writer 实现 + +## 运算过程 + +![lang-parser](../images/lang-parser.png) + +1. 通过命令行参数识别语言启动对应 lsp server,并传入初始化参数 +2. 遍历仓库文件,调用 `textDocument/documentSymbol` 方法获取每个文件的所有符号。对于每个符号 + 1. 调用 `textDocument/semanticTokens/range` 方法获取符号代码中的 tokens + 2. 识别出有效实体的 token,调用 `textDocument/definition` 跳转到对应符号位置,从而建立节点依赖关系 +3. 循环 2 直文件结束。最终将收集到的 lsp symbols 转换为 UniAST 格式并输出 + +## 扩展其它语言实现 + +由于 UniAST 并不完全等价 LSP, 因此需要实现一些特定语言专属的行为接口才能进行转换。参考 lang/rust 包,大体需要实现以下能力: + +- GetDefaultLSP():映射用户输入 language 到具体的 lsp.Language,以及对应的 lsp 名称 +- CheckRepo():检查用户仓库情况,根据各语言规范额处理工具链等问题,并返回默认打开的第一个文件(用于触发 lsp-server),以及等候 sever 初始化完成的时间(根据仓库大小来决定) +- **LanguageSpec interface**: 核心模块,用于处理非 LSP 通用的语法信息、比如判断一个 token 是否是标准库的符号、函数签名解析等: +- ModulePatcher: 后处理模块,用于处理语言特殊的信息收集。比如 rust 的 use 符号收集(lsp 不收集)。可以不实现 + +### LaunguageSpec + +``` +用于在 lsp 符号收集过程中转换为 UniAST 所需信息,并且这些信息非 LSP 通用定义 + +```go + +// Detailed implementation used for collect LSP symbols and transform them to UniAST +type LanguageSpec interface { + // initialize a root workspace, and return all modules [modulename=>abs-path] inside + WorkSpace(root string) (map[string]string, error) + + // give an absolute file path and returns its module name and package path + // external path should alse be supported + // FIXEM: some language (like rust) may have sub-mods inside a file, but we still consider it as a unity mod here + NameSpace(path string) (string, string, error) + + // tells if a file belang to language AST + ShouldSkip(path string) bool + + // return the first declaration token of a symbol, as Type-Name + DeclareTokenOfSymbol(sym DocumentSymbol) int + + // tells if a token is an AST entity + IsEntityToken(tok Token) bool + + // tells if a token is a std token + IsStdToken(tok Token) bool + + // return the SymbolKind of a token + TokenKind(tok Token) SymbolKind + + // tells if a symbol is a main function + IsMainFunction(sym DocumentSymbol) bool + + // tells if a symbol is a language symbol (func, type, variable, etc) in workspace + IsEntitySymbol(sym DocumentSymbol) bool + + // tells if a symbol is public in workspace + IsPublicSymbol(sym DocumentSymbol) bool + + // declare if the language has impl symbol + // if it return true, the ImplSymbol() will be called + HasImplSymbol() bool + // if a symbol is an impl symbol, return the token index of interface type, receiver type and first-method start (-1 means not found) + // ortherwise the collector will use FunctionSymbol() as receiver type token index (-1 means not found) + ImplSymbol(sym DocumentSymbol) (int, int, int) + + // if a symbol is a Function or Method symbol, return the token index of Receiver (-1 means not found),TypeParameters, InputParameters and Outputs + FunctionSymbol(sym DocumentSymbol) (int, []int, []int, []int) +} +``` + +- Rust-parser 实现位置:[RustSpec](/lang/rust/spec.go) + +``` + +### ModulePatcher + +用于后处理收集完成的模块信息 + +```go +// ModulePatcher supplements some information for module +type ModulePatcher interface { + // Patch is called after collect all symbols + Patch(ast *parse.Module) +} +``` + +- Rust-parser 实现: [RustModulePatcher](/lang/rust/patch.go) diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index 05c6e6df..39ae6394 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -1,16 +1,2006 @@ - +# Universal Abstract-Syntax-Tree Specification (v0.1.0) +Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 + + +## Identity 节点唯一标识 + +为了保证精确查询和可扩展存储,约定 **ModPath+PkgPath+SymbolName** 为 AST Node 的全球唯一标识**。 + + +```json +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands" +} +``` + +- ModPath: 一个完整的构建单元,ModPath内容为安装路径@版本号。该信息对于LLM并不需要,只是为了保证 Identity 的全球唯一性而保存。它在各个语言中对应不同概念: + + - Golang:对应 module,如 github.com/cloudwego/hertz@v0.1.0 + + - Rust:对应 crate,如 [serde_json](https://crates.io/crates/serde_json)@v1.0.114 + + 为了方便人工debug,这里有个实现约定: + + - 仓库内部函数或类型(包括**本包和本仓库内**其它子包函数)节点的Module**通常**不带版本号 + + - 外部函数(第三方repo引入的函数)的 Module **通常**带上版本号 + + - 判断一个 Module 是否为第三方依赖尽量通过 Module.Dir 是否为空来判断,这里不保证 + + +- PkgPath:语言中一个独立的命名空间,PkgPath对应语言中一个包的导入路径 + + - Golang:对应 package,如 github.com/cloudwego/hertz/pkg/app/server + + - Rust:对应 mod,如 [serde_json](https://crates.io/crates/serde_json)::[value](https://docs.rs/serde_json/1.0.114/serde_json/value/index.html) + + - 提示:这里应该尽量等同于代码文件中的 import (use) 路径,方便 LLM 理解 + + +- Name:在包内的唯一符号名 + + - **如果节点为method,应该以**`TypeName.MethodName`**来表示。 + + - **此外,有些语言如**rust允许一个类型为不同的接口实现同名方法**(比如rust),因此为了避免冲突TypeName可进一步扩展为` InterfaceName` 形式 + + +- **字符串(Key)形式** + + - Full() 完整形式为 `ModPath?PkgPath#Name` + + - String() Format形式为 `PkgPath#Name`,一般通过该形式展示给 LLM 即可 + + +- **每个 AST 都会带有 Identity,但是是以内嵌的形式到具体节点字段中(Name、ModPath、PkgPath 三个字段)** + + + + + +## 结构体定义(Go) + +- 代码详见 [Repository](/lang/uniast/ast.go) 定义 + + +## JSON 定义 + +以下以 [cloudwego/localsession](https://github.com/cloudwego/localsession.git) 库解析为示例介绍 + + +## Repository + +一个仓库由 实体Modules 和 关系Graph 组成 + + +```json +{ + "Identity": "/Users/bytedance/golang/work/abcoder/tmp/localsession", + "Modules": { + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, + "github.com/cloudwego/localsession": {} + }, + "Graph": {} +} +``` + +- Identity: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径作为Identity + + +- Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 + + - 本仓库模块ModePath == Module.Name + + - 外部依赖模块ModePath== Modele.Name@version + + +- Graph:AST Node 的依赖拓扑图,见下文【Graph】 + + +### Module + +代码独立编译单元,对应Identity中的ModPath,内部包含各个包 + + +```json +{ + "Name": "github.com/cloudwego/localsession", + "Language": "go", + "Version": "", + "Name": "github.com/cloudwego/localsession", + "Dir": ".", + "Packages": { + "github.com/cloudwego/localsession": {}, + "github.com/cloudwego/localsession/backup": {} + }, + "Dependencies": { + "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" + }, + "Files": { + ".github/ISSUE_TEMPLATE/bug_report.md": {}, + "backup/metainfo.go": {} + } +} +``` + +- Name:模块名(不带版本号) + + +- Language:代码使用的语言--对于多语言的仓库,一个模块的语言必须是唯一的。但是一个仓库可以有不同语言的模块。 + + +- Dir:**模块与仓库根的相对路径。注意:** + + - **只有本仓库内的模块需要设置且不能为空** + + - **第三方依赖必须为空(当前用于判断是否为第三方依赖)** + + +- Dependencies:模块构建的第三方依赖模块字典 {ModName}:{ModPath} + + +- Packages: 包含的子包,{PkgPath}:{Pacakge AST} 字典 + + +- Files:模块文件信息,key为**相对repo的路径。**这里建议包括仓库所有文件,方便writer回写 + + +#### File + +文件信息,包括代码文件和非代码文件都会记录 + + +```json +// manager.go +{ + "Path": "manager.go", + "Imports": [], + "Package": "github.com/cloudwego/localsession" +} +``` + +- Path: 文件**相对仓库根的路径** + + +- Imports: import 代码, + + +##### Import + +```json +{ + "Alias": "_", + "Path": "\"unsafe\"" +} +``` + +- Path:导入路径主要用于writer写入代码,具体内容根据各个语言情况而定 + + - rust 中为 `use xx::yy;` + + - Golang 中为 `"github.com/cloudwego/abcoder"` + + +- Alias:导入别名,可为空 + + +#### Package + +一个代码命名空间,对应Identity.PkgPath,内部包含各个AST Node实体 + + +```json +{ + "IsMain": false, + "IsTest": false, + "PkgPath": "github.com/cloudwego/localsession/backup", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Functions": { + "BackupCtx": {} + }, + "Types": {}, + "Vars": {} +} +``` + +- PkgPath:模块路径,见【Identity】介绍 + + +- IsMain: 是否是二进制包 + + +- IsTest: 是否是测试包 + + +- Functions:包含函数AST, {FuncName}:{Function AST} 的字典 + + +- Types:包含类型AST,{TypeName}:{Type AST}的字典 + + +- Vars:包含全局变量/常量, {VarName}:{Variant AST} 的字典 + + +##### Function + +函数类型的AST Node实体,对应【NodeType】为 FUNC,包括函数、方法、接口函数 + + +```json +{ + "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(Identity SessionIdentity, s Session) {\n\tshard := self.shards[uint64(Identity)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(Identity, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionIdentity(Identity)\n\t}\n}", + "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": "SessionIdentity", + "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": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 + } + ], + "MethodCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Store", + "File": "manager.go", + "Line": 137, + "StartOffset": 3485, + "EndOffset": 3490 + } + ] +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name:函数名称 + + - 如果函数为method,**应该**以 {TypeName}.{Methodname}来表示 + + +- File:所在的文件名 + + +- Line:**起始位置文件的行号** + + +- StartOffset:代码起始位置**相对文件头的字节偏移量** + + +- EndOffset: 代码结束位置**相对文件头的字节偏移量** + + +- Exported:是否包外可见导出 + + +- IsMethod:是否是一个方法 + + +- IsInterfaceMethod:是否是接口的方法--这里abcoder parse收集InterfaceMethod为了方便LLM理解,但是实际上write中并不会认为其是一个语言实体 + + +- Receiver:如果是方法的话,会有的receiver结构体。 + + - IsPointer:是否是指针接受者(可改变对象内容)。这个在某些语言中有比较重要意义,因此保留 + + - Type:对应的receiver结构体Identity + + +- Params:入参中关联的类型的Dependency数组(见下文【Dependency】),如果是匿名信参数ParamName由ParamTypeName替代 + + +- Results:出参中关联的类型Dependency数组, {ResultName}:{Result Type Identity},如果是匿名信参数ParamName由ParamTypeName替代 + + +- Content:函数完整内容,包括函数签名+`\n`+函数实现代码 + + +- FunctionCalls:当前函数中调用的其他函数Dependency数组。按依赖在代码中出现的次序排列(并去重)。元素为对应的 AST 节点 Identity + + +- MethodCalls:当前函数中调用的方法Dependency数组,按依赖在代码中出现的次序排列(并去重)。规则同【FunctionCalls】。 + + +- Types: 当前函数内引用的类型,如 `var x TypeX`中的TypeX + + +- Vars:当前函数内引用的全局量,包括变量和常量 + + +###### Dependency + +表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别 + + +``` +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:依赖点(不是被依赖节点)token所处的代码文件 + + +- Line:依赖点(不是被依赖节点)token所处的代码行 + + +- StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 + + +- EndOffset:依赖点(不是被依赖节点)token结束位置相对代码文件的偏移 + + +##### Type + +类型定义,【NodeType】为 TYPE,包括具体语言中的类型定义,如 结构体、枚举、接口、类型别名等 + + +```json +{ + "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}", + "InlineStruct": [ + {} // dependency + ], + "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" + } + } +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- TypeKind:类型的种类 Kind -- 这里不做统一约束,由具体语言定义 + + +- Exported:是否包外可见导出 + + +- Content:具体结构体定义,包括类型签名+`\n`+类型具体字段 + + +- SubStructs:字段中非嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val为对应类型 AST 节点 Identity + + +- InlineStructs: 字段中嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val对应类型 AST 节点 Identity + + - 原因:在某些语言如 Golang 中嵌套子结构体的 methods 会被继承到父结构体中,因此和一般子结构体区分开,方便回溯该类型拥有的所有 method + + +- Methods:结构体对应的全部方法**Identity**,key为方法名,val为函数Identity。 + + - 注意这里不应该包括 InlineStruct 的 methods + + +- Implements:该类型实现了哪些接口**Identity** + + +##### Var + +全局量,包括变量和常量,**但是必须是全局** + + +```rust +{ + "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" +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- IsExported:是否导出 + + +- IsConst:是否为常量 + + +- Type:其类型对应的Identity(不包括 go 原始类型),go内置类型可以只有name(如 string, uint) + + +- Content:定义代码,如 `var A int = 1 ` + + +### Graph + +整个仓库的AST Node依赖拓扑图。形式为 Identity => Node 的映射,其中每个 Node 包含对其它节点的依赖关系。基于该拓扑图,可以实现**任意节点上下文的递归获取**。 + + +```json +{ + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions": {}, + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues": {} +} +``` + +其中 key 通过 【Identity 的完整字符串】形式得到 + + +#### Node + +一个node表示一个独立的语法单元,通常包括代码、位置信息和依赖关系 + + +```go +{ + "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": "SESSION_CONFIG_KEY", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "InitDefaultManager", + "Line": 3 + } + ] +} +``` + +- ModPath: 目标节点模块路径,见【Identity】介绍 + + +- PkgPath:目标节点包路径,见【Identity】介绍 + + +- Name: 目标节点变量名称 + + +- Type: 目标节点类型,见【NodeType】介绍 + + +- Dependencies:该节点依赖的其他节点,每个元素对象为Relation + + +- References:依赖该节点的其他节点,每个元素对象为Relation + + +##### NodeType + +包括三种类型: + + +``` +// Node Type +type NodeType int + +const ( + UNKNOWN NodeType = iota + // top Function、 methods + FUNC + // Struct、TypeAlias、Enum... + TYPE + // Global Varable or Global Const + VAR +) +``` + +- FUNC:函数,包括方法、顶层函数 + + +- TYPE:类型定义,包括 struct、类型别名、接口等通用的类型定义 + + +- VAR:全局变量或常量(不包括局部变量,因为我们局部变量可以收集到FUNC或TYPE定义中) + + +#### Relation + +用于存储两个节点之间的关系。 + + +``` +{ + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "Line": 1 +} +``` + +- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE + + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) + + +## 完整JSON示例 + +- https://github.com/cloudwego/localsession + + - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` + + - 输出 + + +- https://github.com/cloudwego/metainfo + + - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` + + - 输出 + + +## 扩展其它语言 Parser + +当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](https://bytedance.sg.larkoffice.com/docx/QNZwdYBPjoUUKtxD3XMlstlpglh) +Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 + + +## Identity 节点唯一标识 + +为了保证精确查询和可扩展存储,约定 ModPath**+**PkgPath**+**SymbolName 为 AST Node 的**全球唯一标识**。 + + +```json +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands" +} +``` + +- ModPath: 一个完整的构建单元,ModPath内容为安装路径@版本号。该信息对于LLM并不需要,只是为了保证 Identity 的全球唯一性而保存。它在各个语言中对应不同概念: + + - Golang:对应 module,如 github.com/cloudwego/hertz@v0.1.0 + + - Rust:对应 crate,如 [serde_json](https://crates.io/crates/serde_json)@v1.0.114 + + 为了方便人工debug,这里有个实现约定: + + - 仓库内部函数或类型(包括**本包和本仓库内**其它子包函数)节点的Module**通常**不带版本号 + + - 外部函数(第三方repo引入的函数)的 Module **通常**带上版本号 + + - 判断一个 Module 是否为第三方依赖尽量通过 Module.Dir 是否为空来判断,这里不保证 + + +- PkgPath:语言中一个独立的命名空间,PkgPath对应语言中一个包的import path**:** + + - Golang:对应 package,如 github.com/cloudwego/hertz/pkg/app/server + + - Rust:对应 mod,如 [serde_json](https://crates.io/crates/serde_json)::[value](https://docs.rs/serde_json/1.0.114/serde_json/value/index.html) + + - 提示:这里应该尽量等同于代码文件中的 import (use) 路径,方便 LLM 理解 + + +- Name:在包内的唯一符号名 + + - 如果节点类型 + + - **如果节点为method,应该以**`TypeName.MethodName`**来表示。**此外,有些语言如**rust允许一个类型为不同的接口实现同名方法**(比如rust),因此为了避免冲突TypeName可进一步扩展为` InterfaceName` 形式 + + +- **字符串(Key)形式** + + - Full() 完整形式为 `ModPath?PkgPath#Name` + + - String() Format形式为 PkgPath#Name,一般通过该形式展示给 LLM 即可 + + +- **每个 AST 都会带有 Identity,但是是以内嵌的形式到具体节点字段中(Name、ModPath、PkgPath 三个字段)** + + + + + +## 结构体定义(Go) + +- 代码详见 abcoder/lang/uniast#Repository + + +## JSON 定义 + +以下以 `[cloudwego/localsession](https://github.com/cloudwego/localsession.git)` 库解析为示例介绍 + + +## Repository + +一个仓库由 实体Modules 和 关系Graph 组成 + + +```json +{ + "Identity": "/Users/bytedance/golang/work/abcoder/tmp/localsession", + "Modules": { + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, + "github.com/cloudwego/localsession": {} + }, + "Graph": {} +} +``` + +- Identity: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径作为Identity + + +- Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 + + - 本仓库模块ModePath == Module.Name + + - 外部依赖模块ModePath== Modele.Name@version + + +- Graph:AST Node 的依赖拓扑图,见下文【Graph】 + + +### Module + +代码独立编译单元,对应Identity中的ModPath,内部包含各个包 + + +```json +{ + "Name": "github.com/cloudwego/localsession" + "Language": "go", + "Version": "", + "Name": "github.com/cloudwego/localsession", + "Dir": ".", + "Packages": { + "github.com/cloudwego/localsession": {}, + "github.com/cloudwego/localsession/backup": {} + } + "Dependencies": { + "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" + }, + "Files": { + ".github/ISSUE_TEMPLATE/bug_report.md": {}, + "backup/metainfo.go": {} + } +} +``` + +- Name:模块名(不带版本号) + + +- Language:代码使用的语言--对于多语言的仓库,一个模块的语言必须是唯一的。但是一个仓库可以有不同语言的模块。 + + +- Dir:**模块与仓库根的相对路径。注意:** + + - **只有本仓库内的模块需要设置且不能为空** + + - **第三方依赖必须为空(当前用于判断是否为第三方依赖)** + + +- Dependencies:模块构建的第三方依赖模块字典 {ModName}:{ModPath} + + +- Packages: 包含的子包,{PkgPath}:{Pacakge AST} 字典 + + +- Files:模块文件信息,key为**相对repo的路径。**这里建议包括仓库所有文件,方便writer回写 + + +#### File + +文件信息,包括代码文件和非代码文件都会记录 + + +```json +// manager.go +{ + "Path": "manager.go", + "Imports": [], + "Package": "github.com/cloudwego/localsession" +} +``` + +- Path: 文件**相对仓库根的路径** + + +- Imports: import 代码, + + +##### Import + +```json +{ + "Alias": "_", + "Path": "\"unsafe\"" +} +``` + +- Path:导入路径主要用于writer写入代码,具体内容根据各个语言情况而定 + + - rust 中为 `use xx::yy;` + + - Golang 中为 `"github.com/cloudwego/abcoder"` + + +- Alias:导入别名,可为空 + + +#### Package + +一个代码命名空间,对应Identity.PkgPath,内部包含各个AST Node实体 + + +```json +{ + "IsMain": false, + "IsTest": false, + "PkgPath": "github.com/cloudwego/localsession/backup", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Functions": { + "BackupCtx": {} + }, + "Types": {}, + "Vars": {} +} +``` + +- PkgPath:模块路径,见【Identity】介绍 + + +- IsMain: 是否是二进制包 + + +- IsTest: 是否是测试包 + + +- Functions:包含函数AST, {FuncName}:{Function AST} 的字典 + + +- Types:包含类型AST,{TypeName}:{Type AST}的字典 + + +- Vars:包含全局变量/常量, {VarName}:{Variant AST} 的字典 + + +##### Function + +函数类型的AST Node实体,对应【NodeType】为 FUNC,包括函数、方法、接口函数 + + +```json +{ + "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(Identity SessionIdentity, s Session) {\n\tshard := self.shards[uint64(Identity)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(Identity, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionIdentity(Identity)\n\t}\n}", + "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": "SessionIdentity", + "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": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 + } + ], + "MethodCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Store", + "File": "manager.go", + "Line": 137, + "StartOffset": 3485, + "EndOffset": 3490 + } + ] +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name:函数名称 + + - 如果函数为method,**应该**以 {TypeName}.{Methodname}来表示 + + +- File:所在的文件名 + + +- Line:**起始位置文件的行号** + + +- StartOffset:代码起始位置**相对文件头的字节偏移量** + + +- EndOffset: 代码结束位置**相对文件头的字节偏移量** + + +- Exported:是否包外可见导出 + + +- IsMethod:是否是一个方法 + + +- IsInterfaceMethod:是否是接口的方法--这里abcoder parse收集InterfaceMethod为了方便LLM理解,但是实际上write中并不会认为其是一个语言实体 + + +- Receiver:如果是方法的话,会有的receiver结构体。 + + - IsPointer:是否是指针接受者(可改变对象内容)。这个在某些语言中有比较重要意义,因此保留 + + - Type:对应的receiver结构体Identity + + +- Params:入参中关联的类型的Dependency数组(见下文【Dependency】),如果是匿名信参数ParamName由ParamTypeName替代 + + +- Results:出参中关联的类型Dependency数组, {ResultName}:{Result Type Identity},如果是匿名信参数ParamName由ParamTypeName替代 + + +- Content:函数完整内容,包括函数签名+`\n`+函数实现代码 + + +- FunctionCalls:当前函数中调用的其他函数Dependency数组。按依赖在代码中出现的次序排列(并去重)。元素为对应的 AST 节点 Identity + + +- MethodCalls:当前函数中调用的方法Dependency数组,按依赖在代码中出现的次序排列(并去重)。规则同【FunctionCalls】。 + + +- Types: 当前函数内引用的类型,如 `var x TypeX`中的TypeX + + +- Vars:当前函数内引用的全局量,包括变量和常量 + + +###### Dependency + +表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别 + + +``` +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:依赖点(不是被依赖节点)token所处的代码文件 + + +- Line:依赖点(不是被依赖节点)token所处的代码行 + + +- StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 + + +- EndOffset:依赖点(不是被依赖节点)token结束位置相对代码文件的偏移 + + +##### Type + +类型定义,【NodeType】为 TYPE,包括具体语言中的类型定义,如 结构体、枚举、接口、类型别名等 + + +```json +{ + "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}", + "InlineStruct": [ + {} // dependency + ], + "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" + } + } +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- TypeKind:类型的种类 Kind -- 这里不做统一约束,由具体语言定义 + + +- Exported:是否包外可见导出 + + +- Content:具体结构体定义,包括类型签名+`\n`+类型具体字段 + + +- SubStructs:字段中非嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val为对应类型 AST 节点 Identity + + +- InlineStructs: 字段中嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val对应类型 AST 节点 Identity + + - 原因:在某些语言如 Golang 中嵌套子结构体的 methods 会被继承到父结构体中,因此和一般子结构体区分开,方便回溯该类型拥有的所有 method + + +- Methods:结构体对应的全部方法**Identity**,key为方法名,val为函数Identity。 + + - 注意这里不应该包括 InlineStruct 的 methods + + +- Implements:该类型实现了哪些接口**Identity** + + +##### Var + +全局量,包括变量和常量,**但是必须是全局** + + +```rust +{ + "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" +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- IsExported:是否导出 + + +- IsConst:是否为常量 + + +- Type:其类型对应的Identity(不包括 go 原始类型),go内置类型可以只有name(如 string, uint) + + +- Content:定义代码,如 `var A int = 1 ` + + +### Graph + +整个仓库的AST Node依赖拓扑图。形式为 Identity => Node 的映射,其中每个 Node 包含对其它节点的依赖关系。基于该拓扑图,可以实现**任意节点上下文的递归获取**。 + + +```json +{ + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions": {}, + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues": {} +} +``` + +其中 key 通过 【Identity 的完整字符串】形式得到 + + +#### Node + +一个node表示一个独立的语法单元,通常包括代码、位置信息和依赖关系 + + +```go +{ + "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": "SESSION_CONFIG_KEY", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "InitDefaultManager", + "Line": 3 + } + ] +} +``` + +- ModPath: 目标节点模块路径,见【Identity】介绍 + + +- PkgPath:目标节点包路径,见【Identity】介绍 + + +- Name: 目标节点变量名称 + + +- Type: 目标节点类型,见【NodeType】介绍 + + +- Dependencies:该节点依赖的其他节点,每个元素对象为Relation + + +- References:依赖该节点的其他节点,每个元素对象为Relation + + +##### NodeType + +包括三种类型: + + +``` +// Node Type +type NodeType int + +const ( + UNKNOWN NodeType = iota + // top Function、 methods + FUNC + // Struct、TypeAlias、Enum... + TYPE + // Global Varable or Global Const + VAR +) +``` + +- FUNC:函数,包括方法、顶层函数 + + +- TYPE:类型定义,包括 struct、类型别名、接口等通用的类型定义 + + +- VAR:全局变量或常量(不包括局部变量,因为我们局部变量可以收集到FUNC或TYPE定义中) + + +#### Relation + +用于存储两个节点之间的关系。 + + +``` +{ + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "Line": 1 +} +``` + +- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE + + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) + + +## 完整JSON示例 + +- https://github.com/cloudwego/localsession + + - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` + + - 输出 + + +- https://github.com/cloudwego/metainfo + + - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` + + - 输出 + + +## 扩展其它语言 Parser + +当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](https://bytedance.sg.larkoffice.com/docx/QNZwdYBPjoUUKtxD3XMlstlpglh) +Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 + + +## Identity 节点唯一标识 + +为了保证精确查询和可扩展存储,约定 ModPath**+**PkgPath**+**SymbolName 为 AST Node 的**全球唯一标识**。 + + +```json +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands" +} +``` + +- ModPath: 一个完整的构建单元,ModPath内容为安装路径@版本号。该信息对于LLM并不需要,只是为了保证 Identity 的全球唯一性而保存。它在各个语言中对应不同概念: + + - Golang:对应 module,如 github.com/cloudwego/hertz@v0.1.0 + + - Rust:对应 crate,如 [serde_json](https://crates.io/crates/serde_json)@v1.0.114 + + 为了方便人工debug,这里有个实现约定: + + - 仓库内部函数或类型(包括**本包和本仓库内**其它子包函数)节点的Module**通常**不带版本号 + + - 外部函数(第三方repo引入的函数)的 Module **通常**带上版本号 + + - 判断一个 Module 是否为第三方依赖尽量通过 Module.Dir 是否为空来判断,这里不保证 + + +- PkgPath:语言中一个独立的命名空间,PkgPath对应语言中一个包的import path**:** + + - Golang:对应 package,如 github.com/cloudwego/hertz/pkg/app/server + + - Rust:对应 mod,如 [serde_json](https://crates.io/crates/serde_json)::[value](https://docs.rs/serde_json/1.0.114/serde_json/value/index.html) + + - 提示:这里应该尽量等同于代码文件中的 import (use) 路径,方便 LLM 理解 + + +- Name:在包内的唯一符号名 + + - 如果节点类型 + + - **如果节点为method,应该以**`TypeName.MethodName`**来表示。**此外,有些语言如**rust允许一个类型为不同的接口实现同名方法**(比如rust),因此为了避免冲突TypeName可进一步扩展为` InterfaceName` 形式 + + +- **字符串(Key)形式** + + - Full() 完整形式为 `ModPath?PkgPath#Name` + + - String() Format形式为 PkgPath#Name,一般通过该形式展示给 LLM 即可 + + +- **每个 AST 都会带有 Identity,但是是以内嵌的形式到具体节点字段中(Name、ModPath、PkgPath 三个字段)** + + + + + +## 结构体定义(Go) + +- 代码详见 abcoder/lang/uniast#Repository + + +## JSON 定义 + +以下以 `[cloudwego/localsession](https://github.com/cloudwego/localsession.git)` 库解析为示例介绍 + + +## Repository + +一个仓库由 实体Modules 和 关系Graph 组成 + + +```json +{ + "Identity": "/Users/bytedance/golang/work/abcoder/tmp/localsession", + "Modules": { + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, + "github.com/cloudwego/localsession": {} + }, + "Graph": {} +} +``` + +- Identity: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径作为Identity + + +- Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 + + - 本仓库模块ModePath == Module.Name + + - 外部依赖模块ModePath== Modele.Name@version + + +- Graph:AST Node 的依赖拓扑图,见下文【Graph】 + + +### Module + +代码独立编译单元,对应Identity中的ModPath,内部包含各个包 + + +```json +{ + "Name": "github.com/cloudwego/localsession" + "Language": "go", + "Version": "", + "Name": "github.com/cloudwego/localsession", + "Dir": ".", + "Packages": { + "github.com/cloudwego/localsession": {}, + "github.com/cloudwego/localsession/backup": {} + } + "Dependencies": { + "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" + }, + "Files": { + ".github/ISSUE_TEMPLATE/bug_report.md": {}, + "backup/metainfo.go": {} + } +} +``` + +- Name:模块名(不带版本号) + + +- Language:代码使用的语言--对于多语言的仓库,一个模块的语言必须是唯一的。但是一个仓库可以有不同语言的模块。 + + +- Dir:**模块与仓库根的相对路径。注意:** + + - **只有本仓库内的模块需要设置且不能为空** + + - **第三方依赖必须为空(当前用于判断是否为第三方依赖)** + + +- Dependencies:模块构建的第三方依赖模块字典 {ModName}:{ModPath} + + +- Packages: 包含的子包,{PkgPath}:{Pacakge AST} 字典 + + +- Files:模块文件信息,key为**相对repo的路径。**这里建议包括仓库所有文件,方便writer回写 + + +#### File + +文件信息,包括代码文件和非代码文件都会记录 + + +```json +// manager.go +{ + "Path": "manager.go", + "Imports": [], + "Package": "github.com/cloudwego/localsession" +} +``` + +- Path: 文件**相对仓库根的路径** + + +- Imports: import 代码, + + +##### Import + +```json +{ + "Alias": "_", + "Path": "\"unsafe\"" +} +``` + +- Path:导入路径主要用于writer写入代码,具体内容根据各个语言情况而定 + + - rust 中为 `use xx::yy;` + + - Golang 中为 `"github.com/cloudwego/abcoder"` + + +- Alias:导入别名,可为空 + + +#### Package + +一个代码命名空间,对应Identity.PkgPath,内部包含各个AST Node实体 + + +```json +{ + "IsMain": false, + "IsTest": false, + "PkgPath": "github.com/cloudwego/localsession/backup", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Functions": { + "BackupCtx": {} + }, + "Types": {}, + "Vars": {} +} +``` + +- PkgPath:模块路径,见【Identity】介绍 + + +- IsMain: 是否是二进制包 + + +- IsTest: 是否是测试包 + + +- Functions:包含函数AST, {FuncName}:{Function AST} 的字典 + + +- Types:包含类型AST,{TypeName}:{Type AST}的字典 + + +- Vars:包含全局变量/常量, {VarName}:{Variant AST} 的字典 + + +##### Function + +函数类型的AST Node实体,对应【NodeType】为 FUNC,包括函数、方法、接口函数 + + +```json +{ + "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(Identity SessionIdentity, s Session) {\n\tshard := self.shards[uint64(Identity)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(Identity, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionIdentity(Identity)\n\t}\n}", + "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": "SessionIdentity", + "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": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 + } + ], + "MethodCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Store", + "File": "manager.go", + "Line": 137, + "StartOffset": 3485, + "EndOffset": 3490 + } + ] +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name:函数名称 + + - 如果函数为method,**应该**以 {TypeName}.{Methodname}来表示 + + +- File:所在的文件名 + + +- Line:**起始位置文件的行号** + + +- StartOffset:代码起始位置**相对文件头的字节偏移量** + + +- EndOffset: 代码结束位置**相对文件头的字节偏移量** + + +- Exported:是否包外可见导出 + + +- IsMethod:是否是一个方法 + + +- IsInterfaceMethod:是否是接口的方法--这里abcoder parse收集InterfaceMethod为了方便LLM理解,但是实际上write中并不会认为其是一个语言实体 + + +- Receiver:如果是方法的话,会有的receiver结构体。 + + - IsPointer:是否是指针接受者(可改变对象内容)。这个在某些语言中有比较重要意义,因此保留 + + - Type:对应的receiver结构体Identity + + +- Params:入参中关联的类型的Dependency数组(见下文【Dependency】),如果是匿名信参数ParamName由ParamTypeName替代 + + +- Results:出参中关联的类型Dependency数组, {ResultName}:{Result Type Identity},如果是匿名信参数ParamName由ParamTypeName替代 + + +- Content:函数完整内容,包括函数签名+`\n`+函数实现代码 + + +- FunctionCalls:当前函数中调用的其他函数Dependency数组。按依赖在代码中出现的次序排列(并去重)。元素为对应的 AST 节点 Identity + + +- MethodCalls:当前函数中调用的方法Dependency数组,按依赖在代码中出现的次序排列(并去重)。规则同【FunctionCalls】。 + + +- Types: 当前函数内引用的类型,如 `var x TypeX`中的TypeX + + +- Vars:当前函数内引用的全局量,包括变量和常量 + + +###### Dependency + +表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别 + + +``` +{ + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionIdentity", + "File": "manager.go", + "Line": 140, + "StartOffset": 3547, + "EndOffset": 3564 +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:依赖点(不是被依赖节点)token所处的代码文件 + + +- Line:依赖点(不是被依赖节点)token所处的代码行 + + +- StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 + + +- EndOffset:依赖点(不是被依赖节点)token结束位置相对代码文件的偏移 + + +##### Type + +类型定义,【NodeType】为 TYPE,包括具体语言中的类型定义,如 结构体、枚举、接口、类型别名等 + + +```json +{ + "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}", + "InlineStruct": [ + {} // dependency + ], + "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" + } + } +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 结构体名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- TypeKind:类型的种类 Kind -- 这里不做统一约束,由具体语言定义 + + +- Exported:是否包外可见导出 + + +- Content:具体结构体定义,包括类型签名+`\n`+类型具体字段 + + +- SubStructs:字段中非嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val为对应类型 AST 节点 Identity + + +- InlineStructs: 字段中嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val对应类型 AST 节点 Identity + + - 原因:在某些语言如 Golang 中嵌套子结构体的 methods 会被继承到父结构体中,因此和一般子结构体区分开,方便回溯该类型拥有的所有 method + + +- Methods:结构体对应的全部方法**Identity**,key为方法名,val为函数Identity。 + + - 注意这里不应该包括 InlineStruct 的 methods + + +- Implements:该类型实现了哪些接口**Identity** + + +##### Var + +全局量,包括变量和常量,**但是必须是全局** + + +```rust +{ + "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" +} +``` + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- File:声明所在的文件名 + + +- Line:声明所在文件的行号 + + +- IsExported:是否导出 + + +- IsConst:是否为常量 + + +- Type:其类型对应的Identity(不包括 go 原始类型),go内置类型可以只有name(如 string, uint) + + +- Content:定义代码,如 `var A int = 1 ` + + +### Graph + +整个仓库的AST Node依赖拓扑图。形式为 Identity => Node 的映射,其中每个 Node 包含对其它节点的依赖关系。基于该拓扑图,可以实现**任意节点上下文的递归获取**。 + + +```json +{ + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions": {}, + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues": {} +} +``` + +其中 key 通过 【Identity 的完整字符串】形式得到 + + +#### Node + +一个node表示一个独立的语法单元,通常包括代码、位置信息和依赖关系 + + +```go +{ + "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": "SESSION_CONFIG_KEY", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "InitDefaultManager", + "Line": 3 + } + ] +} +``` + +- ModPath: 目标节点模块路径,见【Identity】介绍 + + +- PkgPath:目标节点包路径,见【Identity】介绍 + + +- Name: 目标节点变量名称 + + +- Type: 目标节点类型,见【NodeType】介绍 + + +- Dependencies:该节点依赖的其他节点,每个元素对象为Relation + + +- References:依赖该节点的其他节点,每个元素对象为Relation + + +##### NodeType + +包括三种类型: + + +``` +// Node Type +type NodeType int + +const ( + UNKNOWN NodeType = iota + // top Function、 methods + FUNC + // Struct、TypeAlias、Enum... + TYPE + // Global Varable or Global Const + VAR +) +``` + +- FUNC:函数,包括方法、顶层函数 + + +- TYPE:类型定义,包括 struct、类型别名、接口等通用的类型定义 + + +- VAR:全局变量或常量(不包括局部变量,因为我们局部变量可以收集到FUNC或TYPE定义中) + + +#### Relation + +用于存储两个节点之间的关系。 + + +``` +{ + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "Line": 1 +} +``` + +- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE + + +- ModPath: 模块路径,见【Identity】介绍 + + +- PkgPath:包路径,见【Identity】介绍 + + +- Name: 变量名称 + + +- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) + + +## 完整JSON示例 + +- https://github.com/cloudwego/localsession + + - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` + + - 输出 + + +- https://github.com/cloudwego/metainfo + + - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` + + - 输出 + + +## 扩展其它语言 Parser + +当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](parser_extension-zh.md) diff --git a/images/lang-parser.png b/images/lang-parser.png new file mode 100644 index 0000000000000000000000000000000000000000..e5de62f0f14ff87dab552b6699875f414602bdbe GIT binary patch literal 189415 zcmeFZS5#D8vo1`MAeojN1!g_vz@z?zZdRZ9bL6P0ai{EUKAne)3XxYi6d(N95gtPl4yC z|H0#ihK*nOsg(|6#U{afsXR_5kxYvRCN8u4M~_dn2NcG7xb-l3Zr!^#;}Ij+#|byr z4@?pis&FHymwp&%R|cD{u)=M`Zi6W{~2*Y{a+(8d89u^$JYCeEopBlcwq9-v{g6*R1RJ;Ca^(DCf5(@ ztsit5VNqGH0%cH-mIAx}OC9x^?emHL+hX*>;Hg9D$ZWdIRRu|*+<%StkEYG6gzK0) za)PD1+<$axYbV)Hv4JWp2inXtM-YufyFbv+y1KZO9Mq2c-;(>R8~y;aa?hyvpLhvn*JdCb#? zbMxXICY{yB0j(boGEzanZv2<*33mRk7noVkf22ZG{4%mp_0mQ4{uzLIq*DCXrwV}4 z+4;kfNZ9$0Z;;M*mEN!@6v|EfhK!)+)+B$ujI4N_Wv<8=w`=a1)TQoen_TWv_m|TT zRsYOpD`{pWjo6@(8apnD$#C|w$9SBU7;y{XbnwfFgqf&K=AG|W4M^9cVB}c6DaZ4^ z#Xp8UwUAe=i#LH5XUvO@$4KrO?8eW(Hg~H#BrJ-762zmnx4$1_(qJi5m1CrlDsk^+ z=jE}S%lq{!r-zXGLZcW1Cs{I$e=Q$U(Dmh58m97(v$tz6XDuZF04gX4rhE|zBg z8OC1RlQ9{9rXR3*ErYY#C^{bgYj=a_)!X*%SsQ>4&8bj%I6g#je`rq2jrrq9R#4u~ z`|GVp?kgc7cPw5w7TRRG_gxyAolTzOxu?mtSRtmwuotKVE`7$`-ZbZYF04Yg{r-c{ovR>E)$Dl@Kd&G(7tgEF+tf!r~Em%Ptbp zPGS)WO3Tt}9FaCho#RVCnzsYS<-S=r7@$#@J(<-FEJ7hh9Y0t)GLMyWrWvnzMk?dT zaRl(@j~gIi_G<3%1m(a~+{k~!B*T=em0};uoqAg5U$IOzJ<6*3tQxC*v>fD=ZZ4bi z+yoC2SyzQW{#yVPUI3qIKmf#26MUAvhvpcwy z)Jq3%xH;Z_nSl!(CMHTEpT2f&K%g5bXgw zJUp30gV%5O0OGWVT0@CUjm`Vx%fyf7Qc?(1iS(q%FMrY6dS>3xcc77-ZE4|Z_tl7V zXlC@<)2B~Eja}}mtACo;`Ig4M*H=Ww0WZA>;IdbqIw=zlA0ZM~Rm0J~lhXN~m>-Qf zEr`#D-<>JeF_vQuFE$J?=lD2?{*|76RcGrchwuJYfH&<{G7v31n;z7}|Al-=#^CK} zhSB%{nXD0P&c6pZ2Uvt!r(sGdk4Edy`#j3Aaq*+ohS9wBjrB?%KHwArVrW)DMTHGR zXaY7!X}iV9$Vjd&3&Ko|+BmAcy%WanomKDBBVj zmgKUdb5A+IBf>^(#BPsSj}H?#7oA|bx94E_$0=?jHr$89!+>|RjP|&F?-H{#8Qhvr zrY+$=UTB(-P;LKC0qgzs;c3a3&)FmZVROWCl>doUv6P_f>}+6@Yom}n46O?zPFqe{ zO+^DBYIAGiLf2OpNI+9Jsi|nZr&QZ6Ahi@5R%-1c&3eMw1b|Rss2m5-fWKq;h~7v? zdUW4EUMg9VqXYpHiF%(@{Z%6!xqtgvhcfUk0$5D%rm+&u4*`2}-zx(D+4Pbgb)%|& z?f^Nf+_SNbCVwXYF}8!?7yi03CFp$^g~0`Jal!(6OwpTm=5+R5M4`rTpDqU^mOLG@D|I=I*7j2 zql{W|`SE9UXV$(L_53l9=WuN#hicSf&)jvv5$x3d^%)rt?7i)eGYtPR0MFypF>lmT z#@Nj&?-6Xl{;=saz}OKtCHwz;f>0Ydj*UvW304$lVP$0$Ti~8erBDgG_E?5Z(2zt$Q5AhSj#g^2)GUtD!qiuXK{LfJk8pL<;Lp_Ng!blDrx( zxdBGh22<9ECp5TuRhfGJ|Cp}5+K*j`5e8M7wWW*NMQ{Xa!{#ER)9IrL1AQIE{||vYo>SaV%ze8r}p&S`f_K) zC305t$MOb7RRIz!=TNO#nP&9)Ur0HM52=>VTf9&`dvG%=fXg@oUv&Jls5v$gTa*pn z7&kXSw&EHLgj?BPn~~$5c>Q&~zw4Wh9IcBmEH?nu zpLU6v4Dd~0H~RE1fM#FnZCAOQ@=E{Oix(P9oQVQbaRi10kwPFz$K{U44fQfj6<6OB z7f#*05MdXhnZ(FCa;JfXVs;?NEOz{kXf7&8jYtTEr+GP(_yFxV%PfQ)p9M&=2evK2 z%QEIaI6D#>@7w~2(G!Um0@i;2&q7;|9ODC-CCYe9K4D7^AW=weOeDa~xK@+s!RCw| zM@OLnM=y+aLj#6Go|JMv>i={vDzy5k$tK|v`wXw!Wg3Cj>kM^?nA+V3b7jCEbpj#H3iu-P@M zXC9GGLnY#)CS3wIGL4Rd2c@HL`aTZFS>=*(g;Gl!5fxW5l1UO~ ze^%Xl@$xhJ0lB!C^ph#l`yQ0J`1O@mjCj&T`+3kv$SVBkxIsTIC}S>QJ@q{Qz;mEc z%rc~;nwlGVT)0%tfkCY6!ulRBX~(^Niv6+8FF9!M{~V5llps9drR5ook-9}8cJ?s(mzz*Troc*zO3qO8ri4VvJmo)-^@bP7v#x4zNktgrA z9o#L|d~?DmqM`9?jV@83Cxh^{ddk{1H{B8lWHJ2d9^5YTx%CYEUU$Cx{Rlhl+dayk zX+8UM>E}$j`^0y)ju!PhX7Bg@UGY%blf?Jf`A>rBv1zGy@{(Jc7IKyY9V?|4k@~9jP_P zrw?;L28;4tg1EQ~Glk%8$q83G0nB7*0V1j%n1S?@&vmTnL!b@2uY17T*pP-|ZNd-Y z6uy+`IGyL){%~zeHU&h^~LE&BvH5{mx>{r~@ch~R5Qpq2mcbO;Xl7}D!c zM?UXT`ut;4QBio%;fZ0*79;rl1CVUz~H=bN$qE;y9A&=+$eN`Fe1tz`<5GvZmj z2W^C-K{8H{Q^;vb!sV43Tz`hG^KTbWM!0uOTrwAF_4?UCQt&0HuR(YAf zD^Cn4ZTdRL^`Ccahh<)aFjEn(@z0yf+>WBVH4$9_veL|Q2zC%aR|5Skd%C+jkB(HF zR68n1isCT@hX)5RA^ORwsiu_ybFxl~+9!i?868{ui$s!4UvQa0k$`s^n~;1={ZKc(@*UmEpxpkLaJBqlEr}A&i8j7e7{Cv^Wg< zx#Kf=G0a@~u4<>kTYjq!|%6ei9(rjZqe~ za`(9dx;AU_fJ&1Y=eaDJWev_`F-U+I^bCfo?qe*osum|&7h7ZiB?0W@7QpY1i@YaT zI3LLkDq=(csnVz$Ud36AbQ^wu&}BEFI&!!ayCSb!rAH<4?n%3tPbLlBAr+rMmb5}F z=Fhp(x6^N^R@T(OaKE=UTyn>TZ``Y_s*VBxX?yz@nOsfekWT4VNj$kDnHsboEUiye zeC0LYxXrZ&vDX@~GnV1ku-kIG2KTIp+)LPXEVsQ3=9)Qq;Upw(a%c3j`yvc#=9PRrk z-D_4Yq3c%_-lF8?n2d?I35Br@?~#wg0Ps|N70CR4{$jOJFpd;T)E9aoDD|P(vo~w^ z(j#5yscoeyYbd2TWNMe$snWR#tIbE1k1n1N+CFXlIP&FsoeL*tVw1bbu5nxRE69}M z$}{bzcsA7NmbFNfWa}~MJINcyT*Sa+0ttZV#IyE_wE%?A%P}EbD8HKGd04cHoQ z7Xn=m(JDA6m(O0$&t0PfazG?(5Pb$H$inyCg&#Z&Ul&7t`7XL#NJ?^k4y)6IoeD}nCJrVHCYk3qb9JrR%+NZO z_ApFoZF_G7CCQ@8tOKMj=?O+dy73m#^3_}=aq4R{0TYfr11SygHbmc(rd_=8moN(y zJCOmq1k_?;xD^mnP|s{#y#Mw@f@@wg{;`#`Pzr;~;u4$OdsNKn{6pe(dA zsHjO8GxYR3x3mvYX`ef3SQK`(qODy;e!7;4&zy+xW}RS@K-^L~+Lu!ts7GuLi3WAK z`@bGaU^Eg-05rIb=;?|_H^TI!jLwZC*6umGA^l&IF|2!54#8VkS}fbtjWFQznQ!RV zLf~NHBHe?@WZGhyk{5wR>E`=kzHKD_`nEYzFk0S@)IYMEHopj=(yh!1*n8&antnq0HS80)=l^XUa z5;B-%kf?pEm#6t>Vsffdk;kd61VS>)6{5k|-iYV6pADZJ?@-f(M&8;^C&v{=+5?9D zgfD(m^)@|VB7}NCQCpx8@Jg0@fGseyvJY9N)dSMC9G_b@%;X?{tOpM$`zfyXAb@lT zn5k~cJdg`+o)1acErj(W?A_)dkXoxs(V;p^;BsD-%L8~ACvxxSvg0!fY{nEa_7>@Uk}GXToPtH`ti1& zK(Fb{Cq!g`d3h6|ei5`=N3XLGOkAu~N&qF$(`#k)Fqb5!cU7zmc(|AHvRmcIb`!_)sU+Ofg=QipvNVhg6e`1K*CO0 z+$m!fIf&AcvS4kkPh`GSE82o6VE^4ZVe$%|#)|}_V>Xv#Q!Czi4Wo=`d+4YNx z!-E*07#eLYQ20Esf_L5_C(5K0oOK+`$kgUCfK-&2{Ypkk)}+his+l$knkx475^^jf zSs&QhDXkIYt5wXjb8=wZa@xvjY7(?nPSLvL8*(%5>XaqP2z{pC>jg*&SKjk?%Mi2Q zM{e8waRm4SgdTG-B#i299kp6!BuEbf*}f=x8_~eU! zA>5{lPG)jRB6*u68W0v1aQ8)NJFh_y{cPX8$ZmrE{YikZPivt%S$~V z)Hn@u>pgBQm!qRF&sQ*DBt&X!IG1Fgc``VMHZ?2*SCZ&TFA`N-T{PRhJmD7MOiP;( zIaH?OG8*B_p9gWKQEG0hV|{s0&qDrvc3v969CG2nrwukM-#tylM;GyDy;wNYk>U?m zZ?OdNY8jx=jY5sfknQ`QCJ?;5fT*`Jkd|Q-nZdq;DwibNk&0gnSiH@xm1DRebQIz0 zYK;L>+;3($=9`=SwU+~vsO98ls5K*K9h0V_*0WpcEj41}gTl7-@K}Q_;|j=4=02+o73ReLzOo-1aN8$Agtnj${ol#y+n>{A4<^pI+d%wIuyK zgw|~Z37gtng}AUos}ba#e60Wzhjbs!LlS~+)U=VS01p5M)V>5ZPa-b#3@m_szVo8C zU5HJwm7Jy`o{1rqSa@n}Gkx*HV?v|5)KpYI*}_EN=GQ39>dAMgwV0KP5#-D2fmpz3 zmw)k3)U`n71Ax`Fn~iW$fSR<`PsK!@i(X(^vvf3i7t$jIC>y#vzYB%8`^ zSHE9W1Z_z@d+XGCO5jLH$t~V?e|4Tn)?9RZ|M$xlqi=9IS(p8bqe~F8kLKkWVh}4!rv$~7i>dqfEj5_-aQvnJy{k!SV zXE913;}W|RM0gg4?F6BQ8m$5)|q|%XF^L=`(gp4H82;%$It4L57 zg4FS&@+mU~vgT5a-_B>FY-aNJV+GFX!VDBNe2yv&IJLo8oAt)kB9ie-Pm_n4p)m4o$U4LlucNF7-^-9}w73l(t z^$~b}Mf!Jz<~I6Zgr;nQqWF2l&{7#hSM&NF${j|3w)O8#hE*F;;Fb0HqJ?gLP85{c z(xUxB>(`|sCnsw1g!uOS@aFJ@=*cO87D#0Q z0>PAUWCnc=60(P6qvofd;Ux5g2SuD5`P{i=M5KH(?R8|n$Crk*6FyJi?^B*e^YD1j9ceVRWK0pWLrz-HBMSg}7li5=3Jj zYhfLK2u8aP%4z$$4`?#lav+bR$x>#7B!HvfgbXC5Ch^7xp#H~c;T%XG2@thL&F5Dx zg82Bb3qNOP%PcKtTXMS64+%uYcA?|IApzx4z2I5wE3zH0{+3Yu99CG@$S}(Y1BoY zz$DxeteMDa$TbMvNa|&rME_j{5FH#CHToElvSVuXDWtHWK}OZV!69)dC`d`WHL#$d z;Blqu+o<0ZdVx;u1~yZ^AwuqZwcFO}1VXsa_`Ka3`REbu$CAsKk1)Ik1|7ti;ZDXD zOFL*B?8vK~gGU*B#fd5rb-y4HTk@o2WM{VfKtj%dDwLNn2!L;g+G3MeZT+7r{D6@P z39S0w06hyn&*? zDFW^3X0b7<0_0P_mKvjBruR|;?_BpjJ(2V0FA5DLem5ylLutTU><_(Q(4_91q#@93 z0?Ea9ewe(N@E!tE!vGl|BV_&{By;v4p(TEQuigMsgX67OO`Bt2Hml6~Nte!#T5iD! zauQu%0J;G%+T6%j$kWp^&W-sy`YgeX9C($e3(eJzyn zW%l2{i+#&t3&R-ALrjX_=Dk>)@^}X{T4ASD-xV=)0vUJ#K64y8ep3@*k3u-eHE}T^ zwpzY&+{Rr+xhRyl(03H@4`(Czf%4R?K{B#+1p0%?s6Twp!F%cUOQUK>dhX-9x;4g+ zV_KR}k>{dvsX5l+^E@*ryr{bGzc2;({1LQ?rF;eR=Z(GyLI{5VZAp|ISW{JFJ^tk$ z|E2+<-mjP#>ybzoTGn-ZdkL*!wJ|A>Yn624jb&Z~E}!3}kYHUUbH2px-<7r*129Yd zRpGZFCnbv|xK(mVmfE-3f2Qbo?>39}H8NWMS$G^0x{~8fi#*#`XQyeOt$dc4BIN?F z4|oU60y+O^ zH*9pbv0MzA@YaB^8mUw#Qb0ckPr$dZ&2g1G)=>e|XQUzx{F5)QUh)GPVOB8_y~fAh zzY?lwoZvD6 z7+vdq%m}1s_og13mm+N>ox zjKbrq#QjG-8L2q7?{1@j;{)emaLZ#u!utkpZRbrt{JD;m68PRS{Bz($^I2}f4;`r} zpm&F+p*Bf^q?Dm$V+kTcql=r_KT1Ob?G5<}jO&M+m@(hX(=49_Ub z1QvS@6exgMbXKaL007WZhh)`702>hT_QTWjCM{VV>jG;f03HYKYED);j9pKo{xr2p zk{D0_t~7!`FZkMe%%v*a0k08FKOle%(5RTqw?6&Ak>ndnAwx`QAiy1Ksb0*s1swU{ zU*=b|i$Ik*-`OX>_<#dMPt;vEg{~;91Fe*K@sM{fCs)_9N6{ z4O3kGd~a{J0Id&Pp7uBs0Uo`@oOqyXsu&%0mY~+k0Vri2e~!iPmtdaUA4!ul)|)JW zc?x#lozL?wL&=*9*n;zUn5m0RbV-bnK--7zN>aYrU%AW0KK4PbBT0yyX?&T$(aO$+ zo!c^q7zUT$WYk2fM}SRelJw6AB4PPQWnxNU5Y>j&UEk(e%Q$rHtj=i$ZPofnd$fWF z(C}GEb8{S&NM1V#oMLKrm&aBE?T+~8R?w{2?7&k;YC@nHf)ezTJZVTwZ}H^^Bx^@| zmr!`%ZES^@j<|hhEzqQOVKq_>=)qKmXPLOe$arJ&n)=n zWpH_CqPJu>4}n6TW-LrdAZ@LDi-AY+!+aS7N6XhsiLnMKVEnFF`NNBpgzgwyD3Oqj zu6+a=qALLy!oNpXKp*e8Da41W|3P-39V+Vj z)OA9l5ehD$HdKs;cyA>LhrMuG~%&pVi<+s^0i68>CpRJ z4tQ*CJ{m6$!+-BA8}HaM{%7rD253&30D1zlWCA;8^;bU#B=89Cx$lbMeXMZK&Xh2U|6TU~UH1RA_WuQ${{@-0(1sfh)W1-uzV6s6XXL}0>=AO z?wKf`t;PW>(8~r;745__sL`m>c_hrG5!!*Y^#!bY!D-or6-Iq}+CydZRz&jMxa6I2L;jzT)!!q;1m5k81tTiNUJK|M=P2XDZE6srT}9_=?0G*cOs_a`9Q@f!Tr1KOy&68;3lQ3M*ejM7;o==2<3a{tOi0xw@?26Df#gAM7{^y$Ei zRxWx{SYuh~LpabRxg5nfmPZG~Te!_Uz&kEov^mVYAR zJ{m#^y5v@HKMgn?VYqjY{gr$T36t9{#d8yHxBM|1C@<|B35YF}SG%xQD-1XuFb)eg zRMyASXo%=#$=ZHW`twLm72d`A80dLd9%v_F+`Y85j)XCRuP*8(-MWp?=YO-Q{+j+f z0_{BujdN!L?=5z=hjRJj$5j@!H*VMiYRJWVmxZf{4WfXU{4Vv%G|cIb#9QXlcEG8O z?)Sgs<_u^LCsCcw9|i+8GL<)HS8ouVz)TUcz_z!Cnx-41eD6rWuf>{boWnaVpe&vw zANtvoKnT?^h<=n9Dq9kFPRc%VQjt-+!gDUlP=cO(eOy_PfdnRqG}4^}j$e}QmUFAB zDJmc~U=fmohAH1;K)`Ao4ebE5y(!miYnZQ9s&+V{bc6=a^kJs<9}FS3#c-!0vo(S>?5;ev57ay5vl$OUGgO1IZ=I}$?&`J);UoP^%Ucf z07~|PYk)Oe)*dSMhXWJvI_o|Is)V|{z5bV23C|!UNY0^j}c#09HD5gF-8z z`lQOFXU+q+&-%%>jS*vls>r2%E+OUBR0b{g^f-E_ost`m0~-d}_TyhZmP0IE1f?TU z-7lUzI62y&z~6$IT%)v|MVcVrZ(z~V*{XrZ`nNDSctj#5z_rKekLPsF(SNQ&L8NedMJMga|_GpuPd;zqAWtA(Sm~UsBCIM0<Mc_xp|e2#e;z4G8> z%1^im`$rPRN3{i zV+DaRY4`Dnh_3V&4p2U`%P3U_v36iqgi{AbD+6XA|ya_4r-w(uNB-T0vMN*S*Q~%_=N7 zi~P`w)5N_Im~QE#IYpp!K$s++<-0MkZt5Lcspc#s!CsizI`K6D@#64*P-iAu}U z+gepfNjLVKm^HOc45g5cg`r@l-YctqzIO}j77?#$ihXL0rakALxFM-sY%UdVp1kLx z&al6?eq3ze3pZ)a1=+B6o6wZAY z(KEy9t>?2afrrK7PCop1kvS+qs&qC~kFLGDrhkODJdj@9+M5Q30c!b|FXQw9*fB^E z)1n~>Ik(Y!^zvaS7FW&4L)7K2LJ7K3K-k$imBH-kjAPEXEKx;TGQADDXe&ZXMp&brfR z9Kz*WPM#L5{etKE?QO>_*5e~Nc=b+J=NtMqjr_q zT?(-n3_>9cjo|xJug|DxDydzgWk20&rNH94t8PMM9a^w99j!7)tvcdWKGUa0Vo*|? z|8CIMefbOB!PQofG<8=$YZ`Oz1EIdLxHK8n!2QBAwXXJTva}P%Zes8n?fBSX9x9p% zytp*n*rfSHFM6?sd(8E$8v=?gyQ3f>{JT-Ul7>RP*B z@grOQ&SrBWKhJ87_NXO#2x(%Penl%tjlWV&Tq}wSeRaz15$UkgjL95V?eT-x53<>jz4)ac$8n8>WQrz8dgMpN1LG>2 z@bO(ob7cD6CAt_1Gj>o9}T)ebZtxgI7_d@;d7dhUgH=eCh zl>tkfKP+i4l3}H~N8`ml)|)jo{s`78>@W~mA!ywx!FTL0ofwrv&^P7 zwpVc3OIvBdZa$}HkGqm>W%ADp+F?XAtO<*hI}9`-wA_xIu9G!W5GWhd=O>-{ z60<=MFCvMR2JIX7fUZ`O#piUDNtax96r9*4k7LtnMZN^OxE;oL&21Rf2GP}QRsH;m zA(B^F875GVRB(LBvU&|ea~QlAAt)9SJ6JK^;-DcOO1R&0_xSl9^Jx3 zt^6LOAiOotqbHrtNb@xOpu=b+g$YbE?lPTb9Dac0y0N%_frdDudVvT^+-JN$AlHZs zzxO#$4rGBYk+mmN5^#d?Yfq9zP=$OrA*@8Pkbz)A$-j3iZaf&%XMTXQ<9l zfZgo*Qyxn7>91`Uo^>~gPKR_%K#6w9Y8o#mo7UF|7!z=nwv&R{ts$uw-l#!|yg13Z z+X!24Y-c98WpNzQSJJLz(yIHno0$-|>wKqebvqMr*~F&KHj2@AYB*(8$U}2L4!296 z)4URY!7cIYNDwR94yvOK>=<)Kg|=pAhykIqs~n2^gQW0M7~BeK(P8;k;gm@SMu_I+Ro;cr(nuazpjGL%_E69=W`e2`JbNzoM6}Eo zO{MIBU(AbH*HLL;+XX`^?wA>;T>=v&w=L&R(`YDvfc4Ir;-KyHU==7Y4NWM`3He#b zjkaZ*k^6)&3kmx-Q$4*d0`}$iv5Rcrj$%WUXNUohwpb6v-RFgGXj({xt>`ac*_*jc zz4ij%DAITG7juh=3uw!S*U-K3yC84uzA!~CWF4Hu^j$Qvx7eh;!?L+@=3OI0ChIm} z5}U0m`>M8EcH`j!9AmknHP-1_p)3;!8Lri^D4uG2(1$pXr%V~?rd46K*sD73Fle&Z z9Urm078~nq1F*ZS79Fu^yVd@+9w`^%>gNMgsIOnHi&CrX>r`{^T=2Svyf&d`%z-Hz zf_rzXq>9ly5|j8v?K1E7{(LuS8P>)#w{jcv)LFIPjq8_64bQzI=e55_PN~p7Ou)fzNfL{+Y$r$+Oo&kAr)st}cLE)#0TH3|!^pAoH6L zD0M(cugCb8E557Y9DJ-XYwq`+TGY4^$v$iDE4X3)hAp&k)tw{sXoUF?-E8XI-Kdjt z_o+2c4P$&0#^?<->&pzwxB}f_@JHR<%yt7)qzHs+M#wrUqij$?UR5 z*2x~)v{xaMif-iS|0FWU!{l~bv6{Z7y*pIwaze?ct^Gw`U5`fe zwDJ!VdEQMfvLCq)-#+zHzDb^;eYP`7dex)H!6l%e=BY4D_W~tI5GGnjHPCn=Lww;| z=O=m9ErYALm{_js#iu0^aDS(Nl2^aqR%MFrA&B8S4b}x63QXY58(s1H_%t@^3Q6kH zxAxEv^o&kb0O1N3yR2Q<2O8MDqC06w(so6>Fx6}C_n5;@zuB1S{%8&FAaP_u%QGnN z@AQikh}yHkmEIpap&!=ud($#L@CJ+eb@<(zO5}WaAH+56pO9J_-aJ?BY~S(o?suk6 z)aGMv%L~!wrzN>jKg=y?Hm~>%rAwe#=U+=uaPIJZt83L})L6OKSIP;yq43Mx3pPBR zq2brFreZ6087_aBTY~)zk|FSOcl_?ji7X4T4yZ}c?JL9f3yv(bZ{w>`>FUMj1exqR z^2M~^(5S#Mo?(1ae1lVK`zB9|*yWltG;T;5Dw-&Bjk~)jg}k%s3QCu$F0ng3-CYwo ztY{TuM3{2WS-w!_>{5__RP;MlWG6aG;z_oD&R>dy&nwf1)_R5(DRYtak*9 zk^|Bwn83^T;FY3#)}2cAh*{PmSUMH5&I z*MwH9!uaq7aAaa}AX1*o14^^L<{!iv>9Y>{&t9>Op={PJ(*h!$s;9>%5{#)cH#)tFw z=*X_-2*v_&*UIe*o!w>HTiiFeKG0vU^>o?Z{CowAtJ|=c45nnaB8Ad<}`tqu?a;fhKUuJD~viwvLe>~ z_jQCUvlfdO9AH%Wt9cMm*OyR=oo7pyGen(b^Q~ytmh8^rEOO8@BdxqHo(!?e+y)uo z)!rph`>r>T?wtKihJrDz5)TvABOUY)(a&iQvY+!u8WcEZnDz(pNDtyVUl~+?l3H-2 zXiKru^@v5yjPWrIOz|Az6vmC((vfy zsP%cEFvCP2DTpsu5Y+!uuJ{U+D{h5GnQL$FSVi|OyV5n)61%cHHNL(!ZcPs!5pdbS zPzGog+%U|z18f-FQ-^jzgoCx8A23-DeAE z8xQLES_7F{&<#JOOs9CPa7BLN%lg1#FIlxzq0Pfy(O-3sB5RXW@$5V%c`MRbXz}|MiWsJgK9Tc*_y4$GOYHvRE zLhgz2A#hf3Hu=v=olN&y1g(;0e2(z!*TYBTaqDQ#jnM_O8}dNBh9jLQKrPt)lCCHL z_*H!4VVU>7y&LuziOZN70WPtzw&d&WqohPMzMgJG2sA7W#zpSxRr3Y3O&%TUzdigF zeyfjH<13l3fJ+T116Qu~1xgMQG_w=1zp z-RP@q`lNYB4DXbJQHj6AoD1l4L!1NzxD7j>5Uvb&S$e)*sBKRHTPO?fqyv~8;+ z)NX!SW76=H0nrn=8xlq_y4JU{myxqu*@yq5Q7|vdQks^#>?AiMuBCP+W@jho*S0GF z_LEUsu9C}A0U2~f(bU+`0F=~@?|q4f{%!_PfCHLo+esoBD4B%mwj0q}MSP;oM_DOy zr!&WEhVP#O7IzQ0q;ZX|N}w9U=rP>Zu%r45C~hI0=0NhLy4W|cUyCn0clrJL93Q=h zyg6l&94fN7^Rg?nkED590xm``7qzKis~F(p?fLn4()A?I5qBQ@(bzt7 zy{MXa;70k4ol|L!i6Q`L%Xz-|7e{VB_lGLOy|nFRk7pk;gUu<+WnH`~z<2KyYMt~o z&-M|IuRhxvo3oEhN`Ej)>*GRIb8+s;Z%Umj_n!_i?46BYxU-l_xsEUuvT1HOV;zSE^VvD@->EoiYG=e_o8>^wFA%Q}qIVxn9HcUM$CO)o#M3w1%0ytVOV zt&H>2h%_c}mI}ohH6^GQ)Uj@b<`nL15 ztb(F4HecrdWA8nqn(V?gVNnDT1u+65C5i$nU8I*NMJy;P(xikUf)r`eOB56Y1XQF* z6_BEo&^tuBiV%?AOMpl(0YXB`?11lk&YX2-)~xydeQSRB1MqpCz4v|Hy=>d{OWXS^ zvh1{SYbm!SvEK>>kC`_x=6@NjwnhDj(!2+0lsHqfo#u$Ce40BoI-J3WfEt? zu5>Z}x^w88*Ib5A7zjayCgg7y$L)apfvR||J#vV$>Kyf9{j*X@?R{k;CFEkpR}20(K>Zt<;=J_kAG6xrtWc+mE?Kb zbrmO;mNB}W2+b=gZ~$nP_0==Z-7|=YU%e?XYiJ=kT!zl5j69vZ>X#~}r9LxVB0AOM z@d z$!m3;OXlG%ebCHKsRW_N+s63u->dgzjCe_gad%m~UmOOKo_&I*%f442k=`2&tt9oC1h zy5H^@sQA*IQ*0NT&D*JULF)<}UGvBhDSl5SpjcaJ^g^HV2!?Q;S)v`1)0K1c_f~!E z+F|XBs=1l&k<4EAj}5&FL4(lzq4TVM0WL<#NsF6OawRejD1sS3o8XFhk;_`z)!n2+ z`F_A*Q9#_#lZ*;;{g?M?&F9xydf)!=I)N11%r`MHFHA8`IKncVjp^}BY4f?G=9h-c zdjmWxVt3Q@Ctti)KQ@ zOK9;OWZvhR_!dX6Uivp(Ibxn!KeF6l%N+XflhRDd@VMvxZ8?Gs7={Wb5RS6NN7_I^ z;grqURq>mvEZE=Yp_9pU@)v8SRHGf88`QsTuGX?F?vI^t+6+&qs@V=|CYdP~3PE3U ztVSh=)5xxHO$zqCLH!`#XIy8V9H4r<49De=;6Cfh&2`*LR;0sm6nRO{nfN5@^^@+* z<|{`2uuVD49{c9AP(YTkm~LD(2@%Xk)HlTi^Lb}i;5w?~tB#ZEp3Pk<^d-a|bz@&p zF-mfdVcmXAz0Cx1PHXy-m3(ozN_c`zFA=;#Zka_WXR>j$#ETj+l%{S~q;fm%5aytBz*efm zu@4-)qbvBC3>oKoX`fyem)oa2F2V`HghI;fA6?0-iWloLZ;u4|`OUs_c+c&h%sfQb zHTiBdD&+Z(o@FNOD@^(4$9}|puV8dOI&5=7=2YuPrLKf6f!Yx?W0i>5?-ucq7`Ws+@h!Efv`&cWw`CQnqH2|C{s8};SjI+%nW(n zjYSnjwq|8Va~(rR=isl;7(IYK*yiwnKliCW*uTg%xLl@hWaoAEjZcBgFHUT+1BTuJ z7^TlRLwCYwy+Cd4-z?Lvj0ScnO-AdrBCs7vQ{`yXgtWX}pVk`Zio)qq0-WUHdef`6 ziMk=~FA$UH9n{~_3X{c!Y+*T4O^NEx1EjPBjFfVo&4Myqs{)|xOD z!(|TOpMKLwC6vARar<#iKCjPl3etDX+J|L;+J4uj7pZ_A1V*qr)0NO6s(sfbcooUZ zR5Q+Ve9>95)Vd+zQ-aU;yP3!W^8iShzxO&PrA)T|ptX(&;aQ4-OCoG8>6wE+hrO0V zoPFT>X^BK%-xRr-ZAxY|y~NdW5ZR3f0>kW>?u0Pa?0uw5v-*Ur*4_I4!GendaZN}4 z50GMc#)UX|P2i%(NilAhM7?tasX1e-F9k~`ExSFp=(J>zKG~Y2V@l(UuJ7%Hih~JXjpSe0&_N<33dMF#t=^d#fn-CQO;+)XI_^OhLvhyA zHw^xG7%x6b3=l8J=$#RWECDTj{C#xg2i|EeAJ8HlC{HgdxJLsRo!^%*q3|>viP-=t zHT!%ZI+Q5Sd>TJ{zr|cpKdNrV?$4+)>ONi~$i~)mdBS8P<|?s4{r>Rt@xfc(kTS)a zoPyu{<2&P9WDVx5_+w>4`skgTwm8OiLV>ZK#zWNnie=Qr3&qFv+YwY+^93A zp7oqwjr!Uik#ar+7w7dKw>D1MW}En%r4@pkuleF$gY*KPOR`Dh?8<*&1 zu4?jOUv@SbeNqh5+?ImXeHr38ut5&Kk&q`&fDEqodJfr!wbb?C>(I6b1izG_`sP0- zxK7win^Ifm(w-a>EDmg2DMmyvw6KTkleQg~?J)98PyATQB-c>qmTwC`CEz__<_*v~ zQjqWyD4~MoXGO<|qmo-BV(`xM!kg9gpB?HBWJTd>p61pIL1gUTnJwIksy%6q*3R^v z#z4&;r9m$_V!Svv;4pOC^=xO;d~=F?V5sBQ3It`uuZI2QJ?mfD1)(%^tikFRPAh{` zM5{m|wE+@l^-FMjkvD_ObJM?S8L{>HV_s?m0<@_bymMNDjh?1#Wa&4B2=R!kxHhaw zu5SB}xuNmRFn=<4^6Retaq&Cb8~layM12OL*ENxWtN?7agBge>=-BIIq}Xu)+D zigm#H$M?_3q6m5YsBESLIK?(h|8d{1k5eWq@x48a1*rA)TRJNb$m#ql7pwMflpXYj;2^8YwppQ7+vCDbLS7o;8}*XsWP`@kd=B!* zxPe;xIx}RUFAtKVj|?3R_~}uufDwUDv>%2H0`pN43~h0i(!B*m*n*-PCO_)tP*%Q4 zJ4wj#RkVjihy9~$uS_V`EDZ;|QS7lvFqf6PeX(z24Lz1=9C!-RPwo#h?HfAXhgN)& zS1+MT+`|=1Wk$`!&4uPrcFr(?TUvSX=TQ>Q3wczLzWiD+3|5`^5h7R= zcKn&R3*p-5@P{)rM|oi4U`+cuPWIit)S7!!x~KIcFS1?PtWe^evZ^q$MpdcEIUQE%(wfu)TA8m@ zBazzQZiao7vc8a1>+~lTF|RAXiL81vGPlB!?16)Og5i`_B$Ens3)wr%vgzLW~M z@3~?7@bBi^28`Hi->8i*#@9Aq8I;a5I11b_Mv?g*SSMyo@{z0SB;LV4Jm>q^CPg4+ zcb?uZ<)KjJ?YoV1-8w$rO|nlb#J1krmWsZ6XbbSv zXa$E@`>rvMnfJA!)^(BO&r69QXElmn4mD(Z7X(T`o*dHM@z`{J%*g1##yS_!5_TkMxy8W*d^mnyG$os@CEq@>l_8Lbo8 z1*cWM^*wMMgJq?%Dvv5#EG3OcH-!+v1Y5paXwv=LormVZfUnST^0G%VuiOdJ3r4UGZs7M zi@Pmp+44qk8#r?<-zPdBXP5eu4}@6X`fM2E(4OG&xnefnuI7hNg_+`KUD^Dv4qT<4 zYZlIH&9RFzPwvDWDtoZMadIiyOrYr%XW|Oe5k{zQ!FD~Xe?_$)jCvIsN$AP4O;g`~ zzVeAO*cL0xd&GbCqqXN0v*XN%ruU?VCVw5l{C{czxU3V;)ZuGaGVV#t;OAl50tdi= z1W-Hs+38D8H;$E21tbF0y4|SG1{~v|G;AXX+t&BvUhjP38sm&qT$Yn`98)T^=}P;K zZ?*qk`J?zowR`x=PlgY3zk9wVYy~e_seM}vzpvD(1wfegAk$0SYt1v)F83x5u@ z!U!6=ya+{MLEm0pz3adhe7Xkq@#%t6{h8i^hm-GusTp$~;GkaU@H6g(D&yYuv)}>h8SN=H9;ac;Yv#%zDM(f^EyNn-$dPZl2&?W-yjHP zNj)dZwb>fx`EDs$>cxH9f*%#&&hV9-yn}v5Zlf%U)_*29Si)v>wc-<51y@r?S~UHO zc76pbP!z1SzWcpa3{(}8kC%lORk>brf?~FM@max{J=9fc=+OdWHOg?JQwj}|%oHcg%liW2k!WZ=QvbU@+ zrbCR~C^L4-c^uNzY_fJ^>(i%0b1iQXOS7K9rjOz*b}#p;+~2l?mVR1Vfp;F8?B?LoOP ze&3ASt2;)Lel0m=YppQ*W3Veu+b9^Zf6Vd5u>3)X1}})mIL;4PiQ}E&5YQMbhfkbg z+7Ggr8r)tL|QOXSKcyv%l9f{oZiJulFUF zIsY*Zvz&|+(lnwa;MD6wn_EUTy~lC0gj=<^#8TSuEEW)UD~RsCr^zeezBup>c_v@? zb>2Nt&3!J7=+}2g{L4zQ0VQYWN5f0rOx@9o%#a&wdQe2~G?QL(m>MgTn%kh>={hja z)D)tltt`#RzDl-VJa;=0u+&xde2e3BiWw z+=)Lfs6r*6LpXsCqlh?j%9kOmC(pdARqvTfNAenhdlVkWraS=ZJHx zS;()pwbsdA3+U7SO1Q@%*fUU{k$dJXVxk_X5)P5qqh(Adewv}mvuhjtVn^;2^fi37 zuTa_s(H}Vr%6N!=SuHrXnrMj%k`Z@0T5p4_WzF$5g_5g?S5?SSQLU&DOUnoaN%OBjUUv}LC&gvP497^3>t%ILR^_{qRive#PI z;iKT{jCIK$n-4{_&PiVJBk4wI8hDAZDBF_K$-&mGJ}b5TJMa(J>2Pmh#I8tN==Chu z^f>=ayb%&)6TG*b9USP_k1Ac?CzR}IFaRep!jik+NC+~fL@kQnJ?BSsBnb0 z22bV0iZUWfPwxBk&kn`UI(evXn2dx4Ne+oBSxV-gioiL1Ll6f9o!9y)sb$UGkOYdp zjgb(C;AO^}KXR~bxYUPQ;_JW^fZ8PEH2T8^e#|*e-AId_k7HC{0kDE#?*2=v(Lf7esrN6j!ZPMoiy|2AL(*V0|a|rW6Z>&sW(h*Z~2ZWSIJ1&H> zdW_=y)*|85AiPfTxB7;cwUQ4Q+6HkohR9ztT)-mMcno}bi@_o*(+qZDF^*d?B0nCR zdCZ9j3r?$LI)E|Z(cNjUS~G}}Zu1X-BhTY#l_?U_!#Z`nFFLB^Y4~y}p&^Yv@eJKgd9&l-3G9AQzKa)3pmH3z z`l!ly8!_G4SgT71-T7l~LH5I+vk-J7KU?sqyFgj~bMW?z12cpob7#1jDMdvuw~7L_ z+%e*mD00M}ICwX9{E8VW1lg1m86%r%M&}x6cdxAA%f`YKF>(pi0+;p+W|?7<&nzU!?H=h4VlVJc=~hDzl=Vr_}zXX zJ{+G_v4I!~O&L6EGiB$eeYxV_ng!3^>}KE91;vX z7qgUh-014xNU$ZEbajuOO(qghR;#HR_8_PzV(NQ88$J&*9(P-BihVh&^_2Co*?{Kjh#bMKoT=u4kHI2o~vuPKenQ(AyeWE^I6n5aiQlqV*NV`GF;}!Nwdh; zzBf|u3sXyPiG%p+5^jpJGA@vLJAuOvn;?tO^xaV`_d>}cj{y=(?~4|@l7!vk9>`|2 z12PniSS}v3JrLIe_rZF2I69wjuxo5NYO#Prv2((GZ{$5k3G{p%Lx5rs;1dSLAG#0! zXm%~`?M}hps6KoBD#7FTjTCm&&ge=F0tu&H;b$;!d?7){=m;bJp@RF7G^T+mZ4=bY zq)|XvwbT7{@nHv$sn9FEULDuB{yU)x=DRjY&&wZo_ZlpDqVwxxMUPT?h!lwI4m7(R z;r}GFYL+4+r**AvL+>Vij17b7D62H}=zdcPotZ{zoQ6;+w!Cg)(sN9{t$8jh>9>SA ztC5@uUR(C{xC*LQxOmyeBcu^V>AF7Ra2QfAbB9vN_9M7i6`Q8#`Cau_Pcok~krUN9 zz0#4S*gT3K6M9-Vqla$AqvZ{hswOqhAiyxjfp2QdEN;nCyU7pp%7~|FGZ~MB$d3JS zjP3Ef?w*9Gch}ks{K8GXF`R$l*r6%nJ_IA(0WpKgIk*b7;iNj#<%vd2BvmWdWM?!e z;)nHvCdY%iAfFO!bUso0 znRtx&qH&uXsLVZg^{Wcy4P)jphQf8@#NwW9EFPMCcJizpAzs<14BydN!|vxr?n%AC z3{m*wY;xexXI3S-#Zw*8Z^h+wrs^4?mplC_^p>BTXVgO4OLWzRXBwepA~e%^%n;&K z|B}oI+xA}>M-aP($3C*uyA5&1ypE2ApJJ{NHBa-h%hdQ%Po1+&Xj(`5_6p-!WBqO? zt~HB$Qe#+4S>Am68Va&Z-c&*uoEYWgwE4^qvmOI1Co#V~cuX@U(Ir%FA-9;D7`5f|06L3KSt&h;s%K`{rt{mW zXXP6h4ORf8_*Th%+RT2q%*1|_=-VD#uzlL`-a)?{%`yKAj=wBm}sitc7n##v`R2%d{s=48iP(a>V*|;N@zsnj;JP+i%=ud#NMx2*b8HtamFngA_0F5M`~<|L%T%FUYA}62 zMKefPK#+xm!jJhh$JT9RFktoajW0|f!u2c3zivGSCJcY;=8-dRRaUQj*yqe&!6H9> zY^^wjEYfa?7?5_X(?Vh#sMzyhgdool{r%Q}LIguK)omuy}=>Et<2g zeghRz>6|&vIUaBW)Y&$NKxnlX&&9__>b^!{an0}cEW9vplFlBRXn>w5erjAd9^!XE z*kDO z2qBmiYio%sj%qGy+uE8JGwl%;C3$)QE_g zV)_IvCK@(cb>U5aH){1&_yLwU0m_sKqk02V+BadOJy>d{``I_iS6Bdi#{twlNmi4&p7+Jx$TODjsxAFIrPPRcqF>UVWh-RTQrR~X&CK_|-Q}2sQ_@~baWn-CE-0WWU?7$Lc2g4P>A5h;`Am}d zw``JBNT9`JK>dmBO|miGsobE}y{f-M7w%^yqA=tLp$`KUA1_5t@eotZow1vaGwJH8 zqFk)JYX{PiElJvvApd>*$~=Zu@u}R>TqL5_|31dCg&N4BaGkUkiO9X`JpUytw0gPf zRzT({|Ht9dAhOMdSr4KSZ1MmyQf}&yW9iGvHm!gkQQQ3?>-_t z82W_%E3FE5-6_zUwA*|L8e$a~fu-81@ERhN=oEmrsQg=9mE-ZXNWcUO1vk|-O({h} z=-iUO9EP}{%oQ`jI)>gA1YCi2yf|M#9m7ls;cNQnxpP%3CgPQAbx(lahGVxPaOEA+ zUJjnQI=c-Ky{GK-D2BhttJk9lpHe)0$?f0AQ}^35y3Gps7%k=8K{84}`lxa@ zqWG_M{D{`=e&8pKw{s_QMHI37{oQQ=9WahIL9_3zYqUNPd7E2tcUNBA`nx-0%--%a zm>`qvhfeSRMmWUHw_s~q?F?65|j4cA4 zsZ2W!O^vKDkvkxB{ZP&64p(mcs`#doqY!AhASjW6RA99=Zauw!?Z8UyiXYOGFcWL% zK>ni%JKoCckyu|=e*$<8idU07k2HQ9Ok4nw9&k0H2uup{R`}EDySyL@|1Maf2ZQ?e zbidOa8{*#K64`o+zj>Lm!g`11mD(<9U12q|OKZk1Ex0k1xp@NxqsH4E2@I>Rg_##X zk>v5^c}%3BcbQQyla$cD3uYVo_nG=x$Jr9ToC1yH58h3=#2kCg=Xv`2 zbBQx>$2vl0oTO#Yq<`FPi9topB+nxJfc;S#5>n!=4gBM+gp8zKUD++elDb=e zZcpo=<~H@tFyXRxK7Vfq$q7ml!LVA%2Zf(Hih*0UVMa?T5RZHqp6?qiTAHu5HkMszzP}(G&*DfLMuWW7VGzX=)hb}pm^b!lFyUA0z&9(17 z{d6!cc@_+cTI2Lt^ukA|PLUqR@G;ip#s*eO8|e7Uitwq>z9l}~Cd}EZU%3Vv{FUjdY-NBub{`(8<`E!KBZEI z@c0+G4s}Ij-@nK;-?xk0_g$c{+KmOwy^4tTztK<7TtfNNZ;Ci2_cv;nmMNgu4?|AN zi6~jZkZNI^oBe`RG9S@7h>66E90etQFMU|k8iy9fb8l}quGIHkcTQHpeJ_h&vWi_= zBKyouC0P*O*9BcH&tG7(>(_=jT|0OPqMtvQZe9cz8yP`R_5UC`gGB1+%c9cQmUSld zAHeHbUh~`%A5|=i1kG}XzX^-Xese5B>BF}p44jveKazE=I6nYHFo|xi#U8}1f0$8n zyreg&RsdUn7kS7)y530sqq=;QsBM7tya=aE#Fb|OtSRD!E;Bdjs8Wb~xJXB*SIYME4eqz;J^%b)Y`e^(`13m%DMRie@Npp3Sxfb0Yctzn1oT z#puU9Pxf6e-U*}Bb2v7T7{~q9=8bPPx@*%K*gI6Lvf>ci1^TmVyESN!U+a(CJA7rf z*k=r?y~X_TF4fPgI8$`TTOKV3Yu1cgb)5zy8uK!}cZ`&r>FHmC-m8uIM)R>wh7D+b zxJNB$VDqSpSGG>OJVucmFlwSW|BrFR?~&#eZR9>O@CH zuHfd?jPS4?9iyb*Z%W5!uEgytWXxBhd@W-BNt50&#O<~KFR!02$+BEI*}N7lEoPe> zyP*kTL9L=NhnXv!DGSwL*is6AS&uMS~v`_yP?cS7O~5 zhw5pO5id2IK4m>LET@j>-mRzg#9Ax+Fr+g9boL=x>-DtgLJP=Uy5l2_JKD!MVtD$; z_cu${QMV~M1A4+^LP;!cWxMkmSRH`pV?0i)F5Ljt zrAdLb0C)!cw;KhBBj{CSW+0AMb@K8$q_`Vs#$PCVKf(H9E{d=zc=hzE#Y{Zc)Vtdz z7Gtf!P4U8%k%`0`=KT4r1%AJ4q8@uMUAx_r#l-pq)y5*g1fh*0<$RV2_X*l6cJf%i@oL1y)OZ?2>5~9Od7rE5gF(v*N{qbE z-fm-{R0FAxrYq1~UgIYXYC|hUd2;5epy}x$f5BPg>LI9{ z7>K%47=|4+2suB+&eOEc!+DH2^X$xpHbBGNG>;I%=eft1hIT!EuEwV3+h>m@O{B+4 ze|*ZlNSk*c#>Fg_QYAVfFxV?uC8w6rWw}dpw6Gm57cR6PcuX24d%d< zK;U#OXx>Hd2Lo+L5A1Sqpx?=PHe=_tb@IZoU_VcTL_Zft`>b-{B0n`&Y}`>+`WOLn z^f|{spM&AuLt#hFC*GGK@3Ra3cG9&vNh@ulO-(m-IpuP{xvAQKLc{c0m?yc``c%^Z~E*pVNGX_j%7+n1=y!2BpObtZ!Ye9|O ztP(OZHT0lc^4uXvz5MaXXf^=}!Gy%C&!N1#YUAb``%SPJGb2!%Qt(yD}$7jTN7>+rF^WMiB{y3pqGEI0srQ><{hJRFP2f6=a~T zW@4HnT2Bt0^XWsz5!%m>CYfVPL&56wCPizU>*^<8UMFj`+(Bex>|2G)zJ~4^4KHnf z5j2V-_UTdn@eXKh#rK;dcBPNNHJLULkCcP%Md;BrKme)GpZ4q3ALj^*;LCl%XFv1V zHR6SE!^=08F?op%*n0&M_2?)WDG!-p1Fw!G+7KZ?iI&r`Wv{_XIO;`TJOL}Azwy6V z$$Kzt#8}cO_!U#Jr=U^Jon&B_g~oqPm^+r7tI6YEmSO>{i4FFn3( z_AHx7$LCgAvKIQQmE*^?RSIe+Wp%|W`L({ubBCda`va~1nQU_G$CR3<8_185l)fmG zEygzfbOnTrw7SoH*?Cq<&?dbjkC{VoM3C3z%p)S5en zi5v@@4tvGKb+jM%=I5be!xlGE`wr;rn)kIbZI*bYoy$=JoDF-l>+gLd`DXI2@y1(bX*0gqr%_fa|$4Z*&q2S`Ctdmd;3eD9;mW1 zx4>lHaUS;5sr}(xF;#AB%l4vR-%Nv%@(=E0TAlc0~E3%o>ZWhF-(aqAb%w;~mw@)A!zmaA9EJO>!t33xCRRzV+( zIFo)ln9mQQX6N_oc3I3qd}TiMKv#+Jo`g>t)a%7&nZ_?9q)o!!Q>cx|4&E%d^P*+Cs}`% z9N8krMl0A)d=L+mID>~!{MOU_cfH@?g*=PdI*bLdL2TciV}jhZ+0|2{4F_@)4P1Ov zX!h*$yyQOR9vw(v17kSj(E^Dx-MyPi>G4AL(XPA*9Boc17UV|DT11C+)t|p&(f|?L zU%mloh7ZI8{xa2HGYUz-w$vS|b}~#EW#Cipse@<27vj_>%_u6UJ_>8$*LU_nr$RT?P4}H*pJI z*QB)vE@BlZvt)2Vb_ZxO0qc(g9#Wymp@X@e3u{SGyo%J^=4lVy=)lRb-Nk+s z(Xs~)HYg{t)8V9b0=lyBY*ILDRr!rGBs-`uA4krdLAT`KJRDU@t$knZp~d}Er`?xK zuk(C!A7;K4|J~-Py;@YCz6*ENtlZ0kKTaH%xxYU_&Guy0yM6a()xVl>d={aPM!t!8 z)*W^(RI%j9iSQ+hbK?VV!&2`L{CV{vRnC=y{^;&E?u+%sCf1@H$u$dpeWoiox@+9d zV7>zmSLc&L{x!A}SywziMv+Ze7SEd9(mt@A#hjUPF)rDvD3-eF$Wx_F!VY7%rr~s( zTd1*<3Ula`h`^zRTt$Q9H{g!k0RaR?`i z=0GNXDKN0E_Ksr*dNZ6lGxg_2$PcvZCJuqUxw4E&Mc_dU=ll@_RWnnRRrc^Jr#*1Oue&+NnQuHdMneFkv}6(F5!7oJ)l}77}c2 zaZt2MO2b2vQQo+$STCK-Rapv?SurV|qUub{)M__wBunoa?bbCMJ$x z3C1CW-aPtn$3tapik+^YJN$^C1(zk5%l4}PEfIJ9i#FfcM)2K7cR!;W76{LlEh3KK zxdKB@nyR%1;h+kZBNgjzEoK4r>aYVdhT;qk{Tle0?z{!LjrOd1?`ua|d$` zc7c*d_um5Lh~Sh-81OAj|Jlz)`wDGK zP40prYexjn8T^V*Cqs-6D<2WOZ@@hzIU`GGy~kw*IgRGuATb6_`F{IaO5KHLT)p(QKiw0e@t3QHI(id`Nrh+q+mal z=*kLAgI|jof5c!x*CZ*pom26vZ;~VcLOl(A_SWxDqRmtTnseoc0Bt(K3uv^_q3jO> zz+&>XDnMhT-wx7&!{i&p>KKH!q!2IQI}}%Vn0MM8{ku)7x9$~muFI+IlZ-oL{^d{H z)?uvxF$TzS5f*b6EsUah%T2Ojybf*~DD{0Fd;*2cX){kvvx(qxJM3D5Wg5 zc(y!Pyznz}Iw7_dO(ROx*Q`EA+LgegW6RHhmW=#qZ?nS;W1H|=&nZ&(!8eva0>grn^ z%4;FUvi`zyn4W&_+my`;vFhW1V*dZP6tf24*l*HH1H01WeWPYw8K=i5Fvn5}{SA%> ztrLmfVEcUiR{9nIl1ROjh2ex~VsU`fNFbbOO>Od9L-`Q4pTm77GkxZo6DA?*;peFL zo=MA|1gCX(%Zv9QZGX9qF4T+D(7b)_ekBxx4btO8U#jJQd{-jwq$KU5q1=8iQeTZ9 z?)Wd#C{Lx;j9-Jd(y~(_MYF+7^^Qr$FaI&hO{xctB)e;Ug39dBrs#aM!^o9T zY&c4ZiAf7yG&b(kZKn~8#?ztoM~JG2{mukFC4luj?;!$yj#KYP{oT_M!G_AI@5VG? zS4|zk3}RimjwtdiNtJY%i$rs4P}-aoUw#CDlm8cRC$&E1#P7YEc7zXlLfW2Y)G~i5 z^6gbr1axtj7N5qrn`cmRCywZ+)T_(s^L%Ura=`_k;sbCl7HHm@PUEIG87}GH5%N!i zC8QoAE^GcFYU0ErQ)n-Krb`0?je~*o4^?m;%q#IYqZ@VcmREQoVYp446FQTwQP_FoaFkyNp$ zH&p%hVw-+#u~gjku4@!km8YD$D$Z$>OY5a;^SjC;pBBVDsFkh7XzZnv?n*<}Hc5>J z7iB|9u^9J5Qt6wTt}pWum#KRO!4-Y!e{_LFTy{1jcJ!tX=Y1=}R}Xg}L59A=zqc+m z&}0}_zDi(-Q@-4#SRjyRmSK3$ErKyaV}vG6ik!SPbL}0~WrW52F@R=7=Vs(AoDW8O z@t?1c|I!xx!0t9xWb|Z3^{WVcvjb=p4Q>K6p~7TWqc!$gOR#mYYtCMJo{t(KWBGvb z(`GiXW|NZY#$x$p&e$NZ0c_49 z&OpnVg*UAaT2}y8_@ky1cZ`joh`}^;8WHz3lHrt_}=|41Dnu zbA+yB^$%NM$gwoJ%o7KW2;P)beBi?iUurVt`v!JUq_E0S7fhgj$CXL*8_VHbR2l&-Z= zZIVl!g783bzE??>)%PQ!hYJ@GnwVG(2#mXm+O%S@bx4%lrDQjGWCd5G;8Het#GoG< z4qeiIM!kxO?WgIikPG@o;spxKiAWdKg|yPTO=1+RUNY{F#kVSS$vn6sTQnt>suly} ze{61lN(^=PZAjPuZ@b;KaUV)^$c1WaojC1wMQ5Ep>numSH38zq;|Sf~sPnaQpF)g09p)a5pdfILl(#!$_%Y>}KT8M# za#Y)Y+VY6t<4b1$2>>~EP=fYoia&OFjc%MYD?1AA3P<5Py=t-WyMf1Fp8ze=DcpwQk;=S z8@9$=H>-5Iqu6aKpFZiZT*j#g1@NH&Pn9oAE*8USjVXLzMwIxyts z(}C3RZ;-@@{Wi%n+SAT8scWrEWwl*Pf2cF#p6%pD>K4H=L}g<#XSt)CqP^#WRaDKB z$|*a;%lgzcm{Q-&?~Gf^NGcIIY=`VU{q+{Y51hj$TZ(BH(Jdy1LPPJRxGVb4@Wj4N zO^jysej1m~0B+c|psIi;OfxsZBJNyB^NNAJYh4R!ftC+%T`Nzgj#hh&MpCyUQ{LN9 zbRb|4nubW&9@rBRjq~FuAGFEN0AhBm8bS43MUXvG+)?CG*{kK-%VeuW$RX)y59d_>Fnbx2S4OL`{@cNb?Gyd6VsJh`yQx^%rZDfR zPiyH8XWC$=Zj*=)i8R^|A{rYIe~8^FM4v1b&m~R7tbVd9YHdazlYwDlJ2J5uIbi=H z)rNHNw8rg_W!Sw0Q3-=vh|B1Qa(1rufr;Ma^GNJbUxZ0_S~Ob-c(q z#2L=u>!wsBd8>bPd?$k&TecPjCB)&7?!?aEWEYj(lhn>_%)oo7C>llLyVa4Mu`9%} zrR&<7zF5U^XPWCW-LsHD`p$~jzJT9BQ5{ETFy10xN@psaiIIlo3seQ;;8|#Uz@BVc z?1lgVC$+H$sRhSc3QfH30SYk7#L=9Kl(*`f0VJk;ZZ@K-Dzgyv?N!ApAF|9Qbq7I( zf@W*9BmVw!AQSX1UR*v>JNsu@-P13v+p9eDjTbreZ9O0 zJ;xat8C`BA$1{zZ&2Sr^NjrQyY!-DacjC#O(uzWSr#I4eGpi=zmF1n|O)vZF7AkV= zDzCo+egWruUv(JoHiryPrn_84{UaP9k52b0GsOa{v%egu9N0s|e~5jWIa{S-3cMWY z`&VQdAc-tX|1+OEEKpJ7l^9d+Ip$>}gcH%ST1X-7KZ{^jcM0dY-vW4Hv|nHC#?kd>FmZU6<3|&%*M7nxu1WTW-LL1^?L!vg6 zuI(A}E_aK6?sTL1oK3Ikk|&El2{QKW9S|?(OlkSL4MF#KUx&*h6MWEwK7D#`y6q zJsVy~-$`_%rjG*N3WtwT|3fwWmzPV${dshSqRNqHGeQKL{QFYN%lVX&YevA@fZww2 zg9b8v?(f9PpW8ascMUHO{3?n8%RRCaBUT`>OZTa~IjBCFmEx1k|K;beg+Vjc1Q z8RsdQ6;vY`y8LH=ySQ{datk)Z{)Z9>*1Rh)O8ex8tpDr@?>^{%qep07CyLRWApmE^_7QX-Uge2cij z7?DdaXc!B7eM<5|6;<87^!wethaaVgTXZkppy41z)NGdi4<(BB=$<-G3o&a5W@F`3 zdKSr-?lm=au)Lt)t%*w&L?W(prn;=xGobq({eR+|JCRQ-(OJdEea<~Zlu#`R@A-fi zeM)=L_pb&TJ1V?I7>J)gL5BK;d{*YiDhORhBtBKZY)5T5po8(G%z~qTJ7VL_0`qNYtX?yH(gl91w>xny_A+o z6q4h;+NIQ%@*U%;hJm4swg_?uao0e|Vh0vkO9DKIJ^MZ3>K?lUyEcaUsUTgZBFdJj za%Iz+AabdBLN;BGss=okC_k0|;82{?yml;`7nx=oWy{1J@=Elv^J%?ZS6NU}@rNa{ zMPmw%nTBI8=RyNR%;yAZjW!OJT}~b#Olv!hDqaC^b3Ms~R%^9Y(jR)oeX6#ZJG?O8nCc02bE1ya|2>Fi(N`qjPBcC{|0IWYPDm96PJ+O$Xi zatEaEuq1#&1S_!TW*MwGY!Jz8K6$Nu;Wo4sX7$*zQ@sDN_?}qt< z{geQ?h=0kI8J6Nl$yF%ZfUVpH;@9>aG|vdJzJpHsE2$PL0IAR_h5rtEK z-^Ye*e|SD3KNW?ikTkAOpw3&%A=67Bc%pt0QD7tXa8FDG3qY6^6Sa!#kiU5l4X3L< znER}m@qfYL2;_q#l-Q1a+TH#A$xo4PXxB{5sg?x!gOTRo7e z95l!9yOf&=8O#!srb%S`jr3E)uGSp)wBP@1Yt(UMCwjhzh_`8><24Ikqf}JfW zAw&1mb?vsY&~URQ7v2GzPu||Z3N#tdO~Z)#&-r;nVdlqza{1wtBQ9qCW!3%h5k$=@ zc>nXwIE95ZNG_1#+kpdGu~YUpFpuoXsI{KngKVgnO2N5JL9R1o)YL+la9F!$DfG3^ zxwjAP1dcJRjV`-tffc^H7`{hiacE@3bW2Jo9wX-8n^lh|7;u}7UHAdk743{K6t7F? z7nqc1APAnv8PI32ZQo~&k*KU*IYlQq2!^BF=NVvJX2_c*QvB!+jOz=T?AxVZObMJY zS_XNJev3Mv|F*=_XcPT`BE9GjPyEh^?DA{wq5Unt zE_{Ra<7Y5CIo$}2F`DjPwLp$n6YchfB53ec4CeRgAk^9xe;nT3Zb^lyf_b$9HP*-x@^jI_1Y_@jC(8ae#h)YraY%p8RFyI7Z* zp^PnqJmx4hjA^9K)Y6;Kk&?tZ%$hEgUmu2>(#f@ws9XT6ecLqkYMq4jt_x1O3HX2QP)Z5n97}duVo2cD&tMbJ z^3w=#K+#hg#9_vKTOCeNE@I@Qu*~VV<-XSfkl1q3a`He#!z4az+)OX^eVOsvJf}fK zHlIGRjFvk#KCX|cgp_|q{&w2dR)52<3#h9_H}B*GFt{x7Lr}}i%-gQ+)40Oc*mg~Z zA#<9mE$3h5c|#H$0hRk3x`6$EieQ}690Qr4GVdoh$vTr;z-X4o zQJ8xiJ19Q!+BT_3&feyMX=<_|K^oo{F3Rha-A%Mj3yVI24@*RE?!kDsA_;Nd)yP=i zl3IOP)|AS{Ivo3+yQ-fDGN-s|DlAMBdh{uDh4|*gkagT$cj$So%`I!WukQ4eqJ2F) zJU)IM6ljxwF-MM`BF9dl5Jwk0&b6t|(M`I#^i#w=Shkm)*S&=_9KgYDpU=)5c)aTu zvnOfOIi#BG7*x?74sE)Mc)c1?Y&!xh<+gCetH{N@0?*}9Te_!xMsW8OxYx9}3vvyc zZ%m-xI`=!Z@OHzdbBt@^mt;@GaHa2<;cryqu?w?zzx%&1iQ`fx@xlr(aKE0mvhs0B zPp9m*(_1nu({gfO3&O0YyIT@{k3Zl@tTRj3D6w{b%-l8L8GVMYcM1Z7@G*t&p|47# zSb?$uj1=l86vAvw)R~>lirNeUtxwm^QTQVvX31Cpe}!z6vyI^vI`?CZ2e9Pqv9;in z?kNQA`yRaTJT=(;+*p{Ec4jldpznMS*L0e5pV(EPK6qS%zjStHOop4Y>hg@<^AEQK zeW&|xna<-@iAG0v-)anhw!4Gx(o?dN@RoPchAo3K8*}Cmxo7fz5>@#8^34@_;0PRl zqA7cAb;2QvQ=^dh0W{&L47YvYnEwtf2p)Ij2!?j*XPR$U*FmF z`^hU_aHuit^ymY~-RRD%ih@JIt07lm=;?e_x##ulg5fWSn1h0 zTas2^x%*Bn_R7w{Y%uP-C-m=xfh^`j;YP17Vex3>*xta*S)gW`u}uSo?mNJ?P;*Ti zG~*jKq${e(0%u)i?S7T7MMHISl38ZN-W?IEsThV*lAl;*9dN+7NuN1}28i13PM~xH zVs!RpKp!%+2JH?Mk;J#gPCWyp7h~ypw7&gJ?K_O&Bh2w%7x4PAr){mg($hKQ>xYFE zHY2;Qgc=*W+1uN%mkwdW18!`sX2w}Pp~>BQVE9d*;Z$oJMn8h+0j`o5nkRgTx-D(;c$n6@T*BBG8!x_zogUj}VTO|GGZGdL znxU>*tzfoMdC#7Ldz&iUm{^MbuB?$$T8%}zgSd}V(79IV+|36^VzWU2wr4r=d|&$= zKi8V_^1eGY&Arhv-9v{=4og@aT{j?QayUz;TNlL2&0>wT0%8Y+)%xxW#is#RXUjS(X!MCSo}3vYy)t(PIA~uA++~Fvdb%x8yit^hI5RtWhL%3yTH(k z)h^|V)_GURhw#iM^r3VjT{7HCxRK|&8>qHkYDsAFi#WS;%(^AerRO>L%bh444`g60 zn<%tGU%%MR9fR?<9!`&{_Da~J1{nuqlFLyl&GbGOOw}AQg2ti~$`o~qR@u+2I5I|k zan81DEiDuqSYA!6wc8q<{jQn@Y>#3b#WNv?G@tI8O`=|d0It!!rw;xarsNfigY&rf z(qppeu!96ak()gZSMv)IgRg{iSKdY|gB^3g7_DX1R9WK}ad~{JTVGkY4Lyl<-y(sk zE}g$F4l3xW$40jkhU^Zo%8u_XubLg$feK ztR452Fv^%bIW^T}*e#8E_|+JW^R|%8Q0Ldqyp9+-;$Yj=2c_N=caDzU=yXoF^V&45 zBH*soGLZbO4Ic8dri{@zm#oHUdc7!2V!M^^+ehqM8OYo58=5(aylo0d>ODaRC0c!< zP}CpO$kZu}*iC!HJ)qv3S?n`{*T~g{585x~d;Hy^%-9dtH3lKpEI^H@!mPI?fn({- zN8DVx7|;YJGEFIPXJ2JlY?htD#cMYhdl3fLuF2l7GEhCY%z%1m+1-&lrwS=dN6V*g!ch0|Ly|} zCcEw%)*@}+Zfu6->DZN6P3<@cUPC23rm;L^4*m2TxYzaeJ-K!suM)?R5n+Grt88Y~ zDB{n>t?7fhI!@__FS{9Pm2yhuIPw?6Bi=`aBqFh=ScVKAPX3+)n3hSaSp;Q{{NfH{ zHC3G;=?H4HzFcxw27Vzfy6*{^o9jPDL%T&29^6ZRs=*Z}3rJ%YOdIYWq}d9cT*$Cw z#(@6>PMkkdEs>L5$EBc9`}vfng-Tz`3)|x$jh7Wpt)B>@B-j+#+qBQnz1iSN%sULkjhh&5(YXt9-*PeHD+3Yb`$9l)yoJFH@G=+rIM0TN=+}@ z02x0;crba$q)h!GYj+wl#dK&MGMpP|<;K?46mlR;ElY?r;cyzu`0yCi5JxG6v4vA!O4_$^uFhmLqiXKj5y5m|vT-M^d$7_2WMr!>?j`N6Wr6z1`hii+vpT$+&J7_o-M}n@|EB6Ou5Z(oU3ztnj_&?ajt> zI8YZk3w4d{eK1CN&tz zn=-N7KqAUYj6>j&qCGakZ5OV@odVLdM3rGDff#*!e77=1cD} z66R_D@N{S%M?!+m9u!d)vjVsY+oeOCQ$wNEwn7`6nxmu_EuCYIDesTl(WMui#B zP8Hnz_?C~*rT>>Fl|aYk>t?0Dim3L+DH z7=vNy5rPz$;ZBMvAf=aQ=201ir0wm<)Yfi*GiZdOXDoZ7_Ka{s@x!O-Qc%dNkBQ>7cCTCT6^Xm*#oBbuo6SAC$ISBC|JtWVM39 z*Pc>C3c*#4!O*dDaHv#K#RV4l&8$kz!RvJP^vK9fVsdQG4o(U((zZr)oi%>oITs+o ztqaTPs~W6^N=_j^tdGOcA7KO|A-Z8$UvOk_aAouS-Uu=AfM5wyBqlXV+>~v;gU*&T z`J5u?dk(vl0ji}!d%%}W9>RZdz^R_~vqVx58mUo(>|LVH3>>=5Ob*oTk*hbSz;k~3 zypB!qQWXeZAD4wQlOWudo<*k@^jz_F5v`qP#M&j(S^FqA!`6Z?891eWeC+f5(HA3= zstajS8xg2RHO}+O!Q!>xcn>4HptwhYkdVOfa`8dS`ZEVwklSO$6kkAJby&M!#$SoG z@nX_Xa-T{gm8WlnP+XW4RJUQcsuMcFp?P(pnaS|*$CINV4Z3{OI+H9CE~^TOKOqGM zzglVa-oiu5U=dJg!x|7fA*i2ArY(`6+@~eXIL3Z|0|ZPRbK1Y`evTRGHM|b|KbYZ) z3oB$;lW-t&A+b)sctG5cg@dB2I!7%h2{X8$xV|y%EeiNkGqeS#w}IGfQjhXJ&?5Ex3D+SF*u|_=Q`ykBn$7?rV{sE~E;w2sI|zB$wYF!D?{- zcAWLLXr7pac4zg|12Zs2H7>AC{cUYTi{s+Bqn#1BCfk5%TD4%c))k0Avq}zq1BM?{>-@5A?>Q-uJ7NV6uU4`l)%fc;mcRow`utVWRVbHD z0#bz^A0MH^wio-`6PNZ4CJQ~M3*1|zOfFB3=|STw5o$p(vo+%-@Lf;DL(`PU7rO;yze}3#O9y- z)Kht%0({;@RZ<){10SOujw-y0fCa_x+_@_Rps}+iAeM*qXL7FTBYiQKv(y@u82ET5FfE*qx)JCiZNE)xgyC zcG`#-IHgd*(QcnCGQQ@h3(qo@aYY)Ggv~MJUsf5utG^zI6JM>M3?y4rp(Lsdcq#{D zhH)ZCDV7~6zZv*Y z;pp4>Sz~+}#L{_o+9%zMyXI1!W4}kM-%WkiYvsvT8YnHU#!DUQFOm;{6W%sC2d4U$ zz(>Vq-nf<-UH8-9^lsI}*ztsT$7dNL*#A^E-_>`;f`WkF{AQ26tP-IH>tIoD%`Ie# zQLwPcJS8AFY=t;N4>}%}`r&8azKRQYeU7;p*J>@-R$tC=hIB9keQJ?bA08>w?B+-Ps`@ z7Pd7043t~Y&r}uV4d^!+~Y;YR3C>o$2``*B?2`^x^)sp%Y-mC>h z93bx*-%iW+U+rT6)+1`5%*t+m8L0-i&Ur?!T?OIpNMBo9?N3i-s6;XafmZ6Dnp${4 zz{FLc-cgK}VbU=(zlA{Ds?qv7-_0)wa-LjlWXm!$lyD#J<`mvhkM)#$_$t{r-`97( zn_JEueuW(&XJGPL4-{58yreA$CAKz4Hme_mCs@6FIg7ob+EO7Vj=lplBQmMkUH;rK}bRz z;Z|6g5-BtsEQC0;@U$9u11Aj9WU6LC?LF$JKHQ5bGc6OO^Eh_?r-~7>-;Fec`IDfE z@=y_wMXL$L<1@pNMUA#%0zQdfB~1pM>m5QXK`^yvU#uMt5n=Vo*AnDrY9s=-OJl}@ zbjwtLz?LSKB&v>I;)!f<*eBC|UR**T5d92s$z4qm_Bce`xo-DkaP;xTF8Lc0r3n(g zx(jJ?>`8W{SdW4}>tL|BngSwcLTnvT#K5qox|%txzk$2qS1YTontRMs1`Oj$M#FiY zT!vYn^<%5SivK}K0w}h}(cV2&kYSEJ7jb9++o4qRu4W0Vr2TO_Ej1yWFP|qmkHn*H z0cSVgu8XIbd&_jHkI{_G@3UOPmNJkC8I#;@ij$B;3pqdsYQCiHuTc>>5F9$9D9_g3 zvDwWP$6DeuKQC7Vb`B8*Z{KP#3+RKdMBH6(uX`kD!&B_%)$!>zu-s(>xeF|vc+hnw z0c|5jE_u?lKpDqErLOQamBG_=<$pF!`}`r!3L*yCN!~e!D4!#o*pgjLnVXx(CS08h zTZO8|cvV0cMHI9uu{!IS4hkW%DyRma zifzr~So4z~;Rsn~Yz$CT$Li=6@ z_9!l7wcG6a4{dXG=`loU5@w})GX{U|;`#L!CJ1Vc>1Olk=?@ZS*0PE2D{=<(%sfOD zgdDcGY2AbU|53GaByLCl5;534tquL%29-cHCh(jd|I3_Wt|rj@kv|v9%T*##+w%(A z+h7gZRemrX9pt9g2gOdw|I|)GMVFSn^WXEEj=?PcN~a#u(aXVMcCf0qm+?y_O1;lk z;2X4~b(VyZ@57$4e5AeKWyhn?G}tnR8JzT+{YA2A)IA3dOLhhw>2U&@yWu$7)0sW3 zKeSdw{XLRI^;?Ys#RAbJDHG>{FqbL~-qh9XZfOH`)$eAv$Jv7`0~GU{VHT5JvqBP~ zT!)q}eM*@`AMWxL{+#96gdn+=u+&53m?^x6KO4pPdXCw8j7wmp?P8lt2CdG|(qd-q z!|W6qg_m?c;|6t9V+$yZ?8W$kq!aaZxK$x;)SKAEwlP3d529-kQ`kwV|8P=);jeS^6&IyruB2<(RuzcmUnZFU z+`$fKMu{+fbi-O`kQI1Yt$7Chw2&MtDJWr%cw3fL*cTlgO?(C3XShm@?e67Osp5No z2LAa(;>`}%&-wXn1?Tq@-+Kv{UgbzunPWV& ztH9(=a8`&L8+`O%SAn_XaNg$w;}r51n0qnXr`rUg{4JS0NaV7XoL zE$O<7>uyt`3U3Do$_1R@5dZk$1Rtcwv`{XZ%1oISuif2!X(<@B$bF^Tn)vUrUJ7DEpadIgEqgYOj?w(J zlBTKh-;VCpc#pJA**!ik%$p3mWW&jK*AF*9ZPXG${Gc7L$UEYy!PNyY7rd)Yw{16_ zTM0ikB=&K<^L2Q;Drq9xB=jNQ8YqPr>)O)))|8O_6Y{@C$%?}BMQVKI3ZQJ(CYNxqW>$8(G5};&0;zTag49Y4mx#xm%v4lJi&MCOA}vwO6x+io=acV>$+B#^St-C&~LSs;Rh$94ntNbrwmR(V!$l+2pIXmK|hJP!V;3{sEPX$~$w7@_TVSsm=% z)~C#UtTHISs1A;a8?;X4e_T>TsA19lm~wt>3<0b=r7g@rO$pxEp{r93GK zRPTVX$iCfFFn>k#^gJk5(LEokp2NS$c22Tay96XqE&IXI#RsimVdWO<9u0wEq#{OM zCQX4~^qrZCf(JOR8**nmZ-7C9##Jcxu<<7CXJ;jW65rrmp3+6PzvJX%XklJTzu$dZ^ z44S(fij!7(-3NE320!qYd-5+o(U|k&8irl9oM(==@(RaA6<&|*1F_++&w{0t{q?m? zy7V8`=+@|Q;j(Wl3Ry46&-g>5^DT^$j$h>#B4n8|f>L==+}=koSW zdS6fOiwzIV0LpCl_S`OCZn26h?+^^lnGSjuovA^1-AS%FKA2!=XO zlk}8!o_qhEAo;@6@Ad$pu*``)x!TtZNU#FHe2tjSC&oc&U zib_6+)ae`=A?TDnH?{%-Y6_-&!&Xi3U6l@_$|Z?r=S_!nRDk?w_@@$+Q@uvHM-j$Q z)P-wv>{(kE_TrTmt5z=tB|ScOdB3pfy^#r@+y%<5=Rc<0nJ%S#l!^7Z?X!jYaUa;| zil>()V3yeTIJHgZ5VJ&^FoU+yOW{!t^-9L%b!T)egqm#92L<%9hauh`u1-sJ`@^xW zLi?r~4URE%QOyqiTbFB>+obsd(_#;<9cK)*drCn`EAW(NQ>qQ2l*zxp2a7rWO2yG~ zy9yy_JfU{LJ0}7KlWpKXwe3COsR^s5X|LKH8llY@Ubr!ocX{&QYV$U!wj1o?4*rmX z?m-aQxN-4&p+{DXJ{%5%pw>u=V9Fm zE7Yz&ucGa;k1OBuK`dBUWyL29yan8^(I|3cJL{^O=-S**T z4x~ZeVBe}qUGTB4#tfHJ{c>B1+THP7{*C7o$MgHr1Srnv^kfXcWy-nm zpT_w9)_tG%<=UeCZ2aChZp%4omiXDMoqm;%;l+pC-tmV_?nimUY#5lZgO|mV?3O7B zs%BlDa_1bV*9*#Muqt_Q-{CR$9w?2?g$;(In*3RL4O%ls0~BWh{MK(nju9>WI3I1Gx)M33bC!diOv+m!*W3<(!J^>!7t@GN%`>F<(AO`i8?_`Lyniq7Lj+ zn)`8^9>E@E%r=2rxjUuRDQo8l3f7hk%|*L&mAf`2JjtT>*~5kY^TIZhVZyo4wHv{iOSK?NZq7{! zs=}LII3WvY7YVOgDH$wrm}upUv$7=@ft&KpTq78trULkA$()aLs_6c_(Tq0gkzCbG zz@Q?4EbY$I&VKRo*Eeo91l+{~>uVmL10=d#7edulUrZ->IDA_MqF4KZ-rhZ#EOBsA zUgrn*OXJil`t8-7fDB-y-=YUug4@e26=8Fl?M`aVFdna|?BHL}ZA0K!_Fca zf+Fns0U@g$1!D3LSIsF_$iMf-O%3;*SCZ-ovI| zaQF^Z%X8E#7aaD0hv8Gb$a?c~wMXVcGZALHah(JeJ4x0!jM-K7 z>u*rGsvVTn4ZOSCo#yeXPr%aEectQ21(b?wB!ip#dep3sCxNg9&mn+-5_5@!jX}Aj zT%L0HRo>OkAZlKJgHhtZTb&L)-jIWGl>iv?@16+`f&41P#!b9ARwDp-##6R2FR;1k zjA;W1I}#FmwP>8q*CAvk(up#81day)zK)Is(T07OD3F0+>~|T+_L7%M+grqi?=efm z@|ZVeRlaNT7vfIfB7w3WbB@&vwZP>BCENf~N0G(Od zc^1Ic#K(`#`CSx*efopB^^{{kHV$g|9G9&H>UaOU`bAl~e|g3U1*@T%NyFa)bPbhw zSP6Qw`d6pZz*ERap`4qM=y#^PAtT0D{rxjHfV*J5Sw??UDvln{Ld>Q9TMNMmcmxOS z-Y2~{4nWPm>=OVoz)blr17p^Qt1pJXA;6bK4#DyWo5*_o$C^jM9s}ddUMD^DF$vgH zTPIlRbZb%!_Tj)OiO~S*l$yKH4@TWVo8vRiKYjv@qr!Hv#yb5$h4!#*()wdT#iE@dzy4 zLzA--E5Mb#ZQH)9Uuv7oK4&NitcD4d?b2t=G7;e^fp*5V%25OGl>ARn##cvNW+ZRO z#>L>?;om(I@MROU$D01AR0JZ@sg(2#eK7&d4xd8AcPbMtqh43Ji6E~4<0bzw!T*@x ze@yT{Ciq{1wEyo+@ZHTlHaCtm<&=~JUWyA276`kj6fXc^qU%7&7P_(#IQbt;-8Y^) z08hp=mnrLh+CJ(K_5RP3vPHy98lSrZ@o=loC@VtZ%P7ojSra|9nuJu%Mm+wUZmbX*_I*H!?QwL$y4{utC0aR>@CB;ZfjIuw4=b7PP)EQKI zzC5{f41U4S;00s~Ki;B$W)2G}+S;uf)QEjx=eg4B8OI3*%x1LG1_>7Dz2|PV*{;|T z9EKFiC3-pIF7_Q{J<-m%baF|tsyD~JnRYu0)Ew~r!5A%X_w}AlMcl064$3zcVCwLZ zr0T}Ny=*v>J8S{mRrl5AO_G)inP2al+q!Ep+6RiNqnZE&w|Ug7&3!xU`=rLbetbZ0 z)+d1d;JvnkNk5p$PMN>;1_X^i93o&R!(Va@lwOo4ANvV}bn*u*9&h=b3jhLwKTv>O ztcAfcNq~Teb7&dt9h;Ggkh5SGHHBW249cfLWd?6kkwd43Su%_#Ma}|u`fmWb=c-^9 zw9*9FRrLJp$JpcAPb`7=MS9Bf_ygSLRd(&hRP4{75HXV*I`?FwX)X?2V0*pfs_ihd zGT8|iGl_v&J%6D8t`C-)z4e$KR+6l+IcviVV*js|Mqrv={ro+200Ezj#qaYCLP@|x z+Mhsg_IdM7Q*K{q{whHJbpSs52Vt6@S>urn|A4l2$pOR{+AhFu{V(MzsZZl z5sEj=-pXLZ5Mj%wazHf9a-k*=;^g0y7em5a_5K6Wq{#C%``E@n_N+MpxJYd0vVZoV=5dizE*oooq0m9~T=rSpJ zGuU3B*Z@(=jHiQ`Q8ZJtlkx+?Evhj1L*04lR#^9W1md4;YwK-cNN`>UU|ll~vc&n; zu{r2nkVCEox0!XI9c+-n*1`tpd6Lf|a1fia;r$zI8{!_QMEeWd8{TN~$-~1UXBaRU zJ8z#pkaQd@=`gq(gr#ln_uJ}G{y?>i2HJsD0Z}V2L-7aUjeYQs@csvdw{j$qLX@LG zBnSZK`V)hg7q5?u&xmg+uGj(Ad{=oZB&o|s>i@~c{fThCxQ;Nw`wm|LHBHf_peX>B zDt+nzuphH>HhCg<%?DZu()*&@-<8Un{MtZLe9QPgX%zHLH65QnTrV^uv%0z^LQL4h~ z`UlGYpDY}o!Mj7k3{=k3X6aii)-PM?b2Es(6WyNLZUzGrJpuWfqA^GN!|^4Hpp!op_K67Lquf+TtBV&CEYUepG;gN_)p^kUN^Sn|mhNPXdNo zY(2=_7S!a~29)9SXu9oHGZe>rd&01u*#K(Y_Rx8a>um@XkPH8hX?;8p17XDB5_(&g zW_|+g@j-HxyqTGG@mzK@H369Qb%<hyx4a%Rktci$0@^_c|xt_`V3d67Li86d}{D z#PVe~yuRGI;l_!Hi7}h@^6>cOjw(Y)A|Did55T!aU>^ajjZehO!J@UeI;V2AJ9+rf zAAn>>obg|v%kUq_MrZ;vk%pYzHqnSL8-5eCU@RbbzY@Wmt!jL#T0}_<*yAA{9eRsu zdplK!^KJfmwJLU}+aWE;vp5Q&g2(u(O?xsjjT?7jH60nZjIoj?A!|OUr%HlW6?Z|& zF^t79bxu@QERb*mbnf5Y_-=qJ^ivY-zeBwvK|Gc$W#X-V{f}@@3PZ;T_o#ruaOx4k zVfOu6papmrL)zW2Eh(Mv4eq7);}Y+5`%6?(sJ0s~#Br|#92kf(dbCd>4$3{-Ah(0Z zEc1~x(V+?|oO*pxQ$6UvWt@4CHErgs8oMdMun6hoVez$DT+ zDSzIj2C$=msr4}V%6Fi|cd~cbYMt*yiKh9T+_deEH^b_bVbLmOJ`SKY;tSJH;giEp zb^x9z(@hUw#1 zD6PA*^zWqagZ@9SLe$wEh;6!Yyaq^#-JeOs@P&szu(X{rwUwKEZZ9%%In6Lm7^Y|{ z!ec1#9!U=9^CA_If<`H~mOuIc(cMeN6QR~qPC)@T&CE=Wr2)(#MVngkYWA z`_JGM;Z6vj@h8K-n()6gjGCFi`3dM-qTkS_o}Oaz#13oVh2DbuR&)8>Z&1hI4@5j1IGl;8)5l)CZLa2uZXaUfQt| zq{0`aHf_pG8ttWT$*QfFaGxy)Ek1Pocz$)J+?#QfS5Hl{|8xE;Dr6O#C6G!{^ z=it!9(y5B$zKogkxzmr^0kh{2#BfaJqcsb-<{M89k9`O4Zq4Q11-zpZ@%^tieHAt} z-uyq8SOSs+v?js-XtGS&A7TR$k)&WU%CL`MI6X1XeZ2|Wn5LK;XhZee98U1?YfP|7 z;|{qA?A!mH}5JkH6pDZki5=4c!C3?Eo_&v1+SxKZab&PHpcQCo>bC6kIkmOj?xQ zRXg^1370aBwvF5T&eHzPeEffNFjMe8!*`%sbE3D@m$W9}rupQquo0EvuQ;1&0Qq;G z9S`&S5i~h(+X#0t;2AiP27OqHo>d-V+k*+%3gQ@QJ4&6YbG4Y9*t96a-Z-T$Ow;fX{&%$k zl>1LBg(Qw1JXItLWVqtlA0WYVJXAGed?%Hjwg{B&&D!7oSA*Ly-3>ji63#aZnsUEi z#*3qtZY`1JuGtS;+_J!n>rHbRvmuL`9a@k(D0!I^b#UXp{O=}aWjgZK2~mahhu>Ti z1~O9xNP;j@_J1NX4KxF2SD1P}i8G@JTq0}7d-HWIo%I7|p2P;*z@8pvKUGuQl{O-* zf@}9rGzLFUA5{1GjN6`EQ23pNf6#ivM%hNY>y(;Fs6(r|}leskt|F_F4hV1S_`y+ULA`8Z=cwWUhKIU*pDdT3Sc zAy7D%B=-lT^t*ovV=^E>XYE&`TERU{QkZqG`Thu?zkbA8VKS&4(_^2_*MVDYEfk}~ z#Dc5i4k_*WXA7?gx_{RnYj-c$qa-P-es`+m9C?0O7la$PSd7nmojSkuiv-aCRp>UK3Y1r!$(;6y16Qn+@l?y_|C{WWf1quIR`?vBpW%)~@TvxAJkoq6&6` zJUqRY0PqEmxBjU~%3pEux*32MKiXo&Iyvioqeai1^&=VE`1jw$Zne&xsL z3RgA8gXVn-Hv~{HbbIOV(CvRK%6+|A2Tq;q;4QqZMGuU*<)LkpQZcfm`H3DG^s#tgnt^;Qj>I5Xd2#tGcM!BVGdlx7Q6cTF&C z(LO`@inpg{L*Q|2Yd9IWz~*i%b37?g&ug1>qi|mWtYw=WmK zu3-A}=uTk!9s@+`@3zm$IKPuZI~}Ggor&s%)UBf=LH~>8FJg5Uw=$VB77|)xH1)l$ zd)xksEzj{Q^Pxr;qgi=CitfNtBm=H)(iyCIvM*s)DZiUgNSo}gsJIz0#bqUIp$7T$ zE)y4`ck>&+kv7Bikq0FJux;CBgKNW^4G+<(K8U19^kfBr%a^G!vu=JjBQN9zAhk%t zBDz{!?_Gd`P@3_5Cc7<>bqbn;JaEMfnF%sx5|ZLnetJWW zQZg&j?!5-Ob6!1u?qa#_VnAa1Oa1d#Unr5zPd(QFB=Z%3WcE3Du`PgNv}wUZSyg7XUU+s3Wm_58TR+`M6k@T7H@Z-= zw0X`X$^-g}KsR$pg!#rNMd-O4QsE|>f{{J8W%u_j4Deeuyj#jD$pzg%O(oB(^^GcJ zJpjabz`U90?S0jG`i#w085!y)`c@6Hm3!$ox9$S8&ATN2tkduJijDR&rUaX zm0i)kSvnrmV+gTnDbQ@SjC%pK9lv5iCKF}mapS;VJ(FV?D$;lWRtbIe(CEpIkBlSD~j!uQ<*Ja_I2gz%|TlxMKn7Px}q?VzQroIZntu2SdTF zX*y$DzOTnHyHflqRVhJ++@tSZ%nD7L>{3=K!q6L0lIVc`o=MJ0JkrO|&>psgNgAe! zLg>Wfy#-A-U`wI%5cHimzv)+bte3m%WI%Lu>Wh6s1XhO;(ITF=}?n&bYl5I zgn%=Y!jk0yt9f0B0NJ;*xrgsA$5-+F6Q;R`0Jw^BaBQ9^+zFgz^(mVxF{&u}!x0;a zOX-YE!};29+f+`~P<>(hCHHaJg5Vmnqsl6K3Mx~kL0g`#eB2jnA8wa~DrUsTmz5vn z^upA~fdAFyznaDYO$d7@wE|r1mJcltxx#M|P@Xmln9=5RKhQ# z%SD-)uD-K6@h|E65>COw1jtio+E@SB-r2CQoTL!kSe+uy8#BELv-XR2)9Pr&g8fO- zaxYQ|J~(PWupjVQ&hUl(`P@5J@Qwf6e&dl!C-u(<*b%dF$rZGgvt4E*8;Se5E1nz3NW;Thfe&7{|?#`P-Oqq zmcYgW17h9=Rq_>l>0HzkD?iX6j%vf8Q*MFWhs|4MBEukt-ZAXY9j=v=y)O_}!?Eyyp?dHGK( zkpFb0qR8M#nC5%>>cI}CQn7DX2b?DGOcn_aTUK7R5OVda*qnHTZO-SDs}>t0;MCA+ z*@fAj2C3pmz%asc$;XZzOL?DMZR`8MV|Jk~tWI08S|7K`WcJoNMf{yr=RxOO&|_)m zj9zsT!#HP=-0u%JA8@#oX2@}90@o|%aXNW}i;W4uEh#_j(T`sextTiV)az z&_O3Vo(mGqPryF%DMb;rAdr%_{SA6hvHzW%VUa8`E3=mMkziRDx@N@+;~M;#(Gqt} zdfW>?yi=Sks>nSjz+<#a0-$Fn`iSKVWsUt6!@KV05P*jV7E)`KVg(^xs(Nbd#2;EQ zG=P*9=#jOPm(eN(HEPQxxX%Z0j$h`@4$3lWIMtJ41}vJH_5!qzF^Rawt_rE5KIz3w zd1$#elAlZk#*44777W_=OY8=d+FR>_&U*((xqIyB%4T5<&|{PVCmhym zZlt-g9ks$RIE>9~7(k$Z?}1>S|G_oGmbSUMVV@IR3PHcG zJ(KRMcUouH)QCs2YV3p6I}D7R6G20&%p%`Okw#RU3ZF1P)}o033`WyTQCmoMR#ahz zs*1(TE_T$21l0k<6LiqkVl)0vZ6UU#6EK2r0k@OGnoQ_u6DIka9WinLX`_3DY)4+JQ*prE4E)LVl2C2xlhz~n4#p%E`DAMmTlEUVL5*&dIavw{Pp;s z;IxIJzeeoJ0`+l#nM3T7PRNQTVis!C#zA8r+3Zn>HS_6_)tNJ!(NNzQ2}>J5dwdmG z4nIs z;2d#scPBGsxK6f>gJxH#RF|{^t1#=vR&6Cl0};ijF>&nh`NnYilPD>gzXHJ+)eF5a z!p0rL$ZE0s3ssmN{ngx2Dw=W#z3I3`Qwze^UAR2DJZGpmg8c zSg3(!4DkN#`8QtQJ$Ua_%``B@7`|!Zwi|Vpu7kZgg-V9A5${0C9#Q;#cPY4(Sn~vM zcG_tyVZZTFyL2v%$(Up&LlkOg$l4h zOcIFt?~e~ra6YPm+?ewHEuQt4ODO(9HIUJ#4yDU)u;fc?nNP*UEn+tHFgwT6q|e!q z2Itj;H4e?YzCdQky(P2<(PSpRsg_Rk2Dr1uZHj}=Cnml$gVvM{R)a>6@<*PAp^@SF z+!RTZc#lfE{*U1oG3)%NrnWx@4P7$unGuN*Q)WMpO^g?V23-z9iij*R^;gil5U4r? zV*FAODv=YEjd$wo?Uh1b?}E-5MLyufNO^sp{%MS%R2Q-?NX|R>o3LA1rwX>|6S;_F z2Ft>mT>wVi_jUr~T1tAuYs0qK@wHW#Rq}3<`pH(tP{7$6YCgrDy?c>MK(pQz`%p#X z$d7cMa9)XXYC+n=IkCl~{#A>oApyPa=tA0-wo{vo-LX^9l8e3&@YjiBelts{4>+=$ zyJ*2tZ&0rLYk zIH1LDzprvY2+tC)Kd0t7R6RRuzRJZV-Obg99*;{CxL&4y_GdND^ykLL@WNNVc)C1RamFJpX9kq)9k?l|Dx3BqK?{4>Gox`=yq0cg1 zQo#L*|A(}{j;gBd+JAhipYpd7&KKJwfeq(&s`2Hovnrogjj(N;^u8Dkg?X{pc@NZ*c({F%}lbzuG5Y6Ga zftKe{NA_e^n)Mrv-pCOt{?N9+UT$=;J>?Dsh8j}pXD&HH%?f(5+@d;DIyUx=l-D!C z3I^8B{iUU8`1tuqLDP|T5!YM~e5Ut7cZuE~S!oyRuv{5)Z4ZDX{Y}^FNAuOz^uo_# z4FQ%SMT8O`R&eeKo0ZlnffIu8UOZpQZ%r7RvjU%hkjRZ-EvyDj{bWGe6bfXzx z>+oxIJ&`IfP`QV$sCd}1B^y)mr}nwj3H-m7kFedNB~tDSBBEtRVt%0~JJJuNpu8xI zMnp)r832aE>E2uSc}e7IKEku^L{Oml;LAYqgN}@^mpw_$GfaTJUciUHFWjd?1mT%M z%|W@qVjW@3BX6K7?77e8J=lEmGil)y{_P3{(0%E&AAY^Day&{yD^gco&36rcet9(b zJGwqhgS!;-+GHSl^T11LzU||FjpY)sNYeP`{X?3D#hXqbth8xxceiBhz@l3X_$?6( z3jl$#3aNL4ZfzsRy&qi{l+mq!I(>5;Expd`%VDbg7{Tws&Hq*xfn0mCch!zYEZW$Z zTX5%Eg6}}DbwjU)Wc!6B}L>Y6MU&ophMSK;)wRRM#+LNx#1+w5sp`N2+%H!axiBwy;*p8TW5n;>$;g_|09Z8FsoVMV zRDxGa(!de76JekkBy=B$MOEduNv(>1{$dsaZC-lP$p_a%_rR^nxsr3_YefW#u>i|2 zWiC1(8P1tElOq>*q@ZGS1pFHWVCZ#Tc% zli%_N(}@cJ=@smTz!y%AY003I=3A9KI*3#e^IBF;7OOk}S#0RVlicp%u})1-E$mt# zLLaguyI$H2TwRb}m$wC@GqfUgL%e-L2qk40LLar!v-)KzJ?6Y0c3;~u*Yw$7Gb@UJ0}&}-3>WF(&6GaL zkV`y(3$75W9xi96!p_%D7e%|@zDX=LdvL#9OZ&PzH?maI*pRX0kwhXD`jV23SeUm9 zEou>DhjL6c!WnFiQ~a|(-%JXnx9e+3H9^>yO7P6Qr==y;U}_ysZS(kk1ACK<%Epv; z`9prh0Z8+zlUCdc-kGS^d?WWM8PgDy`LqkIa_a?;K4<=T++ZIjGs`PiXeATwU>{0P zfJO+-^?N!y&oI`yPKJoVHr}@I5a#hY(Ne;VaI z>llc7%*TXXZuQ(G#p^z+N89)>C`al7BkS=ZDiiVXpEolpiJ@099v3h$u!$JdcYH{V zvg!9BUwXgpLoZMA6We;r)2?KGw$312s_fd@x5h6#r#|tL10M6` z_JaFq@TMyC{t=J5!v%3@=dI(2z&Gv=Kn87RaY$!R3fz-NkqMNE%>ZhJ1mD17>F2zV z5}sDxh{?*Yfa)xFO=`-wS^@=YnA6+?BcWNDM^rw;HtSqyYD}xa01}#C#!uJz0DRMBBlRfaH7TL^zc@`Nk6h z{R9-1Z+R%iEA-nvH7oOIzZMreE=Wy-Sz8bE-r}EppsPh-QOTd3XO46Q96Ek(Vqm?r zBPf`|Bro#WiHVR?H2s0i#TnWC#blg$R(vJK%cXc=ba@&7fJRmtMZ&N6D`((aOga;W zxUc?n>Vno7;MgFvmj(us8x~5KzD3olGk9;C{nhTPtoR2;das~t^`rAzrQwRQfsU;3 zHX#1m;a3I-NrmKPqu@yIneA=&;owMtt1In9S+E3|6c{{$54&KJtcC?4fBWU8$vmMe zC^$)KaWkHojaG2jADp2mxuH&Vx3v~nTjEQ+-^E;ohxXu8&)WE-4{>7Y^DDEe1(I1f zzQnKItY&cjR7V%Bqu5U>1_!?Jt=viB>p;Vzj2OiHD#$LYqJI#|MCY|@ZfiJ3+;A?S zJTZt5OVY09x1a@F;d#;0Ei@&0)XOIRX;*+2`JC9koZlTpP%L)0%m?(eSYn!VpVoB~ zSq*v)-;DqqE&U50M*){6$jSNvhoLm%w3!Np;MUo2+_lN+BDY5=96SF1n-Y3fP0gpDvF7HQ zt0EK;aWluqj|#ti`^C3YZclp(^$*M*>I8qZnfQsp!V>sOJ2`_%v~FkDzukzckn5o# zoeJY0nOAle@|j*n^hqlob0h{OK9CBPJ_x3t5OCv5Rws+d(5$c!e=Je^)0zBY8%qa9 zQNXbUnDf~4zlT#)hwx-&b;_JalU33;zAKT(XB`VOVZU_s5FG&7LopSH%OIfxTh8907zcs{WD22y;R=RVy zfL5)M(7zq6RnN zCqm-O(RL96FE6h)S{wh#%ks3MD4ctBH8f_inBCpouLP?TBKj)QxH=DJtxt}uRdvO1MXzM4Sk0qV=fVPeqKxJm>kUgEr%S_Kt zJQqz)v#peA{Uh<2Bi0k{x-*+w**&+Lhy8U^HN(v#d@~sa>vSbf%DF}fU16lSc;C6cM$htIk><=X(3JTmHR%r#JXqwCQL|UQoABv@ zq@Fj(31=#Spoq#~D*5>HkN%Sd)AFD|dmGeO3~%(Q_Cn94Y+GZ~J2~Eb+N+NYI#mL5 z={|PP`DVlUFe?3yK5H!S(t>NN)X zYb%l4r?fNcoqf!VC1Ky#dHtoPx9>b}Hf@N0~UdzT*6oT+@9qrQ}3-1p6(ZxwGU}cylI7}>aA^?%p;}V^(V&fgSlJx zJss=lp4y~6JK=InD?b_GRw?Ip+R>wiu*2NUbT$)P>*~lv8XMHWv{=To*b_Kw)0nQC zteYls(GDIu9}fdmZEi4p4>QC)(1UT`-_qyBQwUJQO-#wH-s@bG^-|o3(bki!6cOB+ z?_8IYLA`VlfCSx3Sj&+*&yInb^vy0#4BV12`BzL)=q7hyF4G-%wARbuezrc*bsf>3 z-X6;}7)<8Zl2JXlj?Eki%+FkQo^=CXU7cEWBrZoEs-KcxfH)5m@r@ooed?%6bbbwT zJH>p!qUzC(CZqPCH|5HCP?vwZZnplV3+NPg1taf#qKF-c4EkHYpr+DoqeMLS{g_Z4 zWZ0cPp79$>2XytNDcW3}41TGa7ps#rWFVW3QV;_>FeB4~xm2 z(F&CG9?{-GUJGwmNb)!ZR43l4|Gsd#RnL%786x;xIgLEe-_e|qiTrpJJ&>15gd{9H zd%g@xsn>W2-% zBXir}!$Tffp<@pnxV3&3ox6v7w$t{jsoKV3Y!Q)17w{BH9-r~?>{q%5F%1X3!0xAL z$@8_q_0L^BC$%GYfT_dM>30y@VT(!0gkR zS4ru?dk}HI=Zl5`&qNe*V&ggIZy_V;=!y@9R0&wx{n@r4C%LL(X>uqiOq6_;zUlK$ z#@9L<^fBMJcLaKdbhhj7xWmx1s^*2T`FjP;LO4G2J$b5Y!yN2(%&VgGor*}WI(5jv zoS)VNhuk!Y^V??=%-D<8^~)=*JjcPpB3Wn}bOOq^7fSk6mU&WP?BtKoICWaZxP2n# zaJ##Gy0eGEy<^*Y??(j&OH2)DQG1`f;ZK_y}$4C zZCF{w=(ZCC_C2H8J_rs6i?VzAwcRJ~4UO5&H?F(7 z6dM@eyoqa2?HI+DSj_ilD9_J35{T=TMCcNEN=LR8z`76QXU`k<7e443fFQ;vIp?a< zSw%&mGV;~6v{gzVYs79Y^W}T2eF#6NVfhm3`Qr)hRfKJ);V9d94Z~opnshsXkHR#j zKT2QW;w$w#&lM+Xs9X*2?8&WY)tm`XY^vplufP|4L9~7;bzH&z-Xi;$0$}sTj|cvC2Q>y>PULCudaH0S8``hH zB(~ zO3qmM96GLJ1n>h6HC-{pn(cGrKKV1t{VZR#;!+y%<+Yf?)~i-fP{{tC7Z8{)+HC&j z?c0j7&SRG2u24^huLdK5y2c6QmT2hpTXTCWMUhmDd}`@xlO~AsJ+ZG~2@MMn1#XUQ zFNuVd@J5YiA(D&Bf&Mz`(=Ts>I|cdkMQmSy}8% zyK7x-cjk$qWOStlEYAi%ZUu|!=%kO%#zq;(Ke-o?HB%3La_-D_<)(GoR6T71QFg?J z2}AA)>=Kir@hPBSh34m5#_T3|MBJ+8+IALXQ)6f%ke;2ON;Kges}BYs+y#v!IXb( zLE}TF2I))F>?b($?ZtX44zGf^TNkXL&1ZTNA}DlTPF?n?>lPOJh!(Fao}iwqol1m~ zXmn+!+@_}5?UgDy!fJJbWG$RDZtcYjP5iYVL5Zefz3>G+mF4oAG$0~N36Njew%*`f z&W>EF1D4yMni-BIccNYZ+WqV{Oj0Hn89Q0zg! zr~46zhig+pw6y!s4Kx*cO*P4@yV0#|nJr&!SI{2*id1Eunxi!N5-3#@0UuPfUe-Ua zni3X~Q^~s#o60CG)4LCajA%T}*)wm4q;J{tJ|X+ajgI0 z*1E1!k+-Go*H|jA(2ULDP+f^YQP)MFUKPso=X)d<-)*9PU4}QZ)-01t4wCV%1P;>1|_=Sf)`i|mRz@E zM3-~ZJ?+Q4yL_LNFNUf9SiySm^Th?g=_{%rMbTV#pBWv(};hSc;jgcaylb7 zV;XEF#WmOoPlJom4e6KOHOP1Cu;-gwLlbSj3zTTene$GkSagRjPUk3bC{|4jnn!mb zZ|;cszS1&(M5Big;FvT@PA*nWU4-l#=Q z^Gyb)J}qryHUEN)qu*paMw`6kq<38%=`oU#C6Hw_DR&$*Ga<{By{+e-61u*3WQhsH!T5J;T!hRonZWfEgiV6x)D1xI^pEt_Kh>Vm=nItR@F$7R8m(ro^ssV zIq;?ZeB(L$ika`e=3^(bf{ILDZf+W-_wIf&mihsHi$4PidjR|B$7*Wbf!O0!PU}Tg zw_Ow<6yK6`Te~b^ohcsLQ{!DgHy|cswY5NWcL(ac$A#Y2gyvRO0YO2V0G~7N5DA<6 zpq&uF1FM@I!GBQwps1*g>|3p@h||Tnq)YUZUwB#6*e}R%d|Q0)Zf`#Z_ZHq)x(Oh} zv~gw>Y4pghi)LdB%g$|#CPe>=tqAQ3xB-JPNyr{NQ_Vi%|L~Z%2Bt-b^G-tKewB?D zy2sK&^a*dR&Z&&bc9I?%lSMoU+9V8@&=6&$H{Q<1=)Dn&rNm13UD}S7_Exvm=K)`8 zw~sKCOnfn#Bs$3GN zB5{@6jA=j!VrKc+dRu!`Mq1j1*7BYFs`JE0K_@%kF3DjAPxl5TsZ#&|*rrt7{>ADA z|I7kRC0nfKV2=#Zv+*@|c;7-YbJ?TTg!d{DR-)0VnNNLt)qO7Es?J)WSh7O+*KVGs z-Rt+~M|LV5#WCJ$fFYbSEu|dmrbD((xO$>hth8HFui0gvCEb{nL8GEh!L<0dR{*E> zVg*bK!s+m;qv&pvxUOKhSMFs2($h>Jq_K*j>;cm<(ZuNUT|jNnp1Y_#J$0zrAG|V9 zU{6b$w%pxZz60m$Xe!S-2P(Cdym)0pZ${7&sa72r2;$M1_$UmN0tmu3eEjl6X-CI7 z@0p>wkhtW|o4kQr>vL#&^M2OyyTX+8`BSPVqIZd9362liW=V6u&W%DwgknmJP-MORheWi%P=ivq|Z7TABwCV zKq9w8+3L4Lt%iP1M)*fkW%{M2W}SDg_Lu!o{*cDbl(jSxPCy)@Ni=M26&gCs!<0Zt zr%xUf$xA(T`rxv|2am2Ft*L}LD7~Ly-iZ6%;?hz#CU(T|N~ijzlgdXU2CT84i>R&e zO>C}rejFvGk((`xwd+q?7+D5k6da`ym{C%n-HB9n-|o~0AFTZ3wG(a*K<4Y*IZAxY z<1C+6b_+k6X!F+}YSZQVN1*fuT{Ll>UwOLPPobACf+IW(k zlT$wc?aJ-U^4n(a$oFk5$jRQ`-d#jd>*N9C=SZY%1PEmp{weemJAZ6|Bh`CDzcMNV zGkwh!N-S(<^g-=~kN1jWL)tpBW$%tjyfx~0_xQ9c^wi&$8_AA-9`a^fugSyry z`EF}yN}s{pCEt&3FUzn^h=Tr{hj~Y$o=vT)jn@VK(O{vleRo39adDDvMCFV7Ti<{< zcp#<#UZTg3z;0da@UM=G+i%*uPeL@o&~fev6ddwiyBpre+0J&;>DX#dJKhlu*|rd? zH8NC8(q|$6IjxLpwK`L-110pXBgppUy0KN6N;xLxdG`1Uc2 zM8xt!brmeEqY)Ce0^tkf3?s>YSWFmv7{zX@s5nfl$F{C7jKxOL^|Yz)hZxRRK9X3r z%J&#qS&M|{8| z>t|)_Yjh^jL}rck8upi$hI7{-Lpjq;rQ~QbSTK>KZ`zo@y~6Dn<1N|C2J$6W@$@y{ z92SRJ+8bI^W9l4lxa$^})>4Z6Z0ykmG#MOv01c14@kIDkWY)=QCR29TJ{Q=PGydi% zK*Mu!Ap1)oFp$TL##EPzq^yZOnO^HcpJ!KHT_yiWrGh7zHFc6WBKFuLVtPuhmG^ zVJi~^XrL>ZGwFl1P#<>?uYwYN22gC+GqXn3)!}bFS}3;R;I%*NsSzMbTwnfF5WkprHxNHGlzo}x-o1YM`jg0`dI>(PxV=hm57DFT7e|nR zABz`It`03bP^JzBquTKBH|1@*g%ORn4M&h6#>H(&tkq$~2~_tSS_8?9SH*T7>syJ^fg^uF!lgeGK49%Mdbw$Q6Nl6L zWa6X#s&xT%mFArdmsS{!QlxBKxKg4kLKt(3ZeB5Qn%55nNKIelSlAQ4>Y4OGgXwqElqxK&wQZm2&50B zqfA9p-!3zG2d;*)YRJH~$LF^zyke9Oc$utOvC2vr1g>3Yy5#k^w!bDDuJX+hZ-lG>4$<8+ux?Ot2<$i4(*1271KOFGglmG2 zbI$SxBq0`2fFa?@w@4I+<~nIBE3*w7%G&NIIT zh6Hy@EA9y9J3ZoMWChv=&FOOOBUNTE4H#CcI^7L)Pj#t4M-QyY&Yo;o-~NH-0Z}4X zrCnXi(O;lz9uv4{VIY*>;g6qGO|C%o=&o8(D$K2fqWuWMj}#mZrrlG~pR90O1uvES z794P)7nl)#<%*5HWc?pG8xG7st-A#m9XBAY*i;Z9vE(Zov=E+VyNy$>Z*a$vZm3 zv}}F8&kO&jVJOtpx*b}+c@ac;7KV+od((u&Pk7--C1;2-6g*;NVx~MLLh#~MvR>WW zHL_y=5@A|e=L_3MQBKX8&&=}>3Zv~#E@4W>j`HZ@ZufV*B0 zt$>;;0m%kteLolgKiDKqfw@^4*xX7egLOZGRJsC&Yw`z%{V$**s<|HbqMun>J}hP$ z8;xP*I5-SbC8DC$MgRHp4K3@Jfm@w(sCGKmdys7rYP%f2x}h=3mL19+W~>H}$m+RS znM!M*yXH>b@4NVLKmf$vjsNbdW8ssDOc5k>9o&LH@e-FDcJ*4JJ3TbM;id$GsrNE9 zZIRF2u>0%T=;h4Y>Dr|nwvI$l!Q~|V6y`>)x7LYC2o|;IFhuZMm$Zim#;N1vla^$9 ziuSNA`@x2yJDyi<60R=-q6H)J+jz4E{ibH<@RJ{vS>1ygaKe+yT(>7@XFu(>T%^0K zj4QUrUfYTqN=*sHO-oo|l!1K*cKCkRGiOuMN}5j!2X503#FlU1qvNmHIqZ20$Xvnq#$;UDG_!J%L<<#NlHwt%$ffRIGj4uu3*M*2)id8c}U8IGBh;wPb1Tnsf1;f zTfvX+b<$1aK19?bD-%Y6e_p}<A+o4Y^r=$Q@bHxe3 zn0Bd?T=|$G^R4W6D!Zi9My$0%u_7GW%rTlOnP~P`x0oo)?-7xk@>{}C^8vjY>CXsH z73oKK$eHctC$H^XAX7w!nDE(CMpo&hJIg$OG@DIO3wNlBbhl(=EujRs+~JQIM*sl4 z9@`}I{gaM6kHoAIES))VR`kMIwBKjBSYK)7ifpMr5BDh`$^u(Wqw;??&G{isbgz*Q2kJU z=tm$ez^`Wm=yL$vQitE*5wTpwL_pmhQgJW!!o>ea27oI$rH#hS=!PLkFVg-_PN33C8^JPimJa~ib4$<7e7YxY zOjas*4t=3Zf6^u=wE}Lb67T@o>Xi-YDhouatJ?FgU?`YQ-rMDS@fxKUsVapr6Nt3Z z_M`>L5epHE{jY68E`^+PKddlm;CK$fE!O2r&p(dswmW`a0?UdW#}a6&PEzDANpqK=JFBgPKDgJ@_)iM*x^2d{=79jJY3UY zpW%6gSdeo4?w~uV={4K==>E3Pc-)%$U2(u~N+5r8n8M#27Mfgc@d|L1c{d5zRpGoR zco1X-Di|0}AAQRPq?9Xzv9Z)Z9+*oV^nASs+)`f1{w6q>kVstIN2YLSfKt`hx_m3Z z8KkGK-F4pxGB@)1jC1f*<$LDQ{=PoPbr@<`0-p)PU)BA!vPlMdN)~?a!^fJH=23p^ zSm48keNZpBrJ0H^TQJ|ILu$In@pA@1`72)3$f}nEDX3aGUp@Ip(RXvqhY{%mf1klR ztNKp+4hsoK_HZAQf>QFGlJDN)j~7~(Nb!L|3}={Iph9*wkv|eyD=N`X+KVH*Yferd zDFSnYaqhx@+<)GF)j*7imv7l&n7b4FpqxD{YS?M_OUe3ohUZy6n|0k}@i`GKGgCNf zlGiz3zm88WgeJdQz4w=r<@}4HSq&Knh%H_hHKs$VGN;jA4cZddW`;)tuEn^e$U<-e zWE7al(f+RAZTpSq&gkpyn%NPfhWzX=DX=T>AaRBf2xM#rir(}0CVM6{^!WAn%(BAj z!#Q<2Is!cz+>(l$|r(-ev-Hhel^-QgId{*n^R;X-SgHSOTUEH!&KsDtV*& zMpa>of*b`vD2R{XmFQsoE$)HUl}tR*oPaT6%V`PBX(1pdG;KJqR?speDyD;J`h*D1i=wc?NCbrL$Z6R1nsDb#Rw^I2u zFp@bE%SZEs{Mm;0{_-X2f9iAFmtE3RZ}s9877xTSZ<<(r48fnvZ?rw(VuZx}dYrx? z1p~K>)53@CCz*?Z9}@XwzMhqTxPxCTG68er@{9C<>IMU3v~T77h*4AwO45xdeL0Y4 zNJ{Y5cPky)DmuW!AA&yH^b)kOV=*(Qrq;#Yq?+P4HE${gkc6@93!r&A=Yv) z;5X{QL7}LHe?605m%+a4d~W;W;6I%}y%!8roxwItK9_u*>PqB()?VeSMu*zL&{SCByLr#w2Cj^_q=M!v|wsjCYNn@FR255 z1%+ny1U;QB)X*k)Wr+w0`vVN8L$Ipu)O=95_dMv?7wk|UVGDptS4#{=L(lhiXl;6! z3_!GSF`8Q z)S8v9%C9EMBZ_}xHvfBt6JXk`@j&VAgT3J4LnkL0ELrsgN@tEVUL6OE*Y7uMh(~VV z4RUpDVQ=B-R1nu)UDrsc)4lt5fayr4J|Te;D29m_{5Sm1OHF49d-8% zhtjvFM-~{9JA9`orI&!lTM9&cfSAv>GbF^jk!>^}JvZamS@fdlE>{f4&aTdT^~|eb zgCtpj@pIw)h`T?p&`q7E6N%|!CC+(M{j$9U0Ci)cGLBjAo-v{|0X*!jNoc50=KMwp zzi-$&ww6XhlB9vbxqoqPZag8m>!+loinSMpNiO$@`5A)BJ&G?SR=P%kR9>Og^94A@ zw=dl-JNytxF@}HO; zf#yu!PH}I^W7t*JsdAU}tG>C&;{QPOP=?X*@eT|5$4`&!53-&r_+^FxTfEr6W zfP7BX@BT7|<%@$hIp4~~Z=lQ;1re0$LYqo47hM{*vkMPslcMfs>Gt8s?BYGT&uS<| zZ30O=@ouZnC8>pTI+3UIha{Kp{%AzRPq^ENj%a{*+1P4o<>>2f{bi8NJNay7Fe9s9 zO@eC_Kwmn}3twNIe>4K>Oe|lS$_o10Z#SN=+=0ZyZhX-5^FOH0fr*}oh5rP8Qob5% z!e@Hgw}6U1E|qi>esxug$Fvvto>|&O1w=wdCJivcIm1mfkAdf=PD|nP!RDmM14Xe8tmx}-rfwzGi^W1%Fez^Ni|(R6^98@ z@RLKH#jKm{@}1KQ{Aa56zS60zghRV=YQ{YBR!sSbm6)+I#MG1^Fyc*N#2AkGnS-km?zyd@*O{4x)(--Yi>DnF(i(%s$HVaG3+-&7k zlP-c+wg_-Y=t`R!Z$Y1SXflB$$CPy(%tv67vKC$;_>F5dB$?ijQR_h_?|2X(*z8K) zn8t75X*i*p8vIAL(VzdfYp&BT7qqfv$rY zmDV2y2_InGjb8-#NCBK4h>>-C7eJ=jMY4{C#-Npuiq|3|vVkF3>3d2^z|5#`x^l_7Gw&FCC@wy4V8a00X3=rOekR;A zgVHDe1B(tK2u?2UTf-LRd0NDDXw;L2LnUaHw~h5OF(qQY@B*kt2>4?oYM7W=#8(3J zb7U0==na8lh9yYa{{`bSur3i_@0PSuq0}S!^+NAhK+r)ja5|mxFCXfBRPG9(^a=zi z{3RL6JDeYpvsA3En!M7{A-&C`F$4M&@hzDHM#Q6!YV!6#+@Pudj46}4g=LHyCS%oy zx&yQY8X+;3mKdYqII1!li$yN_T}IZBZkWT`#}qvBQyfZzl?9(&rRv(;n#ER)+C zO66fN)wD?>PS|44s*k>V10Xw!uC7qx)pxNj7>eCxojkTrbUOh{}n4;b*eDTVvS*cU|kS&5>ueJM*gV7x3D z-0?OD0GgY=0W@MLgIe-_dV6kl?t?~K>L+Zdn1UafWD)}V{Roi0s@N<(Jx1F<(EBr7 zt9Z20d@en6PIrE-lG=RF+r~&mDImR)k6M(@VGYoeyq;lyBFGAZZn#5bPa7#78p5Ya zZ^ZpfsY|-D+2U5dZ1^@bxes)(g@|wxhy0waf2suJ3kgv`ZxvzSfxLO|nO~4vdH`U> z%SG#}64j6?^@;22){JfyHvs-|ZyD9NVmC(@ zA+3~$8xRtz$^C#xmev=j=G-yZf_-%XccwR#8kQ(}!jOe>*BKlIprz{RQae~vI=Slo)q)L$`jk78f=(Gw6x{Ev#u^HKcDrjVouFja&D*$kc2}*w_&((^zSeMVi(n03{AjR z3l9U~G@~kg1#pQM!fU_e6w6doO8*ETtzMG3MIrRNuYsqG_vqhCFj7q)5%)|gr|84y z;tw*S|3iR2m~iZN=5eJ^Hf9Gww2=Z}Xkp940RNkd4yrYX~EGJXKEx|(>v z3}og*OZBP`uzzL&3fg<*5~YSxjB;(=l~8nUd9B3v;sjVtB@NkS+dkif%c@LH^9Ei) zA&rB=RQgN#9r|OG0*-w zOGJuWj8GWCu^D2Ib`j;_+frbNG)i>17fD#aF4$Tb0U^l$hY;x@ShRPW@r97#gdSfS zb6f6NdM1;hRO@+;x7-=;qx0m#Do5Moz5g}|yG`3aGa^72ZjFqky^Ioge{J!-aGcN< zIYunMXKk(j4K)2UJvt=ZrKUw(Qd7OJ{6`fWdeqCjkq><_e9a*5NKXLpLPskb>fbZ~ z;1rS^Q>9|@60`8xA7KI|;sk@fL7GHFFY+059KuEbr?D@|S$?#0P8S8|=H@N|#u=cr z8pL5{2|xfCyP#s0tR{E`fpq1t@%#h%B$GRqAcgUuckUxevtOqH&IBmM!ks6?q~z!U z9&f3=U-Ij}e0Z527>E&}kmz9CXfA*LTshh0E^QVdN}TQqt6Awd^ekw<5R1kvtnrTB z#!55y@)C!UfxBYfU5Rrtv@iZnZGZxf{TRmt2r+?4LKiy+%BhFHCF`4It6@b`r_UN5 z0Sa*`I(e$+(~i37=^hg?Ji^^(fW->E9kWewf=#ov{#OI~bo+B+3|a#`Q$l<`yi`${ zVYEnfjR3Rf_NnzOI`)z7-aC(+d{b(xh3~%M8JMVW{SEx*app^E%?Ku>VVZxtm+E}y zccV*GNI2&7$M4kRa4uhpb(a*g5b6kIlTo?xp3$>3BpP{~2LPv8LI60uIepK%czf2j zJUV(OGICGbQl6Pj!B6iAAPKFwC=6A{L3Wub7EO|#Anm5EwiemO)1QAh#6wKClEdZ~ z!#kba-k-TQd@2g`xDkZ^-=miPCUQ>WA4oK&9!JI^*(H5?gDy|Njplde7$P$f1>C7w zatPkWGRjm_b7UwpMVwwP?zn; zzavKBL>d{8hqI&eBD42|%Z7)WKfFjvTdM**h`M;YPO0GrgAMdwx8$%2Sylu5co1Z1 z8Qq>fz*(9;FO3WGp@ktqd^O@8_Eu*c%Nc+VO63WGDMw}{G~3)i3Xw)5LwPAoj)vs5 zXws;a-8Ye;1WOo}Hx=M>A8qnV7~l=JnLZc+m(YpTKz)k}w$mX?-8Nk8wruTj;@Nt)-`^*sdG6lOA-%Y7mcAy6|8I6t z*7~=4vDmP+u?hN%jpX9n-Vu?oNW!kRVK{O0?wExqj=CE*z@;eQGHgP4MjtK9<#y=t z#)Y32{2CZOB?2r}8a{<3zd`snnqveYb9@#V#sBMrx!vex4<&s_slV7DtD%;~j>YB* zD8bwPymk0z|JBs(#jKMocqjaLGZwMoZ4oAW*;GoiggDM^O8d-6$Rwup{d{@OJt92A zE~o;yd!%@j*K#iX{g>Q~9mz|bbc6t#G}4U2BI1KWCH_$o+rL%P(k5AGoX|hFZUVMH zE6@{d|MFfsE0MKwcF1rTeqyBnHT9;lY24x5*WN!NoRWW} zS(>|$7)%vG=2@{qm~06;w_3BB4btad@E(v84#-i-dHxAmT8R4 z))px$KPmQ;4W&Za-OmJQ(Agk7H>7EOJj5ma?-atz+xmY1mbzkxb1d*;zuez8*8c3@ zNlJFL*lX?lQS&*)6_WAfL2XH^Txg-R61y*dmgKL2+kdW%a2C%Yo2d9NN@FSBrvHhh zeaYf4)ye)rJ;MJo$$JZ5eNIi)1U@JHa?MFKAz<(;kXSZOxtM%4-#a^eWoBhnp~jCc ztJhHqpe_Ys5Q@<=|BcKWy32KjWVZnaq055Ks7J*>jDLUYGfA0Z@Dr)ekmQhv*$HW9 zhQIkXX5wF_8?t!1T;`Ym*O-}=dVxMzqWRwcq6MCBH9wX1x_O-p@@~OE z>r7nkOfdQ>^Y_#=xp9eP@BJeQ>A#f3+w4jvmwA_L#Fr%;BE3u^6$>D<@aS}a=MKx3 zh3AizBb=jcd`XL^IxCENX->``0QUspgiq;~Cp3;Aye*f8GgW3P7N)>w$tWkMlz)k< zd7~C4sToVC!`}ggAF&ZK{I7DstEG_U4)`_yM^@%{ON_s9LTsJF@OtRZpYX2_5EK6c z#(R5QQBhH4XB*U8a$^BkY%lv>7YaLCoet4IMuuGRkGF2`MVk<-ayUZ*$~3s0UpdiZ zUk>!wQCxlD70G|?Zi#@El+{Gi@Sn_YH6Jf!x3=}lAwWVOHV~+gbT5%Kmvf4!cg~da z-~65T<7K@Fc~XQj;)k}o<&>HkGZ z3YCa6kRf#<;+!6RK{VaEy$=u|Ofp>og+E_4CNusuT#_$HtX48N_Qku|eYjRq$Ki(- zs7CqzA8*f_iBJ%B{_X8A-T&L$Gda8!6|sw1#un0Ui6)eLNm#Of`~v<|{9{z`k(wEo z!OBAGsqFXNuu%VJUpC<{p}OC%hMo71G<3ldCAxx7v6Yy4d-SZ}H)9wN+MZgl<;^8` zbuGFK>Z5h7nW*IT5rDIfw83{v-hGTO&5_RGi80r#-nYNpsA@Hf1e!SL*jr$XZ-}L* zYOPwKpaAa0uuV=pEdG&dPR)jPI@2m}`)f~|%Y98sv+{ZoVcH*6$Sfi2R3>FHSjOUhSJd~(?R<&CT^PybhC z!;Qp_UC`dnIoN~O2?38frvdCbd)4*O#y{8lMpP*SxT>M&2%~@fL0CiVn9Iuj_RaZ) zs@^rqV_R=_?3Wo$Gp*2yh;6hC^_l83P*!O(u`+0Lz^-Rz?6`ldwSE4GRw1%ij_3Gk zzl>7T@h@7FFx(VT~E!JJICLJIlCF0Dfp2DDqCvKDk~Y zC-iC3(iHyW0?|LYK(J6zS$MBtN?!6=I#3YDl6+R>DBwX90BB9V?7#6V_A_P$!^>j@ zpyP?h_1(?=^i75aGS6M_!@rqCS3Gx%;B66S^s z=Evp{lic8c&^pb(!=|-2PaiK}|H10|z-I~M65Er{hP8Kk zJRfeQzTr()cah@^yMu+(SS_oTzdST9pyP7(rF>)9(kc{-nFYvmP(O~G!X2sbfIFB&LlNxll+^QeC4=I8HLrYtqs8}2ZsULdejcDE zP09~GnQDmb=K_NArm-HMxyCLIvxIgO=-9JQ1C=z6qTgWBdp6v?HqXYDf z+0CQ~2WDXvP*uhm3UF>tZXzZDW@qPrGCRg|2wzkT{Xf%+AmOhuIm}L)b$}_13}0On zd>C(!nPBGL8oCwqbejZKILS{HqPMi_aOP`&NIsS@okYJyfLfteiHzwze4)hq^i*SQ z#Ki2&)=zazET2t47CtLHHF^4!=511w$95GWD+J4N;Sc4yDV)Rhmu|&q4CMCy#l@p$ zcm~cuRuXY7Utipk`~%GD{~a(hL*U}#`XC|(birY9qb9RJGS(G+%Jg77&!6G{;p{D= zqHh27QIQfs5Kw85HjogdVN_a5QA&iN6eR?ubEE{MMd?sNq(MZQp(I4QyK{h{nVxfx z&+pm)z1Q0Rv(`B;cr$PK-tp<{y6!wp*2@dxZ`xQ)4ppB27CzP37)+PnWKZ|#h9Yjc zbUf3heLh>UNVUqvBpATD?O)aGD8qg3-YLb~_C45^`#*3#(2OOnQ{LLlrX#Dwbi8Dg zh%=;D)xIM6nEgu1nKlHOa49({NLr4>VyM#^&aIEQ^mE91$>(u*sr_Sb4qE#{ifAvV zYBUnKaTr~;WS|@bsq@?n!FicW@O5me-B;Y-wrK7H543>O;sY^F3cyV-O-~I)lFsCy zC}OqDYDCDy;_L0jM?%R*g7w3p;>~?-DC7l+=975MrQj1mt9yfol~QB&#M)Wge~Xw$ z>bE-n;zT`DA~O2VD$GRk0suAe08%&jgg6_;2dXf`9Mz3Ah1HJ~c*GYw1+)k_exVP6 zF#ToMCtjL~&}n|kp_@u5AAX@lewg?%JvhK;z$cn`MB%mW>9@?!24u=56FNFT^ELFIC1XAP*r?8tg(#>xq(1hmL)M> z@ZIFEXbd*nrrF~E@cU|NQs+l#a8j&J#j>t;&X|elph_XyzAo7uJETe%*2sboP;AxXEx!{DH9H_Cq{A`u*yM3O zzAkU#o)C3+aD`!Nu7es_O3P0{v6Gk>e2rG-1=;YV-S1}uk;=y`0`30|r{$bVrs4ik zMSn{Vo<=M@R+E_>xNSU*(f>Cw4iM)3Gps3O(ma;v{NA`E{Koxy`Voi zjd?I4XM)haXt&uu5JL*uPv3M2z9pJMVGMu-eVq|>xCO=SxK-fzkORK-3$ni$=&k?& zi+)5SKAD=r&CRXMvX$yvNdlVhHY-}D#OlNY9x^EiG|!7Q2D)-3 zZ6+Rk4Pj`p_c>;`RAqi@6?Q;PP+$yTJp0@){P+Hs-OyEG2TQsSN%IKPf0Kij0s&I- zZA)=j1X)`T*M>YYlK#Ya;Z5JQh1}TCb4T+?k?Q~S?LnI`NPj zUe9Nn6Q&#0;{0_QFmUVVG7G zdhShV7}wX@i;=>4_5S{W<9}});bAlz7}B6!@|r)Wx=`6`uFJ8Gy?k`@L_ZY%$85;aZJ`wUZycg# zJ{q8Y6_Sd4D$T0++K1}#^KyIby~E?ilZ9;$h5*wa_hK2DWh5$gC<(ACug|_vZnWN2 zldvRbQ!>o9*xU)*EH30}>Azj`OHf_4LlxXs49OjX-s3?i+0SUOF7oStO{X#%)!5mu z_CftlV#Z2+Oyej9&-v9^4!czWumjd?9A5BcuvwTQwVCw8DX0uV?CKjPi7&4lzj0p0 z983G-JY_t0EvT+6E(f#!Q_+Qw8v43VKsT<0(>x`gwEgzuIlA0+p|ri%W+m10m!tDx zDJ=A$J(J35n`lus+a@jfPGU$n{q^PxPhxA#xDzSY;KUqo1qunpIw#%S?kG~CGCy#_ z(LaT3>$4gfG!r-?Jf%xuG_w#_il0s<$ryP?=2xSP(fC~39Q*Weq@>N*hp}U7g6Em% zv)?b!6E@10&hN!!gk|D^ZUvxwg^mLuNzE?Ond=Q1FRep2g zq9*`xty9yxT=K^dHa;}3FsN9axcK-nKDwdSFbp&&o-Yp-K&Gl4RwQcRnB@cm@=bko zPRqd%^xmw7#;x0qE(RLUKT^y+9`o1#)bNeFgNHz{&88(fFW<`MJw+$$a`8vI6h9G7 zTeh|m%K7D7N>URCKUy5${^{zQ)5LdeU7%c{ot%`Pm@cDlU$RHOJ?K>m!b^jlDdgqE z4#6{-=4??XTsQgY?#Ow!)Ic4#RT5@j0#%ZmLF%6!NtYx12WWIM?)6&>GkkZNYaG@? zjl3u+EZ%mJ@kJ?*J%_SOoK}nCOt!xQ9tS|qQijrVSrK>H<=sWF9s{Z`t-6Mq8s*Qu zg_ASDnZq)J+?0dEXs*lc`Nw^U$_alfs)#*Ozk9^c*T=TprWzE-{1RRN0hkWOGya_= z(k9u$-aW1z1(E3jL>vr|*1V%a@m|8h_1$8BClh(ilh~cNleDNSH0JPHT%>O5hnhqW z+_Rm4U~N{hIiORcVEbQnbD8@A-147o83Eg(Y;~G}n5R=G zm%CDInrSQWcB;|?X`Uo$>#hsCWz}{jNv@LqRc#k|-`4Hz_Ec5#ra|GnC-(JJxq2ik zWp`rfTN>sxsY%(qeS=19x@$8tTlc30Cr=J;dbhneb8wSizy=daOp8w~#*Es)HYGl>NeuNB`MA;+8CP;gb5%fW zTjQ24Dl$T_{8oI9V5rmn>q85~$j9)#v^95`@ zNV$J@AOkb?GB2Hqh$)3TbGd8`df%~Xsn=CJdd%vB*?3@J(#0oyjGSY5US9vKo5N!B zWB$zylZU2!LKn!c-l7ALnxu7AwN7VW>GyML?a~5IsL${aU7rZUNG|8eIbkoIG zBU}d`46YbC)x6;s;v(YW;VaqM;)sN2WotSLMiua~V-*2JP+moSSw5g^&<27~-ws&$CfS6RY zoqsZmkxLKB7<@EpLO9jau$Vh5MYtMQxZlvOUAOAE&3{kZ!nR2D_0fn?t8J#=S>1=s zb?(UE5Rd8Rosfr2eGsCPsD0(B-Pw=7y9(tGru4?tCX3n0_LKPBVtd8y!INBR^(lA;6*C? zZw2hD-*ta+(Oo)Jv!duY&<~pu*>#Mzyg->4lXPc)ZAdTXyVqkw!_}fWOX2#f-C>Nv zUYp2YdlM%Em2px#z={oMYj;_owpl-q&}*5kSRPI)+#DDxlpi`lm0o^S_OO+m^FjKd zme=zfA`f~iOK%^HPWezGWR+bIfgHm(3y{@nnshwoG(cu3fKpoT?w_*n>Jq?8Nk^LqJcTVxqwv4hHsDwHvEx1D9ml z$r%)4A0kg9W3HC$JaHBF#qD*7tXwpASBa1{ilp$eII>F+ih!40u6{)3#B8K(d$b(S zVd5A?&23D%`bAUK>tcih4RR11f`EWkOTkMsRH08Sd{>_tw^}7X0YQYcwOGd#Sqt1* zeb$NoRBrp7i0@N|*{A>+f*W0|wkP()jJvOJ`@f)fm-_sB!y=xJt=dYpjP=P2kI=2v zlwUgx@>j`vD6lp>guE_eOQCMPjK;vZ5j zf#D>^D_!!Q!5=hboOB!Al2ME9%}|Wb{q(eYR}>8Isbmz9d3u@j9_^;cLx}c zDVI*`1Qj&ZKIY<}2((=>g-G{7&M6$D?G697kc0UQ~hkf;7Bm&8RD zJSt0R<$ZTj`^=zhI1@8!5Z{0_>!DxU&Jstp25pPMPiL#GPUbxgeey3Bz(!u4wSFv0 zy7ygcC_@F>nxcJtsNu#v0O_CoBCcEKM@Bn_w10gP644=zqOvCa-e)N z-$a3PQUz=C2l(5?I`0kqNz;!AbKB=)GrnC~VKk zq%8>j#%Z*=vy!!$lE~qd_UXMy88?M7?Q8is(K+m_$D{t7ST!yu6F{hJFb`78!^`B5C+*|s-1 z8EvnDoc~JMAa*mWtqsV7oHo8Jj=Jv8AS3_h@pbuUM@ib* zLRjrhFwjap#&gUEDTkU6F+ToDyf+E{qq1wJn6F2X4_R5a_fUNtpOV0N@QJHArQ^|k zuy+7MZ$kqB2w{yQRiLk%R9Wl{ilvV@bw&^c-(h?b#NRaMOC{8JNI)Ln(O>ATyOi7B zY>VEmx?y2$kqUBzIKiA6>QQh+4sn(4v9PQ+_t>#o1eBVZfu$X^WoHnU?#U=8zT3n0KE=vGq*+p=D;&a^Kx{$f$ zw(9=svpTW%ut=R9T^Eb*vi|x#R2u67hND-|CbzOFGD{_k~GCA-p zw#F~rbE2y87yViB^ucJZ~AYL#(GNM5zfc1chQft8w4ESxY=0ShCE# zb^POHoGtD7^fhj4JsKrzTtyvoMPlz$sV`+Tr)<_L+p66Co4ZD;+Vfu^<`elTbg^Rf z>-v}C-o{-p&Gbo8R*Fw*;wcIyFBOVkZqf+nn(|L}gA{Q{to%lP7acv+Q^=2t&N`zD zO6xF@q4`~w8u?MC4-FvXsfvsr*M!m3%lkW6@Z_4r?xj^ltlkQz;p}(`Z$e(&>I~Ui zBC?S4*1;`dLa!HoB<{vo9F8W#lF^KyP>aahdeQY0Vqyh2R22(dp@|snxi*9bK~}hM z0rx8N0#@sNn(ksd_W30wu%j#eKltUn6T@hdZ|4$Zwc1qJLBq-Fo^}$H zHp{M9Y=&uJ5YMO8B6|> zmeY-FRr%zqBS#pB=XoUC(^yFsn^snL(J9C7%mqy)XxM1NSuRl)!`$Q z{9FR@{zG3n53762WvACHnOH|}G46z3?3%Iw(d}l;8JJ^sRr9WpQ`s9nwtn||u8he; zhk~R^4vE)@8!ih!(N!|<7ekYp?%KD*(nr30D<}#UJi(nWsolTtRCX1S>(8I?q+)gas7my}#V`mQn|en6xhqiQ`D@c zNlrUO%DKknQhy7#_n*re=TnbFNHu2fuUkvBVltVzE{n*kO7G+)UZYp$tU?+k42Crl z@6GxaTqiW~dYEqj3zt?Wbws$##6H+HgSrdb_1tYB5unj#E}krH42rCE)S7F=g5G>*T;WzQENeK{Iko^ko2a~@{- zQ2w8sc$Bc5mkn6Ts4ARka<@+qRY zrMlj>^Ln*7t1Faa*FbnxCIC=Q3!u?(WefBxWvSnvFUk&p|G|JV`EMF5?o7C@5Eo)$ zbma-|@?3S0<{e{u`CYG+UyWz}xQoAn3Ql&}dVG$R*Kg+RN>38!zoX*(OKNoZk&3nr z9|$ocAF_`4f^G|q;-NFjCCnNvlfw-?fA#22-)Eyl|h%AWVwN!dJT3)WPyP%IVBn2vpjONsgB zT#&lLGl4U)B|O`^3DD=}4<3yPXB-Qw-4EkRvf$kU@>$MXNe@fAcUk}g`8x7#iev=> zRfBkc%(m$;(XCOt8?z?ItgZkm3;v7R-Qc~ex&6Om@IF)e9;YoA0~i1c&coNu&{1#} z1>g&^)!J0(!e}I;;@7Rpv|Y_9gmYfA1y@_{QDA)3$ke0z79PYCrQvc?4# z%e+`nP(YUqkj}x8VKjv_s%xrL446EqB=anB{`_OZ$4%$PpsiWwQD=ff*?9so6|Hi# z_LQ|Ph|osVbz@w%phJ<<(>D@n9y=5$+=0}k+yIxRZqX+#@5Ot4mWEOnLReCbEnn4( z{~9{}3bl*O=+9kC6TOy0g)Waf)VhD!Q$;)2`W^^61dpPlTOK<-(-krm?J5sIX7Uka z{j^HBUFA#Za+R;HMRNJbampQXJ4}2JA!B*^gCaVE2O+{qTb>9T(L+)eDchKzh~$Sp z(+cut6Nd0)?CkY!?y(39wv9o-RKNl}Z{}m}5mHD9buq@%>}fUN7EgLZ6Eyc=nsGy2 zUqJydZhr%m#icmDhfK`E=4Tj`Q0Iq-hl3q8xRIG~l+T4T0ENk~4mQ|)8I;Ep8{{_= z!!#}CX%8~S<~mUW3=+*OQ>*Z^e{S(27K6n19aUXVs= z+W=C~llLVonnZ>-8LrNJ6pxvhlcH(DV*!9ENB?H>y5++yL5O+Ur2lt-X2F}0f0ZB8dCm}%U073sw!7U#^;TJB6 z7=Iq+{1KA?Lt#VSg6>bCindBx()^Ij%KHcNQ%{CuyO@}(=KMJTLF;*fjn0J4SFd}g zZ4d|Ww+}@t+0q(!B_rHSAE}zK5PuSVPFeWlpBH;rs>vJE>f1&y=xQhBvz0OEHHFFX z@(JCH19J~M*#WOO#;Y2|?~|IYgoeixr1=HSXOB<+@FU3j`W{}PD`ckv=oG;-G|b3D zwe})t0Nh5+Ev&>&4D<&kx~GBCpa;L#d{fB}ZP((CtXK1u-YvfsaEkN5Q19SZYOGOOAjRgp9^DY0!wcZo683 zYy&)|W>D8IkEDAj?$g39?gE^GT3i?n1Bd2CwIuFV(9;8&9Z!Fk*6$J}nXO)U1UX#56m-OQE z;|Qm(Jrt1;EY`tKWsYsI$1%m9Vt9-CH`w22&}s|5WpiJy8dQN!AfUs=Xs&&Vui@z` zS<1D?hgS8{2_ilWb>)Dp^82^~0}})GK<)nJ7qcr)c6NcF)@uQ%D9(WnlGAhwouu8G zeYS6j_mbjN)%wr7|JK)>mV>9BLriR0shku6S&2;A9{qNtv@3X5PFE^vU&-G|+^xHUn*PXJ?%jBze@>!2rFWXB4f!3e{&hk|^ zIYn?OO}1iUZmTPfR13I)spmy57y>#?jjocE9Be94B4;9t@c$v8dVjticb-|uOWbbx zjAzY8qJBt0+_0zjP(|5h-t`5=;m^{KAIer`{6WsV@bFiXRlWKedj`vD_ zD(5!@vvobWe}De6inixKFj46hI2%~`6fJPN7r8x~uJ}e7fhdPwP(Mb2F@p?3q}a^t zjobt?BQwD$C6f_MWM+Xm^km|)2AFAIWl)_=-=+pnaftjr>w`y^b6xbqFCbx5wYz%n z(-!?_;X5{J{kgWuvKtOs$9c@#TR!JbscGKAxi%nfEnXCCj$r>kXY)z`FE5N_kf|Eh z);)N0->(fm&L1cKK?~l-Go89*72FcfAys>+>gT1ERX}4nyyE-&>;OA`yXdvk;UN=% z(d45pZyz+k!g}O1VTc*=g6I>0v^Um|T=cE08WkN5bYR?OA*=8&FFe zYR?%=92_8w7bGn4m-!oFZf-ekjhAm_Q{m)$AL4Ui>Cb)xHatM4H|TUlvif0_A+LAm zo9VuEL~&5dd+Y=Q^ev~ww>YSPx7D96{)Mj05mO*gV-CCdlS#$&Hp(Y6SriARbn!x@ z_6n^5sl5^^3}+N97g7J%=6va#xsg$x+KiX^6QWiv z4#->dgjc;Q*g2vM9&G05t&3FtI<|wgASvA|T3DK_EuX8x- zA4ap)m-qDd%JdFlfG^1lf4hhcNKz?edSgspWxPaRzkbc)sNfT5yTrSkE8O)k^EQ-u zmaCj!4oSXh`6SXd!|QojL;xHLL`cBELXCEFa&dO$yOZDbBhIQ1v?yNk(Z=sPw|6HL zPFB4{vIcQY0M>LmcLidlp_SP{*v^u{XOm8;SJr{VNP=n>9%Bxy<*#81TIZ%5KnLW4Z2FH_Z8UUxPmVO=|552C zZlM;1;(IE$;ZU73dbKiD`g-ro^<-4uYZ`Te>&M`V%;pN&BEh&+mA>K?oFgOHHmnyM zkhSB~V#8=cI5eH!ZTRsAi7h%hIzBKkSYfZRNKc$#Aif$kYf2<2htkWxzwEJ$gjr~c#h`%Or3l4S|$hDNDs2)n&f;;!TW|{szOZI1Nlx*i7@W@ zIn#B}Vp5PCR-uvW$Myd3!t1mK>~RY<5*CYDl3hzfJb<@UmxdSm?RArCsSseCsvTGi z%M+P=waqQMY_?f%EEfv3q&L2vX#VE4nuJ|sQPcHwH5y`f>=4dz_*)#?LwZ9KP;L1o z`S)lW;@CBVK}YlV8EV44%-zkx(%jC_Z81Dw;g#b;xZk;1ABM34UWl6cx}d-xHei%# z2J804y#$pt2SK67u}q#$VBB{5b0e3MUZ&5EtW?>M3k&3(cxKJ~b=J16Gfo^R z$E?6yrVzV*E_D)R=9j)Ewq5DXf3!KD?lH?v!P`KPaLZ-;5ugFDWm7D|0<;LtXyJ{zYPBNle(+nc##; z^C7_#9+?xo}VfJTyLZ`}2E3JQq-ITK~-luTRI1OH`-R@L&Cz*WUcxTA=fC*1&LiSha;dY<`Yg(baCo3<-_euOZGbP3h+=PDWB(vR* zRAM$o5WIT2nFMoR^b_B(v4+WFpyFr0|o@}|VC znNmB!lGM)f^KK2Qn79n?AKe5ajiSe?(EuZ(^2onvek>WA*5aRe){rngz)T+bv1yXo zEm7}-5p>yyA_DfxGqB=6t9x$hal2lC6DdzWXl{e&&Nm#~dchUtUxo)SiGwXbxju7|r{nGZO~C zzyXu}=YZ9n#cn2hypK+|#N?(r)kNtKXFO&p{wB6J!aqSwe)+q{l!Qg&-Vpe&6)yz= zr18UY*#>I1=Z-YmOT%TpA(T1V5ZF>wg$2;?eCt+X?iHdhn_qDSj5{qip5>rWUSfmP zalgCd7$P(NQJkhqz4{feJ+s0h2#{fo02vlMyH>Lkr0GPUn*Y)PeH)sIyNGCntyzl~ z6|^88FyR+LH{#A2UH>&O@O@4$4kHvlfW{2G94CIhU)NLGadOrHn1@6p6f>kD=VW; z2iQ0Y@g2V28Gc(tGzF*gT;DcL=@Pe}O}eAvdlqxMKvhV6XeGAy(<93xJ)`$2yp==I zcU-r`SZ>XR0YXThpg}(zvG1~=Xv^bwxVGEI+|CjK(m)m{d}L%Ah5~!+AotR088AZJPN!uq@`YWVYs5E%T_HBUpk9nVjj*&=6bxP<<>-nZF4A(f9Kc0 zkYe>{P8w3`rXJ%@1^!yH1a=Fql)ioEW7L!rA!;aMxBI46PsTyfmP7{qCA2E{bZ}b_ zj$@Uze7sF*+Zqq}{(zK8G?hSqf6-|n@ zwU#F6R)+8OBY>uiYX@C;uZSG(`-~3|^DB8@0e`=Tmm~*>r~(RXh7@iS&~bMmG2zh^ zPrIRtUF;nET*uUu2?XpJTFeh(V z)|4!o8Ho2)_%40^9_)_0fa>0)Ky6|ZfXFiI@Uq%8XY zu4qdfAoN=SQoA^i81t$;dveAH51wpc&zN66QP#f9wmX~v&7&XO9uB8In5r6A=gNE& zefKlMxf?;V%a{8)pwCWZb>>IGsEKs#_D5ZQ4<)Jg2Vs&%43p^=S;pBKq zKsc@B^-?1hgHpBV@)i?rEAYUjc8{elv+|QSh?yGJpc5=zm}CAMutw(_bTk`+;!@TB z%a8&=Zi=|#Ab(KRE8Z|9oXPnti;;1`^UQXGep|hra6Q@AxHuU0xltwK+?!3nYX-l;p=0Y(@d8Lghlb_|U(;Bq3eS8Udx5Q=U5KXkbe}n(rF2QLV#E)CHw;F#8zh;^5%X{xbWKhw@FNyjb*YAAOEmCCEJ_NGrMEg#E3P>9T zcL5Ln(1{I-Jn%>cK+mm0n6~C{J^o7(O;Q^L!Qwmvq|?qiI)EC1+>x@ok<0@7=A`aF z|3&dw-Kt5{>JFtufXm&}3x|*Nenzd&BQ2#n>Jk*G#I`--$4Q1HJgK9b>QkNSQ>bv07peDgjJ^^s zxsaci@h&BWy|UoZ%_l$hP8b6I-duYir$W4RpC5JaEw^*ye1x$raQtT<0a*>{@SM_$ zup1x8b)=O@5u0Uccx5eZ^%4)(MV*9{pSn!aQ9zTJ>a?bWA5>$-rqt)ob-SqP6`6QZ z52xi{ONqeM6K~r<0(q?X#?nyAJ0yyQp-X&HlEP~Rg3GVs{zTxWcYNZ+V8EU1fjE2muqek7Hf)XZihS)wQ8>iZA0d}Hb0dES61c6%84H} z@gKGP_vV1SydKLc`Isl`q2%`f@^iMVJecll`^PFCcZX0tETQ6kO4*KC)?#s zx9i`Vh?BWH0bQ-O#MZ2%lm9b}G0PSZ(yf0x@}aZu3P9it0`(z~HUiHN6}+Lawo%D#Q9(F8WZ^!nXX*Y}&HgZ3 zycv+yylwy^>Q-8J&}Zyk%*a*1vAj!>Ii={&%6u-X+`1*oPNG19ytj`Ymf<9pL> zNu4)&2+DKn*^&bOl}NMA=Du6-v>5oXhgW-W`^h--oPH34e{NUofLieC{FELHB4^Lv zl@x~b*0_0YGt|dk_lWJnULm(Uhhq*K^O2r;!%>gZV^}Txxz#Ro(5-~it=%E9?U$XW zXXcZN=jULoE`7%I1eezCEsYqSc9kGkR_5f>D&$pk^HggIP`FyC!~i=3hU4j*HswA^ z`2OYkk;m#VaiRThiG{tn#l>RmFe8+LN-Xtn2 zDpzW>PI#vQt2R;zEnC zjnbZQ9Ukw}Cr7no1#tAv$w>N%uf$||?D2O+dp|cO`E>FxeQ&D?tJu{@HovfwQZw%_ z-g;2wC6hIcVOWWW()8IetYlfS!%DNH|x%R2rTxvs^E!?3Kv_d7&YQ49n!+07N%d;F@874 zbTE{^`c>w;vDjHuz3;~{IiH+XZkck*+oNl5iP`Sgd%?|Zr#Q@Y?B;5+3FqJ*!bN~e z>F7a+rIf>!CDCvh0S~v5E5zsch@V*<4AxnU%&g3+N8toYwx)9>mjiM)>8-PFKRuML zwz(UeVViqD{;cTFf0ml@e_!g9YQN1%Tgph`@T?;K9mxo``7CDTN+lk`cry>fzhJgZ z#0Xa-!!g}xjBW^=NO*XJgVcYUJx*{L0mpi`BXP?FAt@m=>(w>-!l-?OxH2}(B@GjZ zLltqcU~r*44ToZz83A*Ti3j6)!zbo4S%#v}ud~j*ec!IndA#1V9NC-U)0DsV$6#Jd zYeQ}gnl3RVIFS7=G<2jrio=h_rq>PC0n@!KTQ{&2DnVw=m&ZB~l|eQ=zb<>^p~A{6 zE`&1>He8Jk*c|p^W%hb}k9gUs>OIN&gUyyLwa51iirlVvCA5FI<&Rz8m|-R-uN&^~ z&xlU%ao79YJEh)Kq;77_XV3CBqhY9d1haObU1f%~)5XGNI;nd5D?_1Z@O-gxHuTS^KF?g}EAwqX6C>&wMn_tf$H;a8!DbG-e#uv9L+R zLJH)S2#E0J(aZ?%rGiY&i!H^OxTimQtMIs*O|499!>}29iK{UOi<^0c`2O&aUH4Bi zx8?Qn$F)A*1>d#!=o#HIe0vEpdBfn{} zkhEg2*aVLchK8w4dvFK=P(Cry?!NE8aeL4|IF^C@;tb1DDp@Qj}qRzPR*bidKYoPcnCc} zbcaZM>A*Ai@kFimx3_#sJh@#ATlp=x>F8v_g`ZMIdYkh7G*v=>#%waf*znp*o_&HW z*JhADa}f51Z)4Q9P}kBpr0j@ zCZ0V~ik|HZmP#0E!Sznc@&zk%agOuMJO~oz>DE6Dss7$4ui+kpwH6=Ck;v-*b$7R< zgzAJ31I961;ZccZ>>TIalu~DWZ!C&cR`@$P_?2_RuFlETDY;m7IQc(lKqT6STGibY zIxKm|;CHwqOD+%QIL^(DI9n>n z&g^Z}7W#9xxRDsdQ>jxNm5ixj#JK2awg>NAkXDydeaImULv_UnrO>8Zed!ps4VbP# zNb|?%9=%5@3_#-LOYhb8c8w%YiiYdCPYafNAJq)lreZKD=c;{^k=A0e1bc_adLS;c z%Y{lTSocy_e%-vtTDPmYRAuToFbeVqw&mJpEkq=(?Zc2PILCjs=K^0k@qdjFEHM^- z6b(LBFJ5SzqoZ@>{NZ&%v8iB2k)l2bD<@_H&h!?E1Va-;4tMnIoSSs$hd;H>sN5B<*VQErl#AFX9&Ro*boqW4Gd zwDsNG@Zv`AkEOQD*n+G_%p7(6hwJ>&5dxLVwYYshDC%`Cf)kd`#-+$TB^VbC!yY>p zz@bQ?!WI*zm-iRf;9i0wLp+h;YQdJ;)ur=EU--#Ku8X^qCAK?NO=cBaYX7*|=@yhY z%Er>0bygK7P4`c(az#asSeOm(-3kpHdKx4y^rz<9>`hm^=8_n9^C%-dk5ZA8W38GZ zcFQF{NZMTwcNTxTNbTclCPK+bH0`KQGk06%Tc|O-jJP{mmz{|99t%*?YDq-wgBzAX z>|l}fxH`a`XNrN>;>kAK-xF+xGk1viKfF^6w0&Fp->Fsxq2_OnM8j`P zx#yGX`Bpp&dycc*`tVj_z~XIVZ)?(9iMT4=FFdm3mecctFXP+wxcj5YTfooFg))Cu zsmTZ3qId2xfuvYu1>I4JSaK%$hcWc_LVEMDDw}Y!HSc6u$`?mb>&P>onB`v-vS+M0&u%kn2 zkjvQn{=TaB>mJWNssba6tF8(k+S|=vzMTDb z;D-=9Kd#8z0~zxxc`74akF<8lw8adr`HRW*@ov-}#b-W>QQUicm>mSImE7BX!R)7B z6`p!7U8ygJA&;;-I%m|Or<=q5S*JlNdGB{Fgd=*;L$gg?wituOW)p+GUXRGKGJnT> z2$zhcnfPYyZZN}CY8ll5x7V45708P?U_y^Ufx`?Z&W~nuE`~LSZsWouwBQ;pcbd zkXmf+Ga;s`#Bi;iP`R1QLsY@zPhtu>xFMuapBQ5+>H7jeZ;ZU{ig)rqx|&GPuEDktIz~F2unxaP!zZuU zk7bk|Z*v$TMvEo6egnW6sw8~NQSMk;FRk*21S ziaOyBi27N@*T@;^e7ChsTlxBDJ}(J1J1#4&=xy5!qo7Re@9A!QPLu!qcc}hUm3jVb z^`@=JQt!}H*x*K-7|bl4HB&pyd8DsVZJSiN{62A4YCG0gCbD~N zCPzm~xoc`HvC!fs!fQ4;!P#kax3RScI}A(6yK7VAl97_jKqiHzjAwT+cQba#Xo2lK z93t7yR#In2il5kqOjRjsd$8YygOhK%>3tmmw+Oz4qLYQ?K8s@V@NsP0=sJ$ZBk>mT z=}~FD49s;4I&wnXd+`GZiz{AF%&&q!tE^oQtg4Bp-0PgQLC-=s4XjJkBGpQe1W&B# z==r{7g!9S>^m?{3!;X=MKjuqxoq&{sF;BYSz_=i96!ZzpQ#X3>!8y+s>8$TbZ6x6UA z>gi%xJcl=E$yfR$|3@7jozSGQlsHOblpZ9(%keT(i=YDpWZLPP6om=x_y0?h>SLYrp+G3*mqDkWYVZ=x1kV4@@vqGbqiz&hi)j=My~g zMI*PtC-h2Im@%;wE-d)j^`zvOi4UT3-I@&6EVMh-o(T1d3)y5xPgwrHAJ+fX(dmp8 z#t{K$`a!C+lcBY>b$%;ihWTXHFMHDz#yh~2gI+6ueVG^dK>3dM`R6o@JZ>7`4LGPi z5|BTx`z5N>hu-pEbbi9nLHZoy(04zAw9_oLW2qQ}CL}ML%|Bx*ZH@;;N7%&;5IH_6 zisCg%*#)CpR;m1dvWv(6BfHp25??Fu?Cw7jj)HqqL`3yJUDNT<+o~p9bHm;+HE=?{ zw;G~82z@mu2Ly##KGM{(*nIZI46SL<`EGuRu9kLK|DkmnGziExaAKK+?@T+1Fm&R` z7v<2^6u%{oxd(oJEVgbgI2Y2nIddA)W&XNzbXNP);%cVWze$jV_Jxu2n8Y};4LS9b zx0Kd=F@$wgpCmAcW$T{CMAx(_BRcCArT1u`$9cVLOLy2|jRr$U_j_USGtBmerTRW6 zhb+_o_$gXS;q;plOoHSq1DO+|;oP?s6pEx?O~23pg;?t|Is0~lwZT&w2YRHQ20zHZ z(ga1Rq^v)CQ?}E2G<>?{UpI2e@tieS&%<+HU~Fu$B`&TEA3$4UJtmr{PyuTEe+-c1 zIoY1YY!0J+i!_${s_bgbH_)XXdUSMK`pU{aa=JziC&45G6uXe-`nyfzBi%=3m{6TS zN%i9Xx=8r!tT}C9&Yr2rh~}dbIcn<`O;jZHCz2yyI`!oX2UQMjz4qem>W}S6p@Ns$ z|1+4DfSB8veTC%9>8<&A?2j9AmPotv{G%c$+z!h5q9Ahx8{W^>h@G7pt}@31*gfnLxd)rl%A>XUZCqLIyvQ{_kbdyrSaII)O!H&858Pylv0F7Vc>CVv6LOC>$?H zq}(PSq%;@Wv(O%9MYT(3JofYR8!h;PIRBn-uURvXE>flIjvEN6d@-W;;C*ivN_8_< z9-8R$`2G%muNnXP9_au0$FtTrSR1Zsd+0gTZ!uMR^yx-a0Lzzdg({r>GB475LCv}O zZ6=0;OR;39c8&Kos)-Q&`C$8>T%)kJImtP$Vb%IK$y<5_b5mOXySCm$(!lIn0Bvps=To_I)G&hxmeRhKK?k3{Xb1it@39ne(^{3f32 ze-*QhJ$?`v(f;b$&mp*0S(3660@~G%{6{<7povZ&`R85eOUo#bXgySKFY)7Cvib zsRy*Mwx<#1`@u1G(?bO}kjNkhwKgsLkM-6|uUV&88jp-y9|sB7kvlYgloV9-jE0Zz z)VRANq^T&zr{S+>x|sjC9I%v7JNR90;N&kZR3h}h1D9Rki~!v3q{XRQS7oU&RR|Yo zrmRF;gM89iZk3%GRH$jl^wFc<<+P-tFTJ>nwG*CuJWMYV^SO z+V@;2z}jX)gGrx72aW+&gduguGi)AuCv>&>_4hoQ1oyzqyZsYC42@$pY!~_1b`*Fv zd)kQYc>>#ET_2{mAdDTp{N&1CFsSONZ7rfj79uTOLQn61Yb7VJxOrb-59ba3ywgYru8ZNzi(leCG5>keBLG4rTTpqVxuS zn08xyLtg6BgA946bv|NR&aXKe=&$iQ-9_XtAPRg0+7z%6OPcdvu_E#vfj@eDWg@DbJSrz3E206Dv&VNzmeSb5sb&iy8#(!hvN zjDHvrhPNQpE;WSaTp~jMr*pN-LS$t*VG5vYb?&8V0~Xm5@_-Rh+t+yK)Np<|Z9{nj za`I~?Mhx9xB`i;m_aCEKFy|i@tOdDFJRUW>yAtL9dnF?Tx`XYU6AFp3w|bXM+}3kw z{JnAaT$~LQnwOXD`evB|O&ngH+XYi9ZGKQyCu& zY%$w%4{pg<_)@fXDIkc9b2y*r7r_h*IW-r1|Kf()2+?f%t4X$SjRsnV{P3CZr@Pg3 zAOq_z#J>_k+x_kZVAG^T{uYgtKIR>{jP2>V6Y-` ze{im$H3fzCwWPXPxD@kD1&X>g+9Y7|FIu17^$0I~S&;5H0O0wk+ zSTo@_@@E?MYb64oR{gJidaI!ixUjOavfIs@&-vbgdh36fYE8PtEb5oIp=QmJ+-9=WLP9aE@|M@#*;GDSvaY!Ez||=TRRzqJ z;pI8=M<4>Y2BXKZLr>HbKIstSyyP#mh8bl-Y2{fJzJ zs0dKko~3b*cjF2J4U~O#TOcy@HkBWVp8vU*N3}IlbX1LJ%hty&>sJjA=4?ClJbvbr z2DD9j0A;pqq=%vgEDlOuy`ih_wiCvCptAlkGzQNfIxLluQMHW!HO{X9UZ==v(&|w(0BR!S5|0MxGVWltg2RzZ6-*j z%t(rUQe{o(hYR7o zpMa#1gSbH!ORxcX3CD~l10{&yFEw#4jq)mZ$ueqze;YR4raVcEo)F`I7LSlq{G_%} z=HptPxBzE_g8yP%Y*|MU?G!`G=Z{ocIxF5Y(c17*HJj(8or8Xrthyx{-xvMn&Cby0 z&w{1pP-1zyP-7tQIVFHb}N;R*BDCN zej}qYYK_pDB$pzu11})`^a9R)4%UXSSttBgx{w8XO8duZecPR-(FloSG+Z>gp<6om z5NgZk&{8$I#Z+c_o3d@y5Ri?~jg!ZZitx)`xeCgqYz@0y+i3v0kq|ZHi3s^uA^J?Lk@qjAYo(am>!31ycpt2{rT?yhEn7^IQ* z>29wuHlD*M2{ICLB6}>DGBChb=GCF<=HcsGwOI}QCN;#j^QcA+eS0s($H*)?9<`aq zpIF}46k;d;i<_?HH2z|y?&gQs!d+qBGtWk9b1HkN z@eDsg12NlLgB?IXx`X=e^(sVZSG=SE=@@Kqw$_Y^O?M|{6L%;9`XBP;(HxP-y}%7D6(=?fvNxcGpIxYhAz z@epPKOby6{bJ$FOc--CPihVy0Ejq`ebL1)%$)zosiqi#_IZ%oPm@-9G#{c*+9@ST- z-bk_>Fdpls8LX)gXmZ35c)7Xb`f|X)%gy+2BmR0;Jty`AXZtgz#n()_VJxG%5I}8v zGQ6>&*duow!~g3i;uE`FCFrZqG9X7X~An_&PG0Z>v@55T*$(YI!TFT zX*bW-?iYLPOLC2-3?$fiOmMTnXGnGK!vP2^>@#G5El^Gc2+A{{pUN6Xuy_bntRgry zZ+2%5YXOfAzTEQbB>+J zxi78kbsrTm@->#8cnd9nefcP&PYd1NWw5ypkp!`R!_e{fH^{V}Iy)Ngg4Z9;ArPTYpy)<^#!bJGZ z*&CPEvjL5A5F&ilAnx;uy8hGYYM&_Dx^EzRB-XWEKcgW8*xZ$Fm9P=qBr6l?mwqcZuJCuI z7)DxaxwV;;wVJeO(9zN1HrE}8x_>OwR+ggl0$r5ykM}f+8blQ{#Z+@kKd0a}AEL~^ z*wOOx9>atX_P zN9}AGK0$Au`Z+XOAzBVEUYDG+2$Y6BN z%qiR)M4LCM9TB7OQ9}e&SChJhD^vTi34#=qyw8ls2zF_>9LdvsAYgM*t&O3gegY&m`Vr`@dUaC%805M6$pYLv$ZKktOcA(v@Vo22pcx=Q8G0RSbz7qB@Ko_R) z{2-zHgnY?bO zO8j|Iolgwp$li5F6)3c$i3P0q?@|fOPWD-U-i6dEAAq~yUiZ3E3OC`V{|dv6=^%Y6 z2udAk5(iXa9zN}x*7;*~!WfE}njFj$F{fP^96}LSP)0(C+cf0?sAfg7EU`-Pul`Sx zgkGSwS3l=@T?T2*nHH8`R|2qbkk@RvAFLBD*!K?TOGy^V?MMy#ExX$oSph)5NGQ&y z3$~n4J_=F$qfSPmj?xm72@G?^^2CYO#Iz#m8xwm?59XpVYO9U&#)}b zK+rK_-$6TF!AQZnPtxbGbj#*G4RC#kTKWP)TK6;$w9V&?`KO< z7exQlqA*_ft3iRmS)%}dh<0>^T_*vf?BS)Q-9Rz+t9&S$s}l`IgV(!8GDAo&_1LyPu84fCzsQ`_mCb z?M2!bD1DniWT!v4Zsg!lT_7|>t6L#avNZdvSt0x*A-4$9w%hRJRM;{=8$}B3GGC`Z zuQrxZ_t4!qYm}$>g6rpk8nf>oTjK9U99ucsot<@3H3~~MQnLJ2_0`E()L`j9MFP(rzA-k+Wbj+}REwA4av!AnK)N_`L3&a}g%iPLtg5c?eO9z?{*krYw^C=>qbXi#DxvRaj)f>O zjQPQ=KwX^Mtvt{geWEL%m*41UGe|8&_}(uRzT=o{#{oFOsi)lhGcgEpq?L47m>n%7 z5_V4w#Ewy3SJJO@TWYP%OGY#Anu!U3pMuSau4%`u2(=+c+mExd*q(VmFhHWRG@%0DNzu}E)Qd-Yix)m6~w!BqBB zp%=IVRaP;;`!g^9HvWo&lW}aO8b_}GHt;`9e<)~(;1A013BIP^%0a=)FAjcGV<1u6Ujv7$Fea1bhU2;AVsr!Qp)~N)JJJ261DMBe_f%PXpfa&J zpuSbd?dvH^*PFqLI*{7_I^#Q9T@HYw`PZK(wfR=lVj$2ilFc;GZur9Y@;ACm2pMWieo0aS$j;U0prDM&Kw)dF*26mm(c4YhK zWffNoUwY-MkB5V|AplB=Nq>aHp&(aP0VHoQEkc(o(X33Ehe~(wXi0CDRQb!7FO5Z( z`=D8%c)?`?U@meGTaUTNjNS6ehL3QGyBE7Y5iux4v_8I>p#(gOVn1fo8t@sA#`N8W zh;Eh555_JL-5JMw547JFzjWipb5~MEM#hky;z==q0>(?X??grz6Z@<-nXLhcYY7iM z*wg5{w#=yIN;=SC))=x#=s5{>&1t$r%tS}B7Jj4q8PLBc(stlF3vUa_>&E`kt$veU z_n{ayuVXkvQQiKl5wl;x?GAdjmb0{`+ovN?%BNfm$8E~+HZ5=iNE6|ADKn}v$YgH5 zeKzpRP0*r>b99YzL`%`u7Iy#R$rCSiQKTn(A#$R>z?IGPf3Syc^=S!m`YA^5 zbp?@p_Z*Akpv1LkdgL#9DYl;TyvvohZo}8<4`q7X$ZeQ!7uOD_KJ1>Ew-t;2ZFvz7 z4R2j>Ypq!#X3uH8) zEy2?MRvzgeh5Rd2Z?+v+Ut<8d6JDFB=uB%*)bZD_^6r`+FhAbb)}~r4wzz8$ToLbF zlV5zVhH3r|Glz&!r+&qc-IL)w< z4-VbEiXl2QS$$vl4IlDNDjM{=0b1k1jhn|XM5CLSv(}ScP)EnJvZr?z2iQ^!-^*iH zb3o#A>4@E;$G6hr;Z#q$rFR1krL{QRomHS(|4lnNsgK74D&M|C_)>mj8$-ZJL2t*l zbNCN})gC)z9n4T0>oEMVCpG7mw(k{z_U|dxH#}}Vqd`l&OznZ<zKt z;w|s0#j{L9?;!Z%rrq@c&c7D9z zWZ>92P?CThMdsXjA|`iacw}sG(c5oSfw}a}!5;wy4+4IrLPTWWv4+cKFzDD9T98$F zh!1k^%a%#z-k)}Pkbt|1V2s zr6wkNbpiJ2Fmlj-xrWwUUP@;ec&A9XwOLkd?BCvE;_1#2$K9|peO66q!dQy>>BcS> zrpJo#8`i62MzdCGbGS(Gb2@9D6=*CKO?1?)uxYa(Z$v@Ftul9`&7;=}t{_H>GySp% zn;RN}oWd1<@Pa=H1I>z8LH{W)rs8WE)LL^rhnHNXtn8AEm}P8)woFUew+ zn)Edir)+G9D9(4Xnm#aBLPDwzo~EJCBkYqS*S?D$Wue)G*dtl*i!?BY|Fm=!SemK$ zPc*UM0E>&0g>G-y)wvEzEP)Y0T9+AUC73&p4A9K-n+45;ACuh3q^Hy8SQ1oe@kTgo zD=ob5S-0MAetI2^|3VV)RtcBh4K(v;rMzNs>hbh*JRAS;ZjE1n-2=gq=6+svN1)v~ zSltioF2w&}$zKIA*=68!Lib6ke-4mgD<)Y%H>iHd`gG|?cFPAI3nONs?BOcx9~4!T zCwwL8>2}*NjXEN35>Ktg%i5;DP2Ef5StYTeqH=QOMMcFaiWeO*N#}-|-iq+VGSDX} zBrfzT!y!d0aSrWMmxw_(WbG z+nioBG}Fw2s!9+Xw{51Jpmly&ZR#zIfhS16I&jPO+z`q(sl*l!-=}UpZQcx6H|en< zdb^$e)!?ANaVfgCFp?J64j85t2rkJp#J#+>yWj}X+}_7vI$jwOGcTAbYy>VmzmKhF z4)pM7zd(1)(f6?a1=3I6Zv~s^gu5xrq2Z<;A(}n57S#Gsg9cF3*l?#GulL3-QM7;{{K`M39ke%!A%oGKU%!UAd90)u>jUq(GgDy$g9hPF)~%+7 z48s)&W-N^ZY1GTa4%A3F0%41xZU^ly7*%!^Rvf>FW;!V%{NT?p?$f8!spp=sm9MQG z7$VFD%CocXs(xR-2JSoCTZ4O;ElwdBRNaLkkujcnfRHUurwT9qK#`2*UUL6Rz$>O0 z1&4wrvOz!g8}?Op6h7)y9N7i5fn}k=m=s!AFIA3ePdTg%S4i~Q+RxVKHcSv+fm-3I z6!h?RCzu@|pqH(0WE4jQ9m@o_>2~#@X20c?`JR#8IOWXf`$1(4uO1wE8(sV}irR3o z@=rAB!7>eti;6PuR)@UVSLgWNzJYLEQ8t$0uBMj6Umz==Nm|IDsNL?#5~uta&g+{{ zeR0E`wgUuvNLL80q2}64md4!_z3+SL3niFvs*Hb|@+gAa5?2X|PwI|RXUxcA=%71y z^qG#VeE9NjqwJwHM(2zrlBsLt5F@+oF@7}(#_b0h{U-J8w+hyTan+Ck(TVI^(qIkYkgPt_3o0ETz#f#@ZRG$pi)RehXNQ=sD< z)E|qN7!V-ub=ZX|XXlcMQ~vm#Rg1G~w2O*XJ8h>e!kb#;r8I8bUqyTy*<00oRBOb4 z?frYB0lQHmO0DzNEv@10?FiYhk?ix+GJqbP{ZIz+nFXH0=$eD^`sUxdIjauyiqpNZ z=`~seS`|HVy?V2txMgA4GrtnQ9-8$H5uE4?@V2$OCs&1mGC}KJs@g`=wiq!bvAIDe zbI>3$*ck1sH##-pJ9;E?TS8POzsQ*@`;vL>)i&Q1c)s;g>BThbJcT{a3cr$J2XVOA%=GMvjN@8q;1d>vPOdiu4&0KI_kA64*7)5I7bh;w>bC(xDJXi`%9VzFgUczZ=%>67G;Cn7NuMGT3 z>4pd%y&AP8{-hd?lx}#NQp07Cl34nV<@kU5^N#Hw#x?ZTHe|n_=?OHwp4ehVdF-{=N)%I)EY;UrU6ZaHU|Yvx@|1 zd8+ssI)}ISMROsQ1-1o9ZRDpgrwbQ2W?Q(lA;^Fx=W_d}mIZae8H`N8RTtAY7F39??S_m{e+=@nubh@_f1+h&P03Qd@J zzxDR8-xPm985@)f2iOO`N5}$K*@UyrM*o>_aN^dYL)P03@Rf)cg`l9(Cu=MAx091@ z`B*b+qDUA?OlK}x%mBVPsWmE(518J`CBk42m)7CbT+T4U^g^&Y^m=n>6Y8LKwN;Z6 zerw%W>dPJF`KgJ1G^;IXbwsEV+A@r45VCu^L5Byg)BBz7PrVnZ3{c4) znIQL#FJBJI3y@lb4@29(uf#LNAjP;L-d8vqLeaGDj7!Co-bk*~dfEj+MTo?SP1Dnm zrB?2_-pY@>)H92lZ_5HHC&AXGer_GJ7I|PPG|}n;l=S4eIxMXU(v@e{3clzXC^@O{ za*kL&wA$cd($*%}XV@7z=naF*R2Dho;t!E+_=Bpds)C%SCx*h??~c7)L|iX#CKehRuzw;wn_mzRG}KzZAo@vdwlnElC%0o zrgSZ+1T)=1P?+aDK~T@#g$41O+Q-;g2L}h;?7tglb=PS;XD+tsZ@cOzeB)RKeX#Sx zshML^$IdGv#T7+a!h|$!iC-8LykvyfS?3=omz$)j7FTTyPJcDzskYuLavEUq_}!T0 zBYsmNL(#n-{xr{%h0A*0`@7V>#y~D3LCQW-VN>{H4Fhua z2aLrXvJkOyeq9OZ0}W)6&LaYLq4dC{by-Nb*=k#Fr*G{OC8|dkDpNFB`| z(eP{`+{RBL!fY;^zcRk8xFhi-ded7%#(XD9RZlO0lZVF?3{m&kw|h8udy1qgDV|PM zbtxkVa*S&TXw81o9WG8wd0bTXc1Hlm2)LH57-Ce`GUNTXdjq*MI(YzsfeWWYZ2ba+ zANN6B+I;0EZMY7OU+rh>LT7+igTd&?c3kc_F)MPu5d;c8-73>)u53Z4te%vgQP5H{ zd?-jxZPj9j7b+)TUkL=`sBQJu8ju<{c)8ImbPU2oN0z$=bx!tb2mfvIeJhEe$1ic6@3g zR!`LdgOs>ziBi~_T38F&D!mU0ytyXGP9!5gepLfKWfU2BTQ!OO|K&K(3~r&snG7{Iv=XnhTl3)lXJ)o_=jrhQSppi=3P$6nhJFBD)yT z`k4I%=62f}hxMQqZ(y65iI} z37$bHgKyoq@CHWd6#)k`=C*CAfkh@X2C41Zj>r**GjG!SrOK1%=1QGahcJWP4;eKDZ~HcTG!Ta4Vi$`VL(OXs3{V-nBdDTxo0PtMwR$zdZkg#!J%i(5mg0c^UAqjS1cTQOF=C=KYjq!Rab41ZUfAvMoy4lH@-ZC zp4apt^NQYTyZyW-erk&%;D=P$Dj7vk{4(IfRj3dyBi$zrKIPOEy!U+24^2ml>saB3 z&7y+4So%3qbiiJFF{?j1naN0L{lSe^7rR-0Mv?&fM;Oz{GSzaoo!H;61fHk%{iT?lEO z2^JtY0*`6)CFgcK$npG)%NgAOg)6VPPVAh7T6pm1Ys^WR=YNz0q2`=q^2?@KWQPw; zlF<$Ot6nk0e(qLU<}sBa{@gx2aczb+M*GdTRqsypL+|;z5oQ@72AxchZBK z3J5q2HBcAK>*fL!3n`nt2?hR^ZA2?Pp^dqmQ8+YUsQX*ZxJj^=!&?CzE*^4mb&4R; z^>ZGt>dy+$Pe<7Y-rB}SZwp1LJ~>sU%IJQOyQ_LT?rfz_(!05+Vj=71vx9XFlM7}L z6}jfWIal7j&{8o24@VpA>rcb;rdpcqD5Ng|VRBO_vnWF!1 z7N9-H>o;YZQM*b8kSdux046(B4BXH}3s?Eytx4n+zyO zeZ7hOz*~ZwLBLM@P^H}bG01xolI#yON<1>Sd zpBgZwryTOyE34e6^PI?5@Niz}el(epD(A>RleYjV*`U4Y-ok zp4@WZ@9-ebO<3S9u#Zc?KEAv&K)bt@YQoS1?Ky>E`EnbtCF4X8^kN z0!#8sq4gul7RJg{!i$}L@DkPasLPVA4A!=Y2Chyrv7P2pcCauD-@>*1&IC^h@YnUcGsu7I`eh%ZC^%D`OA> zsSTV7trM9M)5TNxyCZ(r;Ue0DgM&>*NrZv;C%dXaL!J9{uKzlZ$M`uGTL)l7F14Ol zVk#(h+SjpOc`Rw3i_4+raSUuo>=ZlexWwqf1ImfPyvSZTzS;}9Z$_)n4nAMgUsg^? z6&4G@*m6}T-rUp^_Y0OO2yj|N+!#)aV=dw^G#@- zZ*-i-+?B+^?nk13ziIv_6Lb%Xmxc4J9$S`A_>r}a4fW}E&VxQpd6O7miXkQkOd6AS z6M2v!*@I-5{o;2Y2+nr@wWb|StZ=W*4ZrZ4Uv=>t8y#-GzS=sma1Y|Af!Qvtp`=2s zVbyg-Tk=d5_fju4+$76YAF`EOu2nj(l>~Y7?DRnDmgL-+96xTIN1%_BT|@19C@63B zO_{aH5*<(=8+P;XFvf3fsZ-xK|N6xk*^U&ns`TA4vrK5(XYKBy1O&2s|5gZ>S8Q}+ zM+GEqi1@w;lfhBg8$}#;JFTsoV`wxuXaE`16CCb#(-jF58<6_D&GHQ9tNWyb{ar&0 zeo4^tpn6j6ved;1q|R7)eaFHhm!t=`CqT&hSiPQ4la>B<&H3|)CcqJ4M`%Yh-=puS z2BdDs)e~X6c_KI>i~r?_0{tkw&<#4j<;sQ<#5NWJ-!b-6I6TS7RyP09tRw}zpj{me zyYAUWB9%Y*_oc z{i|}h@$u;y;pU`YFtcSv$S zlx6??njk=|keLxeSO;_Y{rlE5Nv`Ox#p;_CR%7|KKF`6M(pG%_(%XO>wmKOJg>qe; zUbUjPG0&9Cllj~TQ)&pg%o4IFM&3`Y@<#o6;7#XSe3(#c?z=M|WD{<+mAo)5(O$8MnOm`#AU{Th7hGZ=j^4 zJayA;=6B?iFI<@fubr7Jhuz(Cpu-(GRnXuHl>F%T(|(Eyul^nh3WgQOEk;oY8$`)u zaVjdbpL!-a_IjrC5aCi`ZlANL@i%n%BI3}4yIU!sj@tHOnUu(c$E!`X)Rdl)( z5tX(Z)hig-j`Dj?%WC6*FU=BHz`|Ih7(bnHsj69Q>)n1P%i6~6wvx&od9z!BaxVs z5CLW0zDi`#i>43wAbu`K5q^))Wj2;T8ns_~1a`WxnA=xennAhNC*<{IaXOR)Orm*oo6LW5SEQ_O3ox0jfuV!%T}%rq0y*e@K65?-p33n)#q z<$>kDx~;1nn^104%s&hsZ5c5ioywj1j)kCy()$lOAakn7f0t8+1|d`|!uQL$+zI@z zQZjy&I`V~36zIi@JS+su??YFs3WYS6LWIn;{L3<}B zwcfs*oQZ)KSFlFvb$fUr;b+F9`zI$WQ!m+^h|BL~2+PRkGJrVbEf!~^IxTr^sb79< zxJ?#^OE*xaUEyU*&!p#x^2s_3_eAYFO!4D1s%XTSV}O=ZXY^By<0T%HX=%+JKul&U zlFy_;=fxF(oJv!Ggvf&%v9bxWaJ^+K*&fF7&`s~jCq^AvnOA)+fe^1-+Aeo$iuI7>Is}DEj3j>= zn`F^YGOzcIMoqJ8Bi!~@tsm-dIkw<`EnA`Af-3JGr9_T=%AnEf{$BS52IDFr8gy~V z$t!foX%G%a38l2Z>g61JHV5PG-Y-1e-kS=8wpXV6D}b?J-|!h&+D`S#y%jjq`Zk{& z30pa@CSDCWQA3cTPowk(sln7?#Yk4#l@0d9+pA!S%A#3NhdY?*Y-fxtbs8i;bwOAs z2}#M3Q$k@P^@@M(c%sQ65*sa+#()wrDQCt(gPlxuvdh|hf+*l~kEOo&7856&ZLf19 z+O_P#(={K@jVb;(A=+=?;@|I6vqEyPIfnJc5ry5fua6RRZI8VQgFrx2+ZfRt#Z6Zp zAhMW-C_JuwN`dawxPg?PUzwKW55>Lz8MgoFY&IpoJRr1iz{*?_PW;&WoM4$+Ds z%@k8kgVU49?+NgG{)mGCz}V@of!v8DBekyT?d^tRI^NVm#|yn~nv0qc5m7ooDGEW1+(lX`OzO7Eq91J94s) zhxR{GA$8p$`)Fl~dTK99Rz7;2Z6M;6V==X<8k*)N+mhQNC+k=e-UUtUN2@Qs#8pL( zl(!!xD_Qbt>iBhy*1HV6U9@^4Zx*J0JqLMpJ_FgBFh&PD^uxsd9)&*b zlP+3b9mbpBPq)PAH>DcxjX8~Y*Z7#H`_hL!X%yg3s)vzSRln?ExE44j^TgN4bL?MH zP?=>CXxq&Mvu@g#h6i>|lTBh+du*fk)jQ!Y)&=Mxy4Iq9NW-(!4WV0YP(wtGkG=wS z5@D3g${KCIh{62sGL44xgk;s8o<+$lwW^%#$TmOHzYIwbH5lHKEbWe<4|Q|X#MCe? zrPb4=UNX-+b;%_(v$S0`AJ3{@tgE9+#t&l#Rf*P5r%oCmnvciEj$rw5ebJ^qdEs>L ziQkM;zsy2L;Wj8s0xqSVRhdgbOsr;rz*+3W>OEk3)p>d=xqU5t@&MP_I7SmYw}Zg8AxohazWQkF;z&JnTAu;hlkee=(?{-L z5UqaUzP`qwL_?cGFjQ_s&OCoUIhj?HH-;Mlvdn(yP29m2#PdfypLrD~5LZT|?}e-> z7@4I7Q+KAT>7#y>%zsRsX^Zo7yMsCHHzg~+`1*AsX#V+H7 zJL3WwvuNSP$s^-8`prU%mC0WYk-dm&xdB!~)$iY9>YI{|M#b|gR_Z)xlwqMp=Hrd@ zRZnoj#VCY}VMUK5wQB#)CB)bgzphEQpTS~rk)m%p#GLlhX&j-AOboi+=QBj0*DArD z&UjzwLpsyJqVvh_vZ;ngY4r@f zXB8M4GG0B6+`iQkVoz&dU}^|eBUeMiWH^fyt0>B*VX0kjBN>OwZSZdR3}mQU8(LvK zBkSxuZ0|?U&MRaYe#&aD(X$|mpjX^Cvp22@lv!ZBU>RQ1sW=)yv%V7 zj}&yxaB0b-9JZAk!duhz=xMVfzVPzGA0Hi$@6M7Ez9LYo0nWgI@TzbCVPLh1cjs|( z)Cqw{Ojv$sV<%Fym2%1%8ha^O7N!D|Y{&~v5xHoz;`u$?j2vMdq4;2e&l6b1*)n>L!j}<)&A%n(!VA74u+#?gShr9MK zyb868l(ls@?3crr3;@d3Q93VL#)IRh`GZQIr$kn<0?qufDhI=?#9kLtK{a(<9_#yS z>IMDvUv0c&g*u)%+5{{5p~U>2JZLqP=i=02wvTCP$QmKGc`@(FndE)zo-qr1X+Q0W z+F`P_$kl2ntAi4PmwBd5XO@GN_~{@y&lce^+H!np6f@}T1{cYMnFKFqN$y)}VMl52 zowR`?`X#CbubiH3VQ?$zHWrVc!aQf9Cz}^tdU$Pp@i9Eiz}A+efBW!-ddiu6FBir< zpEGXGs>X8QoJV(4ahwaayMS&uHw9J(#E%dhPBfiY^j#Oac`F+Kz^gvds z2^#kS&Z(&9+utKWXGN^GfsH!r9bsZBy?_6H{I#<6oc_2a0PNheAXh`!`t%MjEhJ1= z*kCiw=GvGtNHo9EJ9XuV$~)lMIzu}#G%MT^*-f6-rz_g!Niv9n0rAs3O&>dg?yY1NR1*lL> z<(%{ZJ7h|`Y@3TSD2D9RP<6xB-XKf0gqk}2`VVw(VcVE^S!jy1JwGqU^J;8Sx5}Y) z&*O2?+f6JQN&N?{+&h%G=z^Ui+mnt~jHpE@{?+WSkJI+;R$2aA*}3miR>%x5L}X$` z%y7`z_TsQe96>F>hCb%8 z#Q15B$^g`kJQ-;rLQlIXKyu=(n!1%?!e*^6#@$5k$s$~4-p2nu48>W9Mav-?eok#G z(5e0T9u--zSee?o(Eq&8O#H|>?grgKp?Jy095 z^QX!pIi%hhE>089kXzq?<_w-d?XL&uXv17@(8AApmX`T}h$WMUxYb zJnx$e%27@OgWa^yu2!0J=*OZ98)?8qqc-KiyQni&k-tAW`yId-ES?yp1u3# zuTBtIr-#xH&5%ROM7?LfX%r%#rB4qRf?9JXr*YfIYw(k~)*FM)xSYp7wANpgP%Fr% zA1~}l(9>3FxrD2`+x2}YXfEpBqTVIfG|Et^(Lhx!v5+Z-z_?Jpc3`rsrRAct(lK<} zcPu@qE6VndhH)LeyhLqYxnYL(I`8;W^OFMFT*V`TZ9A8#3Si*+oK1IY9UTCS=ht z?tS6Iy$tNnM-g$N2J^Dj)5u~@R-%!%Ku=Hp9wF;jH!xeI0dtm`8XsXY{`TQE1q?mRdcX@)X#gJAfI46YQ)e)mXsO zj@~5g%xUcPR5*C1{fS-ER7SrEV~!+)u8xi>wT1k2<;NblwD*-OGPORhfZAPDYROD_ zj7+ZW9$$;+kWdiIZ*E>FJ@;e|ZQ1|6wv~?%1O|&4*r?jgOVU`0M=ZloP}Yr zO7h{f9LO0(BU)Ju%?XlpxTA;LvXs_cN_br=cij1M32w}HLbEhOqaI4KfyO0tv#?F= zd0AgBGZuOh&56$+H^N9EhQUEb|I!Vm&FtmNwzXq8U3)$*=AORez&IcV#0 zi{?JSw1q3I1R3VgcK5WXn4owxLEc-?l6Q#kO7+Nc<#9Tk-_%HY$z9mGi}s@R(cp%M z?c)KmXP;E~sXvqyS&A|j;9^+a8=vsf@%`*#_F*zZ>E>p1lLlTO2RCxZN|j@S=8AbP zRs)FByXP1O#s%L!U-gg)AX@}-oJtRjEJ$71S*ubaHnAeW z1aR^_*wCEDluG8M(6KX*@TSpwiLzeq+Qv|JIDmrX?b)EIx({IdXj&hr2ALl3Ms@%mI*2`u#0Jfp)+?4^Z#`ij zu{=iu=SrG0O%J5^Uy%(bMWA}rm)W|A$2`JRA9a>q09m6#aqS5A$>umkA0=u483n() zv}SXRJ66Ffhw?eOJ&Dc=Qk_R32!uVZQ;ZE6cze6?rfV-DvNb}7Qc zRT?ei(TZ?%4Ic?Q?xOY(JWjAU%W0CjcPNN_PzxO4L;9Hm@>%O+?^ZTB)DM`C^K+c7 zVV7{5veH%t1a7mZu=juf;}*>n-)g)NEeQbQp&I&V5e_EunC+W0On`pOPWlh0{>PC; z_@##;c4;TH5s3wDs>z(3oH6@+x=xyv^zejylDvM>B|+Bq{$Kl)TxnDz2qa7G4Inf) z;q3-llReQYi!dgDt&D8lke(rZGvD?IO2pt86xFRt8q^}9gQX&;B6HFD*ah{2?sG}@ zuXnHeg2GK3o88E@tOt^zpedJ+y$b*?=am12OGUN9V0SQ^-U`eXHc(hK-OG|j=?KfA zB|;VPr)91PoFWTdXazDZDzW> zL@~GL%|#@{uYHkjB_Z(Ri{rbo=)-gFikH%KpoLKZ%rSeSK0svwUJ}}>F^B#Yj;4A_ zjJzh+UiqY7Q84;|rKYDEsb887SG69#J#9ZhFA zQo9?t)JP6N=m|i+3Pp&wSo} zk@%|vE%`uY%Ht>X7IA7d;DqQa9n8D-Kh5I?**uVf zz&y0?gqkn81|~ttQ-c95;-NQCjeQiPnlsa`8ecZbYQK^TqlmhuO^{4h=_CQc<11L3 z^7gMww~Z~>?W%@RJ|rO-sD=^2ovDQl4Gkhtw9Z_Gk7P41;l=*63;9rEL2za4jZ1rg zppEd`bn>07)RvFXS@cc`Yz=c^+zsqf%^~KIGmsArNTAp4zAAfl_nxpLJfKw>U)N#1 z8~+%>H+s_=c0-Q@?gs$~dq`&Ae>%trB$jPvq~_g#KP0rfU?x||T}PyO>0boGMn z_9Gv!C?I+s=%0^i2~d)6EIBiafG26_V)e!PyX(NyEVu$$K^7)6EAYAi(+lo*9-03d z^9NV>O~X3N&Xes-CLAZqSGj?-t}o5`6?Pt zz=o=LCON;o#GxkU>w*(>6%09dfqG?S6>4HlGttckT19e5a-V8=0R^nlD}SI8^2$VNn?Ale;9GYr2}s&v!LlkDJ9Xhuz%tx^*o=v*l{ zrF8QFP2(z_s&ResbZC|T%j%aj(9c)LoTAmZ|CEe_jeG);5jJmq02yA9%6o13(1!-P zBj@B#YjB|spu+6EzU8D`O5d?>N6xbt9-O{8Ug z%f8`SYOg1sOt0yZpo_Dah7Z6UxJGadd-cSAg%h;?x!~OU3B*M_6A-sVyS`XU_QC8y zcFNRQaO<+HDazCgsD>TfJ)YMDj(_85eLzXG!>Unmkr0vpPOt2BBht&zAk~1Nca2v2 zEr((S`MK4e$*~$zL3ji8{}fF-ADXPKO>Ap8iJBI38eQS5xf?;Z`&b!E*@s8=9?NAK zRI+pb6u87ZzOKzI#XAlx&vB}T#?)82=zctx{!VSo;*~5&ISOZT`MEti#Ckd!z`^&+ znkvI1;BuD)9hA0ya83aK&0>+Q8ug@O6SGGQlbvSY}_E zf^O8{+!9M|=f))GLSrj9;Sc=~GVS@DjRslV7PxR8&r#f43p{EZT%u|?P~_W!Fe=^x zJi$+HdKL~H*OxiR`oIT~`Z|rz;Ze=Y%If}{LXRBqLKhNs_pLvUY4RT{1sA7p)qQL= zb=cj&#V-sWAGz*|?iZ(CSVYN8GPK{Cm~(-@O0=1Cf&LvHT(Xkc+JgFa`qMQxut3)s z{*XBgC6BM45>GLfckJgO3z<&e+Xm%xirpf2TLBn)MevO?UNroo--u^iRF&RZqt7>F@N8oe8aCyWm)KZEx9<6((lKsqU%0 z=&RFop4dU0-~{%66rgU%?LIC;Z$GsVUicTlUR( z-j~-qbniX>?H@1(orhF6u&NwiU-E&IP%isGBraC+UBV0cNF*mqu3UuJ0CWL6t@tv+ z_ZDRF4t`E7Dzr(}poDU?;eY})l`crl1G&$FKcmgyPJuPx_s>PF!FYfZ7cW9id|(`F zvCl;Y>59`y0OE$!C|l=#$|-;^@lF9zD-et5 za8ZYghur0+lIsQ6CIzhO>vc7;1|M1AuNDS<9-L)DBB8GJyyz|_kO?3kcH{O0kQu>x zQmGoikHN_F;e^DCfEN7kZLd%{abZwa`~>6Fh1zb^rJ>G^+S>+{!d^Sj}3w* zaBZOTlMGN&uRjM7Wa}>rwh;#n zqxO&>jja@Gcpq}3>YRc%o4CIm3HKF30{8#lkN_Ovr5+xNuB;ABq9VgU>VrcY{ZLY2QR_ZB!E}UrAa<;v^a<+SQM^w;`h=yS3=~#>%nzC>b+GHr`dR|P4-E0 z7ausi@I*V;AX405O4|@szRQ()YB5w>V`nAe-5Da*Y{>J~%Yd{-l z@Cr@osMQk+C*XE%C333Z6~T-VP9h_mP3a&lBsm#0 z+-{7-TG4__6z~%3l|2D;H-#Qb2m60^!uI^IQ{?DO6@$GM!8kMbNn9nl z9VNYomV0>e!l-=d*Dgk}vXN_0NAOi$a7hx1r&$@tPNm%=YcAuNacm<*seqyAm|wa# z|7&*zgNlW0XZE6$KSJ~9pi`az6!1oRbUQuw_z3)UsIc=ra0fA3>W%&49`;6u+=d?E z6)M=n)k5|pK31>IzP-56tbBrZF@hWihn258c~!rOo4!U zL!@V)X^o%#g6i;yyaweKNY{fpgbxy+E0X|mHG(UIh#kV;cB440fyUQxY{FU4`5EbK z@NhRi`6K8(lv2R~iS200y;YN(!%hk#eAr?7zMy6CJT@*Zl_8K>6uE;cQ7N+33vW$Iy9LK+~e1*Z(-MixR7c+p%kDAVucE$+tz*yp2JpzM_D=lpL0AijgZbN zZ$$r&8wOxT$Nxjz_^&vN1phu$UsaAyQMbzpmF@CiGNIB1h!#~gFwef+rHIj?m4vxH z-<&-2{NzT{F6~O^7VEA1lXhizvlqEQ8F ziNSzeqkSXPNoA9c9a)h!r$ie-y5aCn5$Q~Lq;q9h!kH-FsF8QBj9z{eG!~r4fZ=P= z^me*|SpaYBPTUu@hGy4*_VOV#Wfw+1f_8U-6D+hxOly4323{}T$QueBxO^^kyvQ`T z(gjBV>oL@PbmnOdXv+l-Tudit39mHPJ1@m zNfu8{%!~GO1eu^=o}I3Ht25+OfScpB>>u^dI^YL`HydA6q9={SucL3Q zfL`R^-Q&trI1X;5n}4^H0{4t6-|IOo!R?a3ynr5?q@|i}FsMq(BlXuU=^dygGicFN zsy@L%C&~TrmU3sr?3FmPPe-Xf3>~=~`{stjSU{xT+0#tNx6YjU^!3<#{K2L(xaNA~ za>%K>2cM2ScY4AlF@I=B{H>^y1CH+%XU37@4LVWuJvFhDA4f+Art_5BV9aihZHFzqeD9dq~U%SmWsuD*4(N{!`zKVV8+nu4jr4 zU&E36Pq9moQpYp2Uk^S@T?GB@z<9weto4x{M?|6&T`&I4#b$6}6tW|*e7KHA0L{NzKlZ$bZ2nEO*HRTJ4Q zcaassE3NzI2!Xz!ABRNxOKc#~Y@E|8`IVwkeQhtK>LyP_d-S7o{8#k>X}Ea`cn0Vu zaP^%$>P6IqA)36>K%yG}9E;R(tR^$9WjTMOmhKNeHTgWJ)bZ%{O0o~HD7TSslJj%F z|8im7ZR7PVyBQUUnwV3mi1kwdEr_R1N)QM3bImY8TjzPH`O8=ia&0$6g5=4BNB+cw z&UkULUcA|qoIi_y8tCVo)_$1lWq*m>kDH+5kXbssy}h-=g+ao5BK9I>2Ye&rKDix3E8}?n z%UK~7?})1=)PNi9hx`H@YZnNmzIt`7*4_9;gTM;)jw48>+vOV3sh`xH{M%8ujZ`ED zAbC2t4foqmkt<*E<@ud2v7o#7Znv?Tcxyim@o!H7@G=p!7nJN6i#o{N*!~66+>GyK zpmKXU;EY|LQ8-SZKD7vo&xh(3+KlmV58^kas^=&i)h@?u(nk>s=Rgc-VY`mJOpLG)T56U&q@94zMY|wzXyMw# z#z11`KLiTWa$ecuYO?(?lH6X(A_Ls<0iUmbOvUcV*%$OGuWsQw;_UdaD6!KCAz^~5IAk1 zJv9{wp{CTmfNB(u?k2G0JMJgpXXlv$h;tihcI<~pP)xXzcv@)u3Q9<7iv1vX-4&ZY z-3UPsx1qc8=yRu`)skP-J0<4D_>B&u?%(ikqh+xit|9Jt@DEWj2xv#g;B+sI>vS0I zZ_NQ~HY=V9xp)mn=gyraJE8M~09p%v#?WEuPLXX2*Z{38Y9u*|JOoR?D5UFJZkOeT zB6kow6HNb*Ke0FlT!#22#Br9Zj}9Afg{7qfzS0OXVMu&|4H9kikbnK%VTm1-Xnf~2 z)ubwq&E4KxH1?TCWG2tD9%6$1m*IFU;7KB}L{}aK!AxrK#cSpKib>xt9IFxyY(wET zd02NY5K~!qTaUb%Z5{wafX(EeP-pXR(Cu8g;7s^@A#cp@4SRY=GP}|D9C9QF@F3`K zE`|H6C)I9c21+sPCk=598c=NYlv)(5-1eNLRnUe zqQKD+x&-z?WN0ebQTLk*%aN+4v!5sdQ+xtBAZRoY+u--+?Dl9mzltgImLE}U5AQne zW{Ar{F|-3t2a?E(&IG9owQ!FScSBvPZ=f$bX)jn_FR0E)Fp~#m3tBSJ2kZS?pfBhD z*oD-7fC~?{>O(q5CZKf`kbU9r6N@V!i=;g z?|8n*H$AcSWjwglg>3bJ%suT0q29qP#<-pU?>O&=y@Nx{EzWI{J%G2}y%$>wU%|$W zwvWrB{ux6+o0*fR21bfw)RO{(QBo>T=`D0#Pk)g|eU2E-6#RTH6*&=`y+6WY508)u zNT0=97VAfLB7WkP=^mY^2BW$2yqD69Zomm&l~#ipDgL4zqUe;Ks%Du>zGzWiiKDEQjvG5zF#B4fLdi+@;_->3JxpX>1%EtPjch#n-V{l6Jkikay{=WT85e%{P%}GGG||;NpMeRM zC^r^{5hQfm z#U7i94$#w#JlDxQQ=Zoj;3t?R^~7F>v=nj%Vi-n54-Og-{ivd->>7R67!CuRv}?40ZH>Wthqo;S2I&p3r2@r-}_D znNF!l3zgaIA7M1?6{E_P?|%{fG?bs%?AUY$%6vY*wiI9wh& zl28+)0!n8xdf2dun!B;q@5B2wyhh#imK*woMt7k z33p~f?ZuQOs-j&_dB@@EPwprJ!YA9@pIWn zDkfz$-z$w2eF60M4@6%v(^sNE4xGI0a7Fe8lkziepD-0!hWqr#e7Q$(w5l&QDTQ0g z@~VcrusKd!30+>LS!G)#Wo1cg&G(x=&$W|y zEs=vrEpkkokK^##sQhs|2tglx!8yrE8eJE9OKVaeJ1pbf*Zkq#9R&AhmZF>XYE)+R z3TkQBbX&cBMb9)xGG5enh*LDW=7bn2C3XM+&V6JszJeI=9*)=)QDTnGw%pF(7gM;6;~ci z#BwLK5w07X3uYF;q3K+f(yH6lw8gndA@BUlm~nU;l9A{+w!#X_X8}W|HSfHjBW@Wl zEUYXH7ZW~5VTIoabH7h?ty*Vu+1`?@5V4x9bIc0Alach$q~%e4%(Hmp@`tM83Js&9 zp-5?8XJLm)ao0+X=ZMn{3Z;niu6ky&AvD2e3?DDJe_c9oWQQ|gR|=ARFU>zGg(JTV z{p1VfAXx${E%WWFlzXehy1O=3gxW1??IfoiY08{0xSRwQw58a>8Tg$C-udl^2ilNZ zbOkm#_v15CTAm`VtiIHIxGLQHAp(Q37Nq9*m@I)!9?m){;Xr!#4y;jf4gZfdsw8PN z8sP^`)V_;Fjs@y)`t*LKK-X^m$nfefE^o$kuG`(YMV}h$}}rHW@^7b!M4Q zpgf41*6|rho@rYf%ILgVKPH%Ccl>`;DDaf}WF}Z)H`gk&z^MlR)5cu9m+8ckeA0~G zbU02K>*#))t&`FPjZ*`)-pzv6_{v~16^|~uvyusRg*FAKIU2VV4)r~kaoj3;XswU9 z(!7Eq_NiXJX|LyHlXB0N1xBQ5auZu1glipn-XQZFK`)A$xP@|joLtGqg7P>pZ9UTL z^vg5(^+{O4-C#t7opbZx2j*j@oWcPCxw1euqw;^srakzLPBvy7on5r1n%;ZXL&|Kr*SV?&G(#pR-OE&GhqoZC`71jX~Wk>%>G>8qff zpymD2b|fRP@?x^N0RhzQ^B|(DxM6BN;-7cFef1_T!;JqL| zv$pE$LF#e4@hJT~y_uTl#u@l6)#%EbiI1AEUZ?bJFBP-dj4wyo3n}U5yps*j_AE#S z%XIVy%e);Dbc$*Y>yF^Ai;)etwyJ9O0foolYJh3uupQs(fZ>w~=9uVC{axqG6$>l? z7rkqKDg#sjA3>O6qV^1dY28PL+cw#6+G;ndc6edFM{CydGVcnBy${p#%4T8FeN$-L zpKGU!Hx))A^V+4cHmlRBGFZ%r5n?nizA#u~{`;%%pWmuhJd96%tZv}Z*W2xc@-RGd zl=i(|&)|2n=Ns2y5~sFt=~0i@FX;-M<2}bYWxF9X?U6KUsvAOs;4bdw=H)JCj$UJ7 zItC7ET`eYp)f;hV4{%smu0Uo9XGi5q@xZixsHBgFDDvf`EwCyY{RoLCW z5?x#loDbSkYG`=Jlk|RV;r*HL7bjtNJ_E=Xifx%Q6!M1f`;z;RNCp5?rjw>Mg{5y~ zA5}o$j6{@@lkYzpL= z*(0eFn2icm(>Jl5$-H8=v+^@vYJFz6q_6bLZ4H|k>mwhqR;F1rNby`sS3yOBEw?3Ls;IUK4t463ad zyw11PlfQ+1?sQl3CDxtOr-%7Bz|ms=1>h<@lW9!=*XjVl$zF0lBsgQeTQ`kNfJRi* z49?rVre@P%!tmY10p@)%XTqh1DhG^akmv1k0nm~TCh5U)EUbXHnAK#)Qmkyaa*;}W zZ!O!%Fq0)`c}FFwh#kOfUChUv^B?#S0Ljk2%RM35Oc}-#f@3`IoZx;pN~TiJdz~j&o7JE2Iod(A4NRVL0G%TXp*mSgL~_Ex^Vg1uek z%_NiqWnNKW#3D_^fY9f9FvBb0TIk<(nk$9fdQ7EjffLKXydQ{9qJS7+vW)MvwQM*_ zh_tpu*6Kf5$u`YUi2t(mi0=}h9~ZZ7#s!nVg+7V>_~<aiBh(mA68SD^fXrZjh-)iX;|}#9piL4YLLx^ zLnAXGoyC59Nt0zx)v>3>Z(laezPjwBE~Vc&{XbD6y(woh?9o3Lw%O{Gi)GHgY=BKZ zTs7gI-#KVEO#aDkaMWU8Q|5ewKNAe6IsX8jIMPAGEp{R?G0_Fy+S)pC&RnF-H>~RV z#j7)Nvvh!oduuyzV@@?n*C44|Hf<@{Q9^=1&WU^i0*H_v=NsEN$1n~HaM0c&xnl`i z$MT&4gf23527cQ+%(L8#EHwh`umKGo%#7LtP7^f+1=)}wwyQ#2xlNRpZ+T=zrtcC; z@$!?SaCQotZQO<_hBsiBVU+oTA9Jnb$3{+jt{nzok`3V~AeTTl=`NQE>1TXwK@h#@ z;htQSOoFU_zjP)9WF}82+`k%Ap8>!|SA0*#pgQQzD=@Nm5wFxecb#WsP2F}08=xN zF_gLKFT9q6+i3h{sdNytCBI8Sn7;|R6x5)s4;?n3kRVzv7cVC;!S-T&!+|)I^Y%;Z zCwf^tI+CPceZE0q(QT}g`H>K|$OWuT(60yn8;-$dyym0refmymhtRNIWJo;5xQT2P)#3%iCqIr;BHV5q||r6d~t2Eg{=FCbT#ct3Ufbw1h>t{yZ#c8n{#~= zl#(jLa|TR)vCK(tgvasia$$1lt&fq#C-kmi#_8G)|LOST#bSk^zbwtZdMAHan+!+uB>e7lKC74L5m zL3RW{sa^Aj2ofoY?z=}k5T2Qk(R8dTX*05o$V`+D$_`l_zsj`h^l^&GdHG-{mlRc+*_En@i2ssJ;ZVo5}CY)J~CWp^T75amxIgaoD>uS}L2BSIiG*@MsFHF(A|nVQq-QAC@Sr|mqBe1^t7O|3e1Px? zLwcNpobOr3E-BJk*}Qg`l5ONl-5#FJ2`5Kv5XTYt;cHOD^C)o1`&3KyY`A>v3oAKXXb? zygK09cMv$1j)m@)ttJ<>{87#aKF+6)heLj-O_bj)bNuo&Zs+aVoMQywr}MAi$M7A( zMDbCGzFR=j0&H^or!tS2voFoj04A9DOUri#S7yCTd?H837l|9?uN{a{U*$2>P290RV7sf3OWmz|_G%nKBs{ zoWL9lXd~6)hw5WS%p^Zv0tj9gbBYRtGP-@ajGO!ke{l(yf8fLxU|k?Ur5Fnu z$A51^H$rIC3qjSbtuQ<0+4VcshsO*ZcGDi+N@)d)Bzede&p`PvT z8R3$M>KzYn2=7Veg^A~mD9nmyd;RT+^*%>UeP+c2AvU-h*Yc&jljWU!SxNU3iy{QM zt>ZwDlCDhLtS@8+ja6fo?hJH7xkzG}k(t{@s5JlxllKG3z%fQu4=(Anr>#K6{=$G;X1cvV{}R{Y&^AQoiyGRIM{rV4TYZ7BsX%-Fvh zCgRC|VVI!y(&V!v#Rmc#TQGtG?f$Fs-ZKO!3XX?!?1O0ce~)Aevwbd!pn&dN1z0nf zwt+5@A$CaA){DcDy3Wxk=cnJ40Z&ZV`5H<(^ze5&MfNhj;eB7O*a2o{b1Ep4lAZLP zcz>q^b+LaV zXM%sJ=MN5y7!kwF4JZ5iL69#H`WyLn>G~z;ufwz{u#5j4z=HTi-U|TjluhL#klwOV zfQ>_W3wgx7>+e?eVq( zx}%TnZaRsAW{%bVP#zb(rMP)*myD-Yy#T(j9kF-gf$5`V~LWkE@;Wlb)N2#pg7HqP%cs%gY)7P5K z>OuaegU}1{fC@r9Lg*N3{ZKt2@1%3sqLXBA)p|NR4(4fCg4r+6L8%8g9*Ar`NZpe- zf*&;T30f%Nro6h#hn-DfC|p`RK$rh#0AU z)Qk9~rw#T!{mYS$q=}%=pa{&lcq|+Yp#ze`(O-gT2^e$1v_fe?By`1l-WNRx0KJW* zFM*zQ;s}MadJ&$V6!P9)BD0a?Obngd%0BrbxYSqeJi{C?fE(*#H`yF%-4-Xz>~ew~ zwM}#ROd4&b_t@{V00Nl|Z78LWCfY5#>&I_#vg#eXPH?y>IZi2a~%&Sa^ z_vU$uL!LFi*A*f$S3ftnq)otp0imyHvVL@$?mkt=kG%t&M@s=SiQv#|&Tn{2MNs5# z1m%MZK&HUwNvS}=eQX*)mMj@-j!StduG%E`XEI4-<&r%E1eit_e?)b!G>F-b?B9>a zfmE=PQA!BC2A?pGkRKPFwf#5N1Q^{jh|vY@sSiLTG^G>#+R01qhLB#N$OlvkiGfp8 zLvovPfHtm-&&^!w{vDP!lveRrPs>}fCETyMkh|>GQUYa<;FdIF>|9mT0p;7fb&l|M zr`%b1j*Jk=k^ma8K!zMblb=Q=dqdbSs9ko6;C_hDudNulea>P1ARqj=EI!=)i7IK& z0JZWxBO>?&mKC|T`2@(e=-oakxV^mEyb9$5MsM)3DCpH5c-Ed>4q+#~4FBWLgW3!= zeTvaX44cC=S>iyh&!eDUR;p|=BPntx!~9-i!LOBgOhRT+GInu6=f`@&!wR&K$MoCG zoSf^4PVM3m`_&&d_+QSAUgK*q;K zOJuShZgu32v&(!zug7Yl=km9i%&c6w;5P^6`-4#e0?p|pvki=E z>ZbB|Q66enk-o#UgaEbUeX_c^ArVuPnvk7I|YHoWq1 z8R~0=%am-&!-u&Wm!Jzzo07(X*ziH4T@3S7`U4LdC{=N@sPh3(ehnVvX7@ zA#CpR>}6|g^sk%JpcV3>$wDv7maddk_FCU|K{rWe`QxNx=Jgv?e#k4zf~ATa4$SoZ zH!j5i3WeElPfHlq(hoiZq$gg;e`j|c zc*1a%=4TNj$;|9E=)Jp`z95GWZvaEg$r0rZB2}B8uudX`du&Z-NF60`*LtlJ4)On- zr*jZIHbt}MLR~fVpvK;Ou5{LJhEzFs|AI$=lIcRnM%$0iMn4l!+g`Fgd%@v;&7lud zi-iW{wf-H9xzOn+FEuC}qqN*fzw@LW349F%4I4Tv0Hzbyn{9u5Oug)8Jf*;9%Gvb# zhZ9;_`c_)Eh^FQ0i43pDOBzp0q_#Ak!o3(l(D2^gB3Bf^dlyvSvi53IdieV)yUna3 z;p5VCqEdy`dYmPWwF@2T#foGL|1o!b?z6N}4w!k6y*BVbW8uDvy>tP3X!|{*c2SBP z+4!gDHj0LOFIrDLM?xSYU>q56t*dt$a4mA?kHHJY2Liz?kVa4p z2;mQ~M3mZAoT3h-n8M($x`bx}+;y*;6r2}TuRZFyr(6h!1MHNp3XalBXo)*b$wFOTb+<=ga^UQ*XA@M;k$m@Z<~ zdtJ|USJ(ZMn_EOtz-vQCO?%xs-@A))VnqCvgdJ*q{>xC<17HU)1(2~yo3a|Nb?{%% z`#;9#!f?S{aZGc}v0J{Xq_uJT9{lq3FfFnalr#PmwLUBCr%%ck_9X9_^Y)Xq3ml}x zpHq^(r(2BOzp~P0Y7JX5(H^;UQ`L*Areo2hz&ZT>`BGDqPvd;+yGGGWTfIWc*0LKH*tyn^)1rUQo3r| zUjWk-idYIHZKiLvnN}?o8kKJ6mI(@;iYj-uP(ltQv@u-wY0GMa8%k%mM9b?&%?B)onLkj<~G7Zky*tJIgE*@u{FW0hrijAr`EOW z+IbK*X)so-xTfPZ$gkJIma%gVO0h7>xsURLbfM#s4YpZ+>3YXpi9)-vMIMz@1k(r~CLW%cu56Q%fo7-Q6a3)WuZK?{dUFt^fkXm-@cugp^C!JG?0x z;*%#<2N%4HE-yapaOoL8)xV*W6%l`(4ZOU z=&i}Y^-POoZ;@_G-F&yEevzPdlaxzQM?J@{9OUOnJJk;#(Y!Qu-=y3`Un+;Ac-{N$ z^}|06tsl4I1#28So1craEi1V+oeuQqmz`h#>D6}5_)_BFhG{@VF#>eZ+f`K1+nDK4 zvZA_18s4)dqD-6-U7UX^>fOWZ`XyvVv5BdQrs2c6n1ZrK$%=A(8Vif;@E>Qq#retY zh+V4;F-P*2_YUg;${Q!zkoz7Qydo&vBYVge(UqI2kxPKK+P}lUi{K*PMT%>`!=*p1}-~T=;^_nOt+otJncX>kN3J2 zGdbe@M4Gm$Slzkksm?tNyKj^(V(koZS@Ii9XX4c^SJw51zp0$aZL6xI5Sz9~rkM+a zUFg`)N0SkbBVlw(f!`a!HODJatdz77nC>V~(#HtdQ?~&$n;$aXiyU2+%M|a5%yr8i z*^Zs0|LLFN1TXJC_PAUEtH;;JK6I@QK4LDd#)10ssODN@qXzFq5g9|od7M=68}k4| z%}>_d7XpU2z^W6^ap!S)6J8ZvaZUSw^Av#H*AB+R+BWK6t7PbZDcc-_5AeCJ*fTKZ zc7j@k!@K07;Qm_>)ljif>oD$q&_h%iEPs?(x{zd4->qLTKw&S{B!p51d0N@JG`iPM(}|7yaFtTDeVHAX((JhA{EAE|RB3)w3Ubb1 zsrVn!7Tiq@viKsd8E<V>gIzsA5jk+roy~IX|`}raz9crP&Q`G-piZ;^~LW)+Frp z*k7r#(mQk1J)y2@pU_fn{t2X7mkP`FBG3&uCA-=IOW+s2fFrzwX~+a&-pJzZ-!W{z zoo_@IhePzV*+0@N^yhmF1fu=VjN>FaHhHcO+Yany8C>Z88*g_cpjcM5^DM6WSvwMX zX&SeiT=j6?wpahY7<}H?s2(G{+*nnq0meQ_a3^qqf}P0`>y}+7#0+9vTt{bS#_hV|{mm=l)7w(llY&TC6~E6gCJXn&}Fx2?TB z^8;uX4bFFLZEwxB@Z(t^0)d*M2(#SxH;IBbWodr>uH@wG@3byE+@dXEBWL}J=5-qP zWDQC6!S5*Dp1HyBsbP+nX2N}F^1BUsYc-m&;4zKa$`3^E`5j6>srC5wXbrffFbK-bkIb>Nof1c*rGIFBB{heq%m#wIxo>M zN5ACSPM4KM-355nu{hF(blbbLyF~Niu>Z+e`ZH(JyQQiu9b^j%PF})5P)M}-tWD6x zZ1Q+(d^rzp`$8bfg|)vxWDzKrD1@|`BrFfD3#rMmbO>N^_O)gEVYttj$xOGrp^ZYSsM-`FtS{5qB) zc){Dd1(mtIP+>IaJ!>0ryQ8{~Ct*e1<>&c~4}(T)%T3FegA){tZ4sfzEt5V;H0Ci~ z<)~d+q7j~N!FyFyWM*Xvx(B?FB=f+txJo4``5gyIOMJ$jH)8-)bvzD^L~ZhEmX5x|&=yIG0g z)EN~L?szTn8r@E=*bt;BDOvV0@~Y{V5*+*LXJjFYLZf+q##u!XTU#?r0?tTVPRbA8 zGcwR~EVM|I;O2RE;hlm}xb*}3Tg2_s$EB1<=*m)Tdd#8N-oDBxC0NK&jFmyZx$CqO znkt$^`V{`2u7V^#Q(w#XTvI%b#AMK#|3@?^QaO#*c}AQ*<4cQ;W!@6J6^&)Q#F9OG zJ7GSy$&({FW^tJyi%Pb(x7Q|adp!2oe|&o%$AJ}=wZ2u5g{R;*a45eV)5-N-~o^O4k^Uq>F+b;t^6 zStP2{mf}CXRqaac6Ez^oyR1$QYxWn}J;?Mw`ie^`j%2-gR~DjJA0C`W&)U_0DvHLn0yQs zAMT}KF8n7aGT$1%U{JXcj|c>nKma%Zs%6qLl02^MxXnuxxXd!FekV!gBzbIo*bohj z+RGL_-IJ!&aTTRs(z~{+Eq(~gh`ht?BzOyb@9Ll3v3!=hS+Y6fwX)r{^a*2q@^)ca zhVu36>K^NzitDSF%ZIz@w0U?gEUeWRw~iyBdce?Qz5=(Uj}ni%uNCy$mA&q!}6nr2js@;XuyIjSU`TZslfyz0h>3iAs4(|7R=BY$F$C6>Gyw zgqx4F+R$xx;8LNk7{6y6*S4y^SA8_8X;@PmPlt5}-v87d`w{sy{kZH77Iz@H!M;Ju z)avI{P@&r)!E-}9Xp0YdsL2PHSgzockD|89_E7PWk=Z%>u4_-Nbm@&>U;`Pn)PDR( zvf6I46h<@7CIpQ&A_wn+9Hw{sA2|$QW*}{zMr4%*!%5DqDN7l%URz~AzAV+@y}5T7 zy=UYKjB8CX0imk9VA(#mTyAl3WhFEBmtA*XA2W-UtsHJYYNsW+qUtCut%tc^Wg&qi z>2y(7Xd;%?*>-Tbccv%HII;>?&-cOm&8%<~+r-nArD2!e!S6gWOEfOc=XrQ!!Eq$m z4f9n7Aj|5r?=MymSy@k-rZuRX52cY%HCc7c>TWnv_2Bq`IHTvi>KAv*7j?D(#nra9 z3E}WGQ*w5WI6RzsJN_nY{Fb%dqrzV))~x-4m^Jm=bOz496doULL{^_`U1R`uoc(1Q ze^hzXh?JJj zY2dlQ+eKiUbeBjd{gQPH#2t^4L@kkyL)2SkBFAh%a1)XF6+7aLDS>^rL*xR9v!lT= ze~)D1uQZ&Hbms`mpFo%WIxcr;tg-6HM%Sv$&LEBe3%l16b!jFiEBw~_fS0yMOsep1 zsS(KA6Aa&+fxjO%zf&Y4D4hdliGN@D{@UX5MHbz;SVps(Hk-3XlZij<}y4Yd7MSI8uldU9quHf;F6($;!L=c)lQ- z!lrlCUiJ>RB8FhGzd7aRUx=m33Z)l4yt1LRI_iqLVY@ZoQ0gmR8{BOR z`aD8eVQ6FWAjedW2pG+ni?<}K9P}?7eefX5Ci1(R<`4(-hl}Xki<`f07#JjWza1bh z-&V)E3mn6J{v-`!e|DXh50@riFr6J_qOT8{PMwh;_ANhaNWN5x`-veauk-gG-(@+1 zn_|&Y$!|OHaMDF^m}>9;*yJe=43}Apk$AZIP;pA3a1Y_slCTxCZ*{1j1GU79dl)m&ng1}&aaG}?_>(E*<+SW($362GJ2=ks z<(~C(Z+2n!80_Q6k7v{l#eMI5++29Gu5kX$P~!@37O`?DY7Ehr^ljTEN<{f*f5jbG zeep6gO6FGwxU9ueVUb!^-y@?<;6hUefC_(fM~SoDS^`#%4;+dh2`O)VYUH@pBCi(I zTW+pV(3tf2L+{)bQdQBx*u8@L7suS9=67%=42hs!W_@d(-8M6)4b2`&gVc~4*61(l zR5bT5+Exq>_C9;fw&;V%0(GWlbZ-1sFMYb_Z7-?h_(sywk#JC;a95HhZkWzQuMe^R zXba@Q<4P;XZec zuZCwSRkxxsQL2%GthxryO+xH3C$^VksaI6>1VnWW-t`Mwo$;HQgX7+2SkC2+9)c3X zyB#zPp~E4UUUlYsjQNX_c5~!kN7E&{cMNvFZ5pt2iM2z&38l^KLVbM1Fq5xsK^(KE(@Ti!*ce|yv{jH3uRO}y+1ZIenx&Px zBvVsSN#W0sv`aUT+bg$b>R>~;-rN00TyB6nM)GvhC&upqbP3n`15_@F&RcXd;BC3E z)-_YLxe~OYi^a7%L9S=do>D0F3xsy7(QLWcxYF77Vn*kM#iXV6is(kZ-ZS#!gUj5T zGRJkdVGa0v| zZB^$v`zQCJWI3O}isC)9{57tp%bxZcMMV<6%Y=#V&V$SLUOp}fxUQQH5~jYF1-P0L z$f6dKkr`$GdOiAs)$xq~!`^##HQ9A-qjHHLil8DQAfPB%0O`GnH0f9Xsgd4^R1H;% zAYG)l(7QA#5eP+uARvTZB`7WQ7CH&pD_r;eyw4uv{jh(){@@sX0M2BdYt4Dgb{xd< zxK2HM)%UStT_IoJwq2g=|I@>WlZw`LdvkmkCM&CKgU5fwrD3Ou{W>En2kl%;8+0a~Hxx*A{Y)zK9pw|&5V-0bVYjx3cg?7K<+JxWe0f50 zD>rsnSPw$qPdU2Fc1I!kIzR~zzTJqQ>~C(q4UV-#Tx-(7sFts~&-x7d<+FBCj>Uu{ zvIR)qV=g8eOZnM((KD@G-I@}>o0(6gk~+1-wxEAwwZnVZ`!Bb(?@6b%b#cR@<~rkX*}F!K4WSbkc*YQ+tA$1 z>#~Gc+EYKe>}V(18y4YBP5UT4B+DI$Mbd+&`z#P?CRO^kP<3-KrztGg$?ru=u6u4L zMT+>M0{HWWjV7;ja*X${3+_|9qE`1W{#zSlmJx17s%SL#pE`-s+`RI`qxj{Si;uowGz}#Pe`)=+d0Bl`1|F)pu<7Bu zvs^txGt$#bZpt`TvwvZ2#?XXr&;5BlzgdSW>E&Bo)ILk_sT30ZH$O&xbw(HnOucWwx7osaY>Pge!#3+LaV0z%N%-UEIK}u>@nehGs`6 zZ}%U+AwE7hMq)mPHpzbKyo^oRrfDxjqC2MSI^DeTV`93J-Aa$x3d+4LSKBg<8r-|D zyN`XREVPEh>L&<(zSH8%T#%FJ7sclLWFbfgM9{*t2JkKDWM$sEO< z4iBa$rxo(tTV;zl)E4>;w>5JZm<$Ul`?e55rq6h-hEyC2)vU0=TRG%8saKKzcNXA5 z-ZtNmpzX#<^i>nC&LhM^R7b;ef-@p6Nf-u{ z71C4coXu%8zJ!vp@pM4$b$|J0_?YCzVYjHAduUf*{~dtc=rUVmW6t3=RK{hTI&knt zT&2JpnRWbe4<^$)ww?GO_(bCweSuU8k?FGH7M{i*zqJiH(#(WK zg}A!d4NM*tI%AY(3)T`BeVTHrUhM7$<1Y(+;wB<{(wLabk!a;ou|lRBYinV>eji;U zwbWlC{KFc~#re4_fuvQ4b|~Z9f^u4uwH~JlezukvYdBIAi#go0+cJJTr9s$=_Oo&J z;@@Fo@Z0JFZDK(yJz`M)PgKy_{^64wbmaB*1DSts4VXt6XZd<`YYm^G&+$CW{$JOj z&JF3F$2H$kNHFvIAMU`z2DHsAo*|MZNQI+jQgn#&D@@ldwiS$G1eTlfzM1i4=suE@&eDs;nwU zzF$OTtNgWjHlje;{cT7FSxj5f4HlM?1(?9486yy-59^k5e4uxFD?bi~ICQ^RlA=~T z+0Eb~lHg#@mMiH62!YXxcs5zZL-=IlZwtq|E&k4A#rM>~-NL11M{MA1cLspkt&nui5`UA0gXy z$>tH)w4NJY<47ySbfXc=wc-T(`+?yaOE8P~JcP)35UzKd7O;pm=_qA=&zcNyqN zetuEW4HiCy5?0Up6&4Qxj`PSSe5?vD<}U{crQ5xE6SKU$uA68=5Z*odG5tEzVEPQs zv46;}y$$~x`S!7hv5B9#(|m3Z^~BqXdkYUQ4z49zSuYe*^18cuyjxIc;w7d0y#I0Y z`8#L#e-~h2za)!w`aCrKV1LVPi@Cppq98h?H+BKWV$=9Fv$0X*5(@vh4^VeEE50b{ zynV#MKroAcM0ZCal`#%WX;$_%Q$)RX?Ut(&+fQXfgI#8yB6(_N;QURyLr$*z!scjz zUfFdZn72S$Rr3CZxr??IzmCfya$i|!a1tWYd(=9NXM2p9hDa2jAZtWIKCy(X&%*>5 zK&2wZqdL>E=AI8uL@wXoME~&yjzHMrBm`oxyVo^Jb=CWhrApQNHgL|7mmRIz#CcoG zxqt^=q%3sPq%anO4vyMy=aj4t-88B4NheMxp0I(M!iZfgX<{OT)zjuFLmvz!LK1u8^C@TMAZh4a=CZ~<8o7n7nE?PK%>CDqtM1i+P zyohk+T&3L8V~E0bsm)}egU?m36$6|SS888+XYs8{6KW54(E zEn$0=;edAwz4jsG^aa^M3FHvSiJ5#_WoTOAArGjl4tH8maUhy zfKLPu?W7W}+LU3l_Tu2V?#P$qBx+eN9UB_+{np$^&eav~d4A<02*&GejWIvx<};cN zIhk##sN2U!Xp%6jOa`-gYxB*!4rm7#q-|=%;W^>Y;#sth)>bz38XJ94wymK!{f4WxiENw=%8YV>fqmj9ge%}A}Vqa z3!7o`;VT}bUP*stSd4n!bsnY&4j)y{dWBP8Hq;sjOgANJjS=Y#_z)#yV#fUVM>mq zFms8?vjDm~b=T`shwb;KUNF-8!^@;=?hbl(tfHJK#Z32m16Rk-x#OSZdG#Y_)Z+9a zL#c67BfGS#nS)V3)@^O`GlN&iy(M}&1|$5lnxi%Zi0n1d8I$%&_=86R53Pac20OGR1FJHIdHn~De?OLC^EZgv=|ni~ zF#R?20Im}X*dvKJD%F>7ID2rO^eo9&Ei{vo&H?KhkY!qT|0LD0Qokf@LMs)lE+o@A zm(Mt&uQ4Rg!SJrVcXjpS6tNlHe91!(K%6{A&cWz3<}10u*{;aJQG?kWI-3)&gZ8AK z29)&aD}h$m$1pJQMt9P0iHpHHbB~S67VyXH@5Ag-4o(CnU+~H>^n1YaO1{}ms8TxCJhYu=IG*C zfKZZBB1K#B?-i6BN2cC1DV5|G=FeMXsKlK0$}FGvcqYffJF=(FUsR5~kbJE-(*b#4 z-M9H9-UdH@8#j8h+8{uNfpi=_+@iX025LtUq1A@sABs#ywK7s!O*Hlwf7C5)m>OQK zWpZwxfOp<~3qZpcEsq^&z_%vQBH4yd*3tDevs~-6{~OlK0_Q*@qN?W(`Fy{*J%Y)= z9(8SNN*>;Gqy-nS;})nQQkvD8VyyUFN^-iy*jS2wO}csL__hd28cJRi>aDx-pT}nn z@2>2_CblQ%20~m1rA-ZWYKqHWO$sLSnahIxX46*LdIyq^JO_N_K+^q*V`L1!+@GJY zk>-C&xhGR!3SKO^6QCf_$2KpZ_sG+aK*0(qHhLk&Oy{HjTDP@A;*!hd_&n$~-LX7tuWO zk(v0?`Me)iGD%vLV~6rP4QDKF>D?7t@Tn;$R-+V>G1$okto5$`0FSvm*A1J2;FkT} zy@wJl$tO)d7S-!bdwU{K=y%XS-$5q%ieeOalPAA{qu>hp{&Jj=aO$uB)vku z8}s_~e7w}~q&Q)%Qr*~@5O3F6CYfsA`!^G?aQ(VxAts`-spn2s6PUM?PY#I)5kGlnM~D zhU2X@nzuZ>+}P4JvT)v?smfPTPrwxzl>yH3a^{wG$Cn`^a-g}wrUe`TS4xZ&)NA$4 zk`Y+b{TW{*lg9r&kN6G-*X8SrR<gPY>>0-t|yxyTM5JGT%A7 zP{My`B%gwk(%{o%+49~_K8Jr}jr17;ostEmw(*?riW)QB4_?p8{f(X1EaOc*$M0<3 zRUVy`%4)0azq-!#P42^TZ~WrYHg)pdM43D6og&&Q6XAZe65qkJ(pKdQ6%sGP^&+9< zt8QfqeX3NE@_=!lfEa;cfMLUZG1`~{`65T-6KicPEyP>jXP?!|@oHZ$z5Kj4GaU$K zib0i`JW|#-H`juZBv&(csJk2^m9aZEGf+2o_~nlN+>x;;CvuA0Mki<^1mfAi5yr(x z=ZOjK4d~MwzQ5@aY$FYQ@zz6LFA-t)1R?~@i6l!Y&8o-aMC#Mlm6fdv_H$kuCN@K- zq=9@Q*Eq259RRm95dL33aC~FkIsO6`Nl*&4VKEbq0UZEfGOLq0eCOgmVehiEHY$<4P7zxrkQ zqPT28Z&D^bi`%>BsXiLa<|R|wO@Q%%5hU1+JgT-5FJ=ZAjK&7yZgGPhAdbM-=?olb z`>B;szd`vT!$@X>VhuySB`I04J|r!VPk;7JE$sdN1n)?Sy0Q#-NZjmFok9sE&NT}M zq~3nqP@Y9cU(LOD9voy|m<)IQXRNpzI?uHece9_{j=7A9ZbwE|SUNACdBM?>nZ{|v z@V>BzEP|+I156Vz@NP zZSzO1#r8(GMy&A8`|R%K0l5t3EH;YjnI{lBx_dB%9_~dN4muG_xC8GdNwWqh|p~PD=k9?1x z2&V!A8c92917)qTF}6Pxe=OUB81-ZFmZU;yoA)6@U}{F+cw8|&WC#?sX=`RKL5q*y zlAr`cwl_Qht0Hs~nup>cvVR!Qeoq{qna=;ztI6);nUC`(M1}Z(E9O2}-Sf754klBU z$6=ZoL)MA&RcggxInV_x;-H@>aDSg6gKRW{3jGP_g*mn7-nmiB5lh6MONkrBiQrsa z?cDx`q#yl0pMpqEP1Q+HuYsik?dkm50Gg0JHW>|^h_7oa^p=p*xp*c26A{9sUO)0u zBYN<+#_X}w+Q8qA#C#vPS9c;X^`B=^)n918lrPb( z0xgup<14#u8zMzjQL^%2taL%*+`w{Zw9mry&@vt7x>_=+Q`_Y3;a*rb-gW!A9K&wN z9$zkl|6ObCwqSKQG5+&%=(M&u09}*15C;6?sH-4Xa(wp?_1l?X9fbu&uOWh zcMzU)ZOQgJ5DtZGd%xNNd2-eYN}|q-P{7QhJ5t{5ta3n${w1@eUv=e>zNHlwL;1OBxx*~1Jc;hdXGa!+F= zECeDVby)MOivzl1?+n=y-$>j|o!DVbadfl`NkqQ7^oVJj)y{20UQ2e_N2&R@?>?1v zF_=GYR%wyks1KLG2GA-nUGp_(x4EXBS{)Wpacw1QK{?PjhBUP%aGj}HABuaGLLJ)u z=(z@-P zh!80MN)O@ZbpwQQ5cR32;V%AKY5pd9y#7c5oKMCC=^r!W%a#8Vn{ zh`;#m_r`rzm2%>O-NVn zaMu%r$?{0HnZv)0K8P}jbXPPzJBZ)Z2GxOH zD2B)!&&>1s!D{?=-g~cVHJ32o8}%lrx-VHb4OG|A(T54#XNsgke_SlY+wP}VJzMqH z2ToXD3M>qGrWOp8Qd3RTFa3^2Lef3=7~PG*awcHz-pzgr!=RZ;RdcY>r6ta-VcSwZ zwzuy*$uPAj;W3h4l(Hr&_C~0Y0;THGSCU?yRk|9y+(uUJv- z{CKs%4bB426~Nc+ct|^6n^mG@o-F`<0m~?;V()U!!lj)CIq|q9iVMd_(dO#k1fX;_ z>JeJ%p2w5}fguT4*zvY7cSsK9O`erIg8pSnba$Sn&Fu-X`U*)%{M9(=Tc#!o&=Wnh zLm9Q!;>measl86x0d+;(;zM&K$&S;v)nRP1J+#f5@#=d1}V%&YvZ!OabtkWuklZYmyxB z%(>nP2vDWuh%uEzy~i~0F1FYSurL1U>mth*#4yrDh6MMb5jt!)PtI1&I^Gd3^)PrY zcy$Pmtlyxe<&vOfU-bL~KOV|U^cH{PbW5|h7$|A>My8Plr0pX+zJ@MUnsgDIlFCibx#fBt*K{;vGOQ0QwU55K^5uk#!DA^#W@F=R88&H;)6o1esy^=L#j|_Ut}{$@ZI1yEdJ-8L z)BjA-TGb7VOZxktXbXSBX<94xxirT)h`AJk+v&_DN38aEN=#T;D_~IL|k3 zgUniqniMIj9yKm)MPd@HEuNCISgk>2doP5dPQt*R^+&LrQ=t^#ZW1S@m1Lvhq4gG# z%`0+ZqzQx9POdDkJ~zH? zM>k)0mUbIXy1`u1Gr6;ifFrg%zJ3&k4tmol5X9IrZs=8A#EAq3mSP=$wt+(QPEK~w zd(z#@+CSV*+p_ZFj^iaI^M-exLp-R*{LuXToLw?dIy?0~J8}ZoFv>CI=e5n=OdII_ zZx7;EsjC6RirbB?Pb8%x4aFbmu)QwUgHFm(LPOT13u$-mn43AcwWWT^wjaDmEVatF zM*0eCkPWoy`jy++i*W^TnwOs(#b;S-AFSMtooNweonxe@Z2J3{G^gt^VO><`O)Dli zLGohu4Lf^0hQnu@y;}s?!PdsfQ^A0Vdx7iKRp_S{1EKseyyn^WVenUjXqv7yH`XiC z86d(EA2+kh8$IedBY__GixCXxA-#q?xA7Z)2K*{|Inaq3TCnsa>;TMUt0B9}dluMj zvs}sMcYe{=8V^T|)c_*>GaO+H5xZ+pUeU+J#{?)a(-2vnyHc0a$&`1=jgQ_t9jT8N zVPkF9@2&bYAs`s+%ArCtdIAkLmFFZ2R5$R{W24Pr8gFm^P}@9!rh(OXOthl8JTVGd zm`2YpY3TE=&+fv6Q>gksDgO+VurK-#u1)gx`FSW*jcc>LZoC?B_i=MnUa15VFY)$x z!&+_XM6J78%}=&k>DgUNyW+31?4?JWkh6h48eI2wutF+oAx9=Y?K(UN*!HOM@e-TQ zum0tq<|mIfE2i$Je(CYaw{pUSidBPELle|dp)z+H#9P3yJ-kz{`5nv6n}zoE zTYsWiOtxp18_gh#PpWPSy1OhqSfHhJcXYE z{wHtIi=+xmBc_FBJ{5tV{R?UD)8eAL4lv!_Oj$Q!w$D>|DdwEDW`+gFBg$p0BNOey z9)fO9W`l6q13ah(QG{V79$s%Bwe}>R?*<1lSMS46OZ$7mK8(&hKsy13$|j!?Ov_Op!WsHAv|#w!T*S)R(k0)cnP+~&lw-~6?Zj@q6gMWe zj6w`%a&XY?u}3VwsayeutmR_JnGWFxh2v&7=t-gC!%b4o;jDU3n7zEcN~G9ee!UFX=5T#|g164WejxIw4;BT+0s0kY-^yDC2t<%QBB;UN8U`*(0Uh^F zoYM+Y*fTLQbgOa!#+(w81$t)OwW#m~$3<3Ys5}>=4Hu_Rrf|>Xrm)3~?@QzQ&VK7-IpcxNzwq0W1lXXfXR0h{!bc+b9N= zh1c4$(*;md8LY+5lYm9T9^0GmTNg)RS3vhA#VyCl4GuJPUkUXeOlc=)Qj-*!KVzpx zZjquSyY?UL|IPw{ve={qG!kQJZf57Hs=@PXQmEYR{6eX-;#tNUM|>-zdTL`|ul@uxR659Iu?BAocMA+=tff7T&I|J@4-Ma79ccw?mq z$S1A*ACuh9bWopFkp89k0cBR#YKf1vERu7(Bek|+gS7md+t%vWZlgQ;6XKj#!XxyN z;qlm>3Y8_i;A>*II^V*Z)99u;uzxun3s5IY!Lu|DL6I0q)rC7khAhaJfMn3ZFg@^Linu})>3vcmItu8O`(4fjn zo6f^pBBNl|%8P3mi+pz_A{q)BO4eU<~rl%xLg$ee2`=U}9Qnk(e$h zRh~@>YBT)@fnI8p{L=fY3(FTi3UQLxRO|?M5BY~6qbzk4xWI1X&kX)&K~hkW{5&^6 z=6IUlaCec;Qv84==`fVK!}s?OzbdA)(VhaQ2r6Gk`T|8@k+6ZqrvOjpR8@ImQmmh< zYdnw$GJr&KJuIY77w;E?4vr5mu|%*4Lvzq2eUq~N$ex3PB*Y7)#4m9bV(+_1)r^Y! zv_%ii0n)@KG0|DV5urkyC@^+RdAX+Mfy=aQXeRMD6?;gnefAF}f}wQ(!?4P&i4ir8 zL1#xtj7)Gk%TCL(!vv=)?~AOS9MFlRrq_o@Q2E_MK*yI$b2D}5_orPmvLW>ajW((2 zV4vA;9A3WXJFjWDnJXLjjbtEr<$(%YHOCDC5e!_vn5=ce(G+QV^^2HNvfw4O*s2B0 z`Zs5)bqwmj#!tSw&4gYOOOz9&-^cgea3d@-xQQ0xfC3q zEOfCsJtt0 zNTG?hBLLW;UyQq7NltZEq6NG98~1*q7?M8j_i?C28?o?a(#-E+`D^j zqS9$r*0x*)mCHN?AD{U7z!yFF6dJGkM6~BBj(J@smf%rQBmev?0o2S48e%JuCg?;3 z|8VgIKSK4_0QIo+rRa@~EnNc=mQ2|G+Fq_FxArny_$=C3p?A3k}71 z7C%RX1K)3|ydz$kpQ&?WDA;aglV(KIlfE;_rtN9TLpMLA0WyP1z*wfV ze``UGRvm{YE7$vOljA=zT*6vSWjd0$I4}{k$(9RG9KPJ&sHX}-Oaf>foaP>46Q2c2 zZvZCH)y=LvS5V?=Q?sk=28!}vtufND-wqUBsz0jutqJ}q=I2-DV&x3LIxdFf?%V^f z*w?A->xaQ7_ZM$!5l7U7pz_o7HuS-8M3!Ub+!KCn(sw3TRU0T12Z;q%1C+EuiNFZ- zJTph+axA?AdDO`#8s2!DePuEi;Ila{7}2Xg!!Vw7e)fZ|?qa9Y1VtEU-IA7w-Wr*x z5b~Ro{r!mxPa*R1;iTYUOxSo=!auVkW{jV$?yLWmhKL;4E1fKEx6$babk`+B4gNlc z_^Db;`y;D6cDH6fo@i57hsI&!FFR9RG0%>9@Q4u7{PQ~Sro)MG7tJ%hAr`;PB1y^Z z17i`2yXZuo?8COx#sJ`^d6ZH7rc@7^lifwDgM2|#<4sYE^pgNIMc zymsOrwO9&qwu;^P5zu>UGeh~)$?Am$+HVz|u0*>?Pw%A}wzhban#()-xWh{xTgoeq zP2{DzTN%tx{CES&uAl(5edMpPQ9r)@zY@Gp;G!&g&%sWX13XrcQz6Dl5O8{~9k^yC zN}=1Ut79P)Mk1U$e@DQ};<~xWL@mBy>f-WsozG!ns>&HNb%@+zL4o*V8Hp0@pO=386@SQhz~zoycb9)OOWA1Y}5861Zk zPf8f*p?(Ty&^dorjAEb>i`sa*0|xxrGJ0m>Bcl9jlfHq%=|7ROh8}r)@2I~ysM`eN zDfI`%GuFsl1?Xl$Wm+a>(iRGz>@>r0nq13!DMpG4q}Jfg z-GPm9_nl46)c~5A#pU(q)oy$z;6(uXBy)rEYkh_awzvS!g{rBC4~zZ48_@CE!FIB4 zdX{h$LsDsKTqR!?=}9ZNGMSM0 z4CBZJ7(+*x@vp5JC_=-}(MTeZs$|vdzVJP35KBp8zK3%$zxLC&W-?ePPBZC8!R_Vx z5uvKo9UXQ!5g!8B?|snJ+IRjmK0dZrorp#QES;7MYLj&i8@S5I(4{3tMYXe%4HB0C zq@i1IBLk&NnvT-0F`t$iiJSFX+DoeC1MSUM^k;8RouC6F&ovwjD&?&1hx7N}Fl{)Z z9o3Rb#|onpeT*!kc}?(DE0m{pZn&Y^(+PaFAJUoBzQ2p}u?Ef35P#BiL{+%ymi=|} z?5pw;%tNV&rB&+R0g|xX{#hv)y4%_M6!Ok%=QH151=2F02ZX_zGt-TS@)*BwPkPD> zXe$5wx*WxI1rNeJn_Nw z*%)s{AzupfF_Kk=$^nP9Xah>&)-GD3VxfT-z*!cfplIF#M?l67O zAV9iUCtzhsvgT<|Eoe5JvJX|14*WB!M=GrHkxCMVI|C$soM&#A7^;Z>!Dlr83vSq? zyZ+@)m2voc`Ymc_?(gQB0@h@q)%H5QZSR{2U%7w>CT;dAc-Y0HI0}L;9qI3x8s?oV zD+ds$>UHK;>Tc~~9*O26dy(mp6|o=IdlH_ef0OihuDos(2xR>d*j9ZJpRv|i5*dwS z`?F=0AAlXrb}ZbreC|+;+ft7r9lJ`}i(VaK7oM~NCDrz%LNH^2bqx9SrOAy-m!?_7 z+)y=#Gx$f6RsnHmt2*Pg;Vx*=DtUaHK{I2mF1`7yF3X-9EI?ur??31+d_bpe1Y~Ey zbUf#8HT}1M1RrpV9BMNGP0cR9MKQpm6avp>7#DnPrT(o9tXiz@e%iPW&fjaW*}->d z&lyEFBq9sG_RZ{Eb$!Oi_ul<#DOZeTI3>P`6OKJ!CMDRCiru#Um9>S{XTIq(>)D$# z`|CsO9jgJQt^YnP0x-aJ0M(ii>IPl#o19k?rJ$_|gs-QBrZx9N`As2}&&{)LfIojs z)f?e!a?1K|ny>YMhkESwdr>s_i91%7#epm08}+^2xs2bwE~NB#sK#8|9JwC3K=aLdZkU#M}_eX5WGmvd&? zXnXDtg|Ekvxdk9H{`~sqdpLx2o`3B;$ooLXOue}v4w9F)FY4}Zq_M`MuwFC)RQ8z5*=&vbieNx{8X(691S71K-0Q%bT+{_wPl`_B3WIs;-J{P~4Zt5Y0_r>@Mx_7W z-2X3glNjHp(vp*(sb`}Y_L9>Gqf5Q36r@~Zh>2a;g`L32=KQhX6j z85X%B!5eEu9xe`;`2lN>l$ri-z&w2Y%hAf*|Mdwye$moGbI%8WLw4YHq{XK5@4b#Osd^sB_qyxfLnb6+$&3E?-i^lmvF|y( z*XR%#aJnRDjL=nIoSzb4z!y`+K7IP{0d6?l2xP-&)~|l;E}oJ)oQoaS(KF^i1rb`> zOZiE$@?&>Z9GyA)M=}g07`il5f69540_0CUu4d|+%3{+zBtu5`xTkkmtEwi%oSy0o zS`AQ_cE9=U|K>zIaBQUsnL2bwN4;;Gax?+g5lBw{^A%AFM)17Tr_4dG<#zjRZDm3% zzP&+NE2!4Doqm_MD)w@(>bBV=dX2=4M`Qma?!)lM-X=Qt!HbIllRd&e%7(!US840t zfN}cpnCp8TZv1y^iA9AMxf#I3$_jXC@1>J4%0CQsF4Ym5n@c+xG8D)I%XS6xwtro} zvCIEA*AIw*|L@Ltd-?-|N#SC26OH)XW%mx2x7_%961{tGQraGauw$y$mGFs7l+u^y z6Y`)+h;xV42b<=q>F?GRe*l~1Mk)B;T~yFBCV3w^c6%}))39>kGX5qt=tqu<(av6t zl+}-LY;FL+g_~w;B{p0#GfIi$|Cu~|m;(Ng$5Y>Wh0r76_=a43En0s{7#CN%+@y;fSvI86n z0KwJxJ3L7wy$Ud0Xr_bu3d#vLbiT)lQh?H>eOh8i(k9W&?LYj6kTDc{T`j;Ay~aq% zeu?N&wFf#k0mk49r9Tq49vBr!sEH;1m-|qcYQlZgc$kfNpv-2vC^q@sw)hO7f9gt# z<7GVSM1wcD4BMI%;bhXFinIr5*)55ARXoxefWBMXuKB5_w~8_A!x_+KtpA5xmJ(zI z9m2icV6Cy@2aS94jT%!;5YBdA$*)M+dq0;ICEaJfDBs@Xotg;CL9DFAY6?x`9;8OT ze78A!HjUN#^CGZlkZ@gr0?B!F13AOws{jkxysIz6UCrb6|NQ>n^L@)Aul~czIW`g! z$h#Wyz7q9s0Hw87b-CUB3dG&=59ULid05Et)_ zBkx{oeP0Ecd$xfSxvRXft$fotXrjVY-q_vt7YMKp3i&!L>kEfq)8eT#ep8-Re8YEN zU!QJGod8T0#6*CfzB!FVqRoo4r_v$sMC)dsJgwuci!4|-u~;S0pUwT%>BC{#(&Ha} z#BOfRRj{3O_1d|zHh?hHK9`XzJ)!8zBa+13JjP+6WDGWV3gaG?{={Y%+VXoFlE>V; zC$7Dk<0W&jlLI;}9g=RId&|jjF>}*f4Fy@CixMTs@!h3??-ro!WJu^#u$fE)QB(is z%=Ekyym=<9dl=D7;E66)W`zM4`1~se=~bU6|L^C96EVAGZ;QZ}YH-gD+Sv97Dn@Cx z*`Solv^R&j%J*lXg}0dh*`pUA>$`gQvcL9uiZ?LdS(L`|jGD}BH)VL^0#s&7eF@CT4^29=4-zNj0c2=B|zy|*Y4LviD z=j7-7Onx4x$f=?=4;K)4-;JXe=?8#ItL#DQf&yzq=)DZ@=RSWgX4tFz$6^#kT{09t?^)>hBbz{bHLEDjmM!_p@ky zo*DzHQ}>{oE5@_)TjkviN(s!qu_a4qV`h%iNey_x_(QZp%{My;pva_^fT0XNY zi4O&s@OpU!K{I|8_gsE0GvVi-o&X6Ws<^qsyI(q`Yj3p7A71#U8n}$X_WlI%7)tYi zTKr*wU)cWdDd!HB;pVira0z_H9kZ)H>9AS1JP^gvi-UU{*v zFYzpGvEyW|m%G%~+(x4x1PHXPH{q-`C_;8W%^?BH`e*W|+um14=2#7>|7?4oBLm#4 z_@!B!A89{R`Q>8Qt0kU5noo8EF%ZA4aLHjm!l<7PkzhDo|9lNG?aTjkE)>UTomR#Q zo4ew^kW9?Q;Nbg5NAV`ui~~e;iJ?=Ie&Y;%`KH*xWHZ5VcY}Ds#$RC`4jkVlkX8MU zmBtVL4TK;PrFpJab}ZjF01yN5JfQdah2}ozsOUi}JScv5<`3ySrucpHpyu(`jFy>t z+~|MLi2~`I@ZDBP6f^}E6GD+Y{-~ZQCH~=mGAZnHBA7vA5i&tiLo7BNof>m#S16%p zCh58z?Qq1G-ZQ9)S9$013J8#@1hB(osO(*$dB7EG3OG{=Qff(Ob$iXZo+KMfu>(Dt zzOGP1D8ZKcDr^RcmhtlP>1<6BoBJbL9MgZr{l_I)?G82~O?i4M^iX9T;d<4aJy?qF z+7vhf-kwp5AdpwmP5*eLqg=4xjysD-LmP621B4^hy#i8sDSO7d5`Pa);z{-XR4Ara>{rlnMk+_ys8-N*O7EdoL_fLu*CM$F> z;$-fif(&z1`b7AFTPyEx37-Z9hvxqt{7?$q``Dm+)Gu$eEKMiyZ-ws?i%34%`7w}% zZN9Rd3Ly^INEVbdd!eUc* z!mPM*H4oDG`xpT{;ry1I^_#x$e`K2*UEbeJuXJASyeE=ApVh4mdnoTCxn5fG(%!u}ir%FDOrIg+z(MFV1YliGcsiBVK-l}&8f4dl8LiH;J-VA@=Tbmr}5uN^0$W2Ip1h_EU!*tvy)us0f zWQ&MCC$QZ<`DWevHJ|;dQOR6G$nkoE)-RrdfZa@lvuAf0{cB-q-9zk zv6xR;&)^KF@xgkOQ^YJk@n}o>aFD0hRT;rBhAuudpjwZ~dftBZwfI+tH`lWAKjfLr`d&qXN=Enk?r zGT{_PgY{k4LR0QV(hQxfaxi#t2C$*&A;d6=qo4Cx?|P4aDmPXMn(THp>mbS+iVQTF zDTbP}6a%vy{Q!}|(4;QgipEd~3#%ro4J+g7{F)7qQZO`3B`HM??Zw38e^rC*s=5>0 z^**FrjNhAP@O&p;s(FZ-PyE0d#%igq?Tz-_5WnbSKO)Y^m(eiCekb+;_x&BNiV+|c zGfVbR^p!=66xz_iC?Yh-qSo{6biI2?{my_|s-07fOSU>H$fTwMEpuGRRX!AJuq&~z zl|bpptcZuhPz}h^SU^z0+O(6$>qXapQs3GNTS&GRN)tD|{;n}{kfC{pW1|JS3`tu{ z+wq^7XvtJ@m#)N&1#0;&w+5eWu;*BWgYDL0YzD2bHRH`2FQ=QfCEbG~n;POl7X>%+ zt@TwuD#C>S$^6Ww=KL~X@$iqx=k@-35&qzc+ZD+4$zHs_Rrtv0ooK1zpSO-%u`+rE zbVqNay4#XoA=a<&F6KxPE})`((Q>j_v1>6{kp-mS9UFMqi4dHvf6R5FKD0>-?$Y%j zIJ3_gwP*z7dXt}SeLZy-iZKj+M&>g+gIao{CSH!?ZP(w2aBbmGb&U5JG%4@ixlG6R zx{R2doJ_tZH2oRSvp|-bE$5wqM(0q;fjJStwuuK;3qhg$&VSo8o=rEdADbBZd2eq$ z#S1N+BY?BL$#%B@W5pUW_iOQNZAQ7CXz5|){=S#5v!T10cexME_NGF*dF6gn zIgWFZ`4Xe!jlSaZ#eTlNCM-TXE*pA2Zl4hAvNdXxw_#m2|D6SZ_#6a8muP57E!7ls z_xYr}aC|KkFueB3`7z;^cSos=E{j{=iQO#f9x|TpRF+vp;GUDdmpL7z4gIeoZDr?i zgs!wUOIyr>^8TG)g|?RJpJa5uc&3gvr+fTXsk?c2DA_#O z_MXd(`G-;9H5|L_{*I+tG$w=CGPg4MT+wB%apPQ{-cjHG|LT-&1-y)_m;o^cAM6eTzi!V zn=g*fiamM8KUgA9aYQ*Jy?^r60N(>W@!D-B9(#AMrB(CGiS|D{lk%~ksUP$L;KXTc zB`f8p8Klck$UI%|eiU@nt5XWhm>~-WU4M@J4H=Sq=8~g3J?nV9ukp2baWLxh^ zQ6K8pRtH;oujGbzdD?>XV*b61ch4iEbTDLr)QNuh4nOT?B4MKuZA*Wl^fQp8eHqC+ z#T=}>5?;lx>Gs5Z^*~gzI3{Lo_(ZW?cn#|u8QS%`Wq&{BS69$_e@)#gYw9!sbPDeN zP{mz;`KAXW->4sJ1l3FnP}x24>eLh>^QjG+_~$8(VKiwol{&KITC3T!qGPv>*-Syc z!rq?LjFL&sr>Sg0fBp8;WiO`j74T$WT=$L}J(&>|1HoiIN`%~DiW8nPe8{^Oi~`r1 zVC{M1ACG|1PH{LPp5@r)iRz*odRJRDkl``+DTK4D6K9X%_?@|9mC(w{37J z1MX+?VG9t4Z4wDZq|{3sCS#M5ob(d|~dqroh+M#)(`=lh-?<+7Xp`(Clc$k_dfG~1f= z*k-NVyTrC8-4OtveRkVJJ2mA%}y_{R$$4qm!W* znhvl%z;_?OSpgK>&4<^5TXnAp32ey5viDxNSf4Q=K@wjsZk?c-M1`*R2a}av{^mXv z>5mFFiI>YKFTMV%*1uZ&tFF|BIlXre2r4?oJ6wDQ|R2-L}26XNErZy6GlXXSu`$d(xZ;SjxDa>_&i#`SE(Fm+ch^ z28S8k)RH6lsS`6FteorW@8`J_pS=ifocjE^Gz>oJ(3o|Pw2t+xujS&)dxE#!e{i?P z^A6GR>8#!5wD1e+=BHaFwG;!+Y+_%fINo@7x9|zrQK9f-d5`UlyE4+Rvp5lJ2e*OW4iL5fvak_O?rOM*RH$6WIHr%@`{H&iC~+On!w*cDt}MT%p-fGgd6 z9A(&zOgf{nC-UqqMsVjrhP$|6%Dv=k1ZL5SDTeieMwQ5?jJ%OS4XM__<%bH1FE3dt z&~8;+@lAT3FVXmylDM_szBga5DDM$FImtM@2eCiz&%Fn(ziCR^waerY-!7vQmtH@- zds6^GS__s}!qecHnmxtNI1Eg?)M{a+yO@X}kRmHwdxkc>drG@M-B}p)6e5T$8)<|F z&ISc45-u!<^VCE);!fMEeho02i>5wCwcS{alnLcu|C1JN8s-=dr@PI&AA0;HVmO`L z=ovZe-ZU%|A-6#FN2*?J`xXxF{}7hxH;MT23I|RoIc2}1)@K!+pJ;P_lMtVibLm}m zPjN=QUl~skWioDnS+wk?WYfz^*6?BbTrc~n2HmOdOmtR|+h+f80#eR%b+&bP)*L!YNM{`!#+XHfry=pW7(bqJr{~4`gWZu9~WJnh!~@H?bI_hX_d|`xl;IYN&ca%_ooZq!EGnZA2vSw z?wdW!yh6vs=Jrd=lkx)8VnmX`c9JeW?a)9QxZc>=%SZhJ2q;qL6@^^yWwKaf^kI?X zj=hmh-&l)TU_W=b{@l6whlHY6{^am6ntz`iniQ@bBAZ3F=S8_`0I|?EUph>)(`ulk z`AKkHFjYDfI5x?xro4!~Y(~!~T+MvRQBvrH1|O?8Me>9@8%=B{mH%|2Poz7QBPKf<4adh%xfkb zV5s}dI0y+pTGDBA6UwbmOt- zhXq51H@2-`O-F21ytgwtf?gYc_|6rbBk!ZisEM*`pT~b%$SjvIGE5N5iIj-BRK^D% zm*Bs|)C>FPy;JMoa7=-0%RQ{IA9wb>n1DAp?xU0`u1Ijuvz5&T*uTfF@d$T zfQM^2)WyDf%hqF>XPp$EReK=t>mJRy&wP;q^w;X-b(v4tC#MSi;hE)Zs^kbG-+auvmmp(O0GZqIk zJr5m}+5DN$@XnB3ucE0BCfI%Gtn_ZvES(*B;4{%xO&0nArr#Vr#d$`T<$caa*5Xgi z(N|^PX`hiAaQm+Bn?k-b!YIkiIpnhL9J6mdD#XGxO-|{FK`(~P`v5b>ntlOw$Hb3O z2zDn_J{)!@7!H7Qi0@y$zu)xa+>_4I#?PTw&o_6n- z@xLT^q3EZa>!5Sb>5ho5eWkOxdHsOz1}Ebf@W5;07Q!EMG4b#5%ZLE_TmETD&Bq2- zk6H8ikn_qgEwMY2sI^IL3+LetorS#pp@G-)S1y~Nb87U9JhK+<_nPNivOp{I@ z*!8-lmM8h!F**!jlO6vHo2rd4x_+I^PYoAJxGmyp#6I4ntjCD=CXvdC_C+Lhd2{1& zu9JN=$@b;bn@!)HC`5(~lb77|IeQ)q*fD8 z8&!4=x^;*QifwKlithC`Og3un$B2_mW;*hm>6o##w(C#&J<|M^dqyhf>iwF<1`Ds! zJzKvMBI;GX71^*MDHBn}{KFpBQu}GbM>9Ct6xuYgPyRf0MaS}}VXn!jZso???*LwY zVv*VU5u{+8yM-0v5$jh?)40p2OSqn^l*U3HWKu!CmW;@cjg0GF7KppXpDO<#dhvEw z51RU;grz;-Dw;m8S1HoJl_>Cv=;Pp^2xn?RkW*FM>{5;~;%ZV5 zPNh{+@OInFrV|AIM#VwZ{!1T32jTAP_gyzEjgZslf)tq?ur1NjtLto~nJT#fM&_(N z6$|r;MH-SrA1@}hD~!j7r}LqT($P6$kwfwF4K;)-WV35prYT&g8XxQ+Y&bC9ncA{q zF#Lvd1jQM0pzp_2s^{EW8?L*^o4F@~j1lAIdxp(%$6dQ)%w2bLwgV82-F2CAa(S%! zMejCak%(515bi7a#BZ-t3_??uWklF(zDM$&tGM~m;7a}IGl}c94TGX6%J)a78&-OZ zjNDdVA|vFFmonsnGh(iqrkuOe=aNNszQ^nu&Q8btoYmeJdO+doi%j+ck6aK!?)FuK zI@DoYb=;QY<$c_**I<+>%~aNOfdMK{?!}c3ZKL48*IZ%24ZO`2F1C{i%VjTdGR#sT z?RPeoaXLKU`8IJlTVA?~=MNPB?R1`N)DPKjC+0G8;xxw=c<+GIJ0)1t)WWGOfBgKN%sz#$#VpC4ytG0`cC zQQR!Pg-82t!@g|zw(pVk)dr* zk`Rp58JAw`?=mtpRYC+Rv%aUExHjnG z>^ZBD`|9V1C?gl6(s7<9<2J_+1}7ggy?l&lG}`zcY|mxj;63xQSU%u9YHs0zbCee? z_t808rgSd(23GD>9%rrJ*?yO+{n1y8;nTHj1M{WxuQ-qX8J839l;AmT#IKQbw0xaE za3p2?#Ed9fVYi`!{cw#fRvGcxbmCH}w`UHYV)YmJ7K z5Q8s&*J+E`8r?&^7;)pVdsrzV)u6#hOUf8=fUC5I@i{9xqBsquC(1x$%Wtl#7TZve z-_E9&{4rb-={eV>J6O>3U~C+*&wWIcaH;X_Wx;V(>JUH8BGeis~xLmN77uB@s-9yKPff^R4&E`HV4?l$#ZeLzE==i;5o}ck#x%;Ms;7sTF zZVD{RzqA2b)75jn^?O1C9STx(v?ST={mvPzD|4|`8%4^1g1UN!_*ZLxjO;@?e{+KgITdQN#Gn$Rs@^RShsDq3jD&1O_SetT^&GiNSF$LivH`1wt1 z+N{e}N3FgaNLy1Sx3@KA6Imf;Hx|(htWlHUErB`N$yy=ig(yki=4jzcr-DtQ6OPD& z=6i(B2_*&YJh@NH<1LrGwuD}J=&(_{&H~ozMyYe!Iprt)dW2z^56T(s+^wfck18+x zVI}N}mtQO55;t>mk@l+h+i`v~bFK44z9W1@gSUa?~~Rp;G?IS=S~e8 zFxe)*sS}Vo%EhI3DlOzQ1~!)XIv-Cg zU8+6E9rVSasYjIevXqSOXwvRAS9R~1#dd-Ayu;rLpS%itwLiH~x%?;g;YiA!F>ssT;APG|!;y)w0bZ}4^bhOD zF2pa?)<)VU=91X%nBJUyKjyQ0bifHW&n4caW^QMXB%CD6PS=hx<7dvGk(hlYc(&AZ z3oNelpzdNEltollCJj+1rG)ULY3<=R5qv*P5slwR$#}Tbv(uT!g9>lI8a4+P5zM*R z4V4Yq@;vVPO5uoK@bMyItSz|{vtCJqf1fv+4KBVV@vbbSa-utKu-tXHgS@1_5$)MK zVmBp7z3h%y|2y??M@!>ek+# z$R1xl+Yy~4HWC&7)u10yc7)q@gw+gDB&e1Q58Tf^{U$#0R{l&X443lGn6j1_ehkonet2HxF6a3qI@0X|w`wNNPuacm zmU?k!cFDQv&oO5O`nL?O(=b9b5(pvaK+l1lVi4w!8V~P9q-W zdmg~ULk}c!rjYUG**<6`# z+$HDTiP@#BuM(v8+GJ}#TvyfSd*<%o({5E=I7WoUu0Yg_l_HOUsB-0(t3m%!qu02pDGWZ?_NkPcdpp~TCUW{ zvFUV^c-e5C=Yw$5;pnL(vxF{uHCz%r$BewI40$lf zd1eSo&9a{=qi5f(VOCBUD!is216tvBZe82vFxGbd-F3SBvC7W}J9NB8 z)J>~};=7g!9b*m!e}I&is!uie+V@={^Z+;82MTz<%CotzWv+PPW)R zKE2{EnlNcsG(9;U)u&up!`!;13C`BS=!-F9J*iuH!<`%J-S@?gBy^PV6;xmk*`q6| zOZG5I;(b%=0+skRNeMx(OW^K71*g!q?r(%F_IL@wjoezZpWfG1tq_MU9e;OTf0l*P zXl&O+MAvZS&`8>LHK9YdjX8HO<^l!~2;-$!m^@ttYteRc zt+7(!2W`Y$QyS;JTFb_5Wz#wbaj%n`(LL3p?#v}=^v{YvnT1EdYMNvo#^kwlbIE+( z?9zSk1Z)euC$%HsxZ~CNodaJ^9mO&hsU6Xaf#3pSuSxDyTQ?e|<#sU0J1jxbX7T$K z-MZ+A3;bnk0zeNSiiHW2?KU^TaFlxB`r31z1Ap2;#`dCZMqKfr&ipAS7g0I6%?$eo z=;hLec==avIWKi<*_U_7Bk{_HJ3QyH<`cV%9`j_#+7)-muLT>qEDV!sWLe^sW$rlZ z_nwmjD|)$_wFss+h6=~XkqJVpyg-bHp;U|RWQ-7x1B!9@pD9L} zn=LAVq2XHNEcN&W{|H0Go@VOWT?Ym_Kt+YcK7a)<=SUCBGrkiBT}8{kiRdkDe01^M zxXQDJOU70qVlMUZGW^}=Pi@YRDBtoeEL>KHaOeBT(jgNgXMN@Fdjkk}sK4~I=ewcd zv-B`$e!IlG@uHJo(obI$@%c=!Iw9x)x-rSwtQqKt{0`EXrsaLD*dLgzr-DmZE=}0Wk zYx3Dz&h;U9FEwNpmjLy0B5mrI9msw>+w8{Qb^GETHlSb!a*a{D_Ld20UA#~Hp z!2Q_E{HKHWfXt#ly`9nZ7Rou_i`^3bBV|~Hrkd{dbBCAl>1BsH6&v;xXr{Gc_IivF zO1jvsdiT|}UvnKwYV83H_tzRbPVW>B#X7>u=`Y9 zZc3P0`|&Mrrp%%sA6My2)rSdlZ>eGZaB)~-BT8X+H<=Z4BRje^@M-tjv2HH3+eX-* z6}UFQ2s{597vo|BN?n3KSO?JNS~>yb_fa|I!uDZ@S7mOS-7IFPWS%^@jF)?P%gPGk zo41d2q(h)(8)p_qs!fDz(TvAZR^$Rz_2gio{|i8I4?W&1P<~`3UDF-^6hI5< zAe`QNPKDU)fez#y&ZXCoLDn2Xo?U385X5^pZEJ{l`*%>dyJniAg_7L8@Y+usRAqcD z@wC-O`J#=0o}uvzrAc{8Bk!2(ruv_Miek(P^cdJ-?300;B2FrV3j!d~PcioL{iCC{ax*hB!fqpalRJS!tP(OYAaDb(D;ULariny720jem18i?BT;W@JzQSO4bux=0I+m@G}s!0eUuc||K zYzw>uN=D{MZ{NWy-cli5wg()RbzQviXk)^(L)}VLC@ez%#W!v?$9k28w~1~-UL))J z;B;6?K{b2%!KxDY@4WyM*B)3p8Tbc4xnujAm+e(L398ATZ>2*_Um5APYrqC7(ow2U zT)C|>^?W1vN``vW6h}SZozV6-^(sg8)t!U7V^(0PY>&Cwyl_{9L+kfk+7%7MiwnBd zt9+Va0@lgnS;9q4NeQYY_T8M@nK}~`m|`29Yp(SM6WwSss-yW~Y0>HmU}nFlhtDsA z_SEw~dP+ncNfFw_KFB1xcdnJ`Y!{#pjZR#Do$#qraQ1Q~2l-?&rA&F{is{LtuYETa z|AST3Om}hZM4;0FRi)frd7O5|B@XNbZ+Vy|I3o(H+s#x}cD2d`7p7^dBy`LI zt(PMXyOk#Pm2fD(-2!pq)YDI7C}Dh)QPF(V4aDeDQ}`3Fc03di(9UgK^4=Hp@_Tug zB5MX-^$a^eDi7_ULpbyjrwxo{!_t1|67E4j>FFB}Tyr0H)(uyDmi=Ze%7}_9#UE*^ z^dz*#x%DZ~#|;-8biFE_EL_Vnx#@0W#AAHiY_!PE(cyPEHA1j6m2~cELBdwJyZpA+ z`terf^^FNHs_alk_g1AiC+(FR#sX10CfT0{QKkDYsw6F1CvqnJr!-)z6~k^6vKiQ& zUhuBUd$O~?Fz9TA;im{J?G{O~uj@}ybWO7@7HMuoofybFkCUbCa^1wZ3ckk6hRCAA z%BfK+w-Qwq9v;}el}zK4&&lg#ifemh^rX?8EBLZAT(|r*0~XkYgF^F?`#GI731ZZS zb-htXDJ5Ru&=872vjh7T=Ux?$WuXT|u+9}c_2rNRuM0KRThM=UA&zNgZCh8r>r7-d z80ohn@hjk|MXl9+vck~%UU$|9n}f51+`bzydJWfJXL@eD9Y+0*H%)j}*fMCFB{LQM zA?0DcWUtq@*g2*p#Prw*S+^Hbv+YhO7!xIVnbG8~UKF!1c+OHtSTehW%DvWF&JZdl z_{uIsM03z|UBd39AzYaFU6N!i=6wR2ZWV;z&Mo8FmRNgJwAVp{5Xr6IuwWRyYxp6= z_q)G0mC6bOM%4Rj2XVce?bPBQkVC>h$Cs6k1s$;eW;K|!Qtt0uq2rb^d~_?G9pL`2 z@oWqK68xE*Z0*-vv{i-_dufv@=0Dp4qg?G_OnoWS6o#8Z-?4KGujZmEHs+Web?;vF z6gyF|+$UNJ0(WTvHvGcH+^!Cz_)9sT!*5rYac_;;0^#;S{d0Zc(s@qXudrMw@P75X zn|BHta1)2lWj28&+fJiL&u^6Uco;wb{}`h}4D!snVmWg^4VjCN3L&Cf#XFstjj|LZ z40KGcuwdU=gJ6Ki(z+#lKGB20Y#VybhRKO4q8EJvF_3ptQa zZ>0oue{iN3Y<-ZYi=PN#BinW56c-yWk)09CPYv{v|( z^k(y0+Zyr15H9!ge{hpeA;Uq~ENX{L6nX$o`{Mj)U&d*^(7;CHn==Ve=sNxBNwkjG zO$@FfF1OqFuh2lReOcrj|6z}Wy37-^#RqqHuLRT^omLa;x9F1LW)n-jHzWnaO^81V zj^3V^Nxd*~c#6sjGUpfhi;$G4)#x8;ZK=lQd-u^ ziEB_kz_%MTmlMoM=k|MMS3h;8C6jamZ#7HmJBQV)G@p6578>S6In;Mja5t2%1V)n% z4obloK(d4jh)|(CZ?S{lK;0}!f3z+7v$_1HGhZ zdh!8Z9>GPt3N}2yUYlSjt6=WFzH%?z$;N9IbrC#WE;P`%{l4ssT$q>$b%fj;E-nJ3 z6m_(^JCf_;J2wfzlL3mKJR#zG^S<6#zwSx_jNkrSG*i|QIdD9FGzQ}FUyzEO>AfDe z1(KdHsTude{pJBEZniJZRWSaz5tlW7Xk{#1Ydy^aaE!$bvgsCrz;7)#Z2y*)!UpnE z_#eX?$FL)6_6MYeFuTOp6=5fmbX-+Ucde*q>nGH)fdgem1x)eUTNt396AS9whh|uS zAsBq+x|2Cu3dA?GXmCg4`OXXgz3SRbJJBiW9<i6a^#K1PXK$=@I_Olfoy=cm2wcZbs{;?Utqa#N19;L!)OPQL;l7Z*Fuor0 zLnWk(i6LT@x6J+p_}IVAE(gKO0-4Cm8N7V?eQ760U8K1BC@5t0GT z7q?i(LJZjGt8+rViVbhl*l`~IP4L{8JGRIUzK;2nv}v0YvfI6%`w9W2j*@`tIlP44^g z6zhQ<=l0nM@6j@4npA7_8IvoS^ggcyeymwb#^v5W2hLZq2_mLq=pfS6R*y_20O0+yfZMx+ zlKdw7?hyi{-FBu8&C29Z_GC@r58@_+9$q%8V#P4^{02tQgsA`nEyiv1z% zG`+8%PU^Fawro+6C)4@GKjuD?B?NZ`INx=hl5VJPpfhb#E2m&f@)oi7ZpEJ8#QL|1 zPDUMb89oW7U~u$M)!lr)aZALG=W$$r@|vIb2*bhb4R%ja30!Qj4dn(srqk+eo(U-c z7*@)J%D03=5R?zyS>=h&Y^hC!mag9K*^=5zYp#cAtjJ!U$hN@B6}b-MnAEBA&r4%J zJkTUlVK1V~BA%UXDn*qw$N*=$XeKLY;Ulx%ylwYLYrPCc^Fc8fE zUnbVqo&Xd3!u5R8D3h)S*nU@>*75T2opFHepF;uVn6fMYM}MF*-)#&N_~t!y@>qx} zz6~6^WW58;82ENg9h^cyOd3DqfxmPA|IYjWuJ`}N`Tx)TJ5>#Pw(Q;BozlEWs&jIs z(~mUy-P!j8>%;jH`5j6Qs)U-UnxFCMSGWM9TlnP9fa0>v`?e?bDXuJN0?3}A18MT< zMQ>k+?P`6}t*9q=kmxnFe;pIOU%td1HMPEplR|nT>8aaFJ~XhE>&It!T($MpADkt; zyePwSkP2^Ml{Va)qNYqJeuukBE%d&Rq_$C$Rsyy)xP`odRMn4faE}L5ROPXr3@2Z5 zIOtFicR&&C+lD%U(mMt^$}y8amOb<7S>vD!C?WXc&0rYHxGUG;qZX5)8*(Sq6->@7 zDhzpnb6WO&WH9!PFKs0vSV-0*;MJ;U%b;@NS`MnHGWF-`x7F7D^lo)p_EjeeVgVo#F)u#3R} zcuCA|b+#`#;6NuojQ;Fl=ltKwQKmj5P)`=sC{O)ai3Bf_^!d*x74v7J?KY%-98FNb z+wvaaMae&~D_Uim?{r7?@j7hk$rdp!cwV*NB_a6qzO{G6ZUL6#+|ZJ%6L&#p6M=jS z%2=L*42-z%o&iN2&x{6HlD>1c977N!njKSgCPo)+`knYGw)g)07$CbNYqU!}myF^{ z;(0il6Bp=@^03R)N$9QHI5AVTM&n(p{$Z#qX9`M`2=G`SLvSQj&B~^#1EWe$eEm^uTTg@ceE6=|26LRXbWMA zNOTk$mZ&8OmTzm=d3(>=Zn&plsHp^h9LPB_FkL%@OI$y!Kd%VBq4Z39d81~cT_{FznQi{AtOk$m9ec za+&8^spNv<<@=d}HV5&gEMa{-t)w1-LR5iY$VTZf12rFRMrB1GI2!i+f566sXx2r9 z#fUl)!7L;gG?Ds>;TTr$$P8R$Acc(bW8f30GHWZ9rSESvrp1*H4z5+5vh(PytnRK3 zhp>{LfPrgGEy6v!HwP=_$#-4B$pr9fZvuaICs$ebnJH@K<>{wV$z=YP%40sl(hbpK z0uEvDY0-gU)L5M1qYg8K>l&Pv6bCc)s8R{(daE%~XX3QJq1pgfFb$p*b;!fUP8`D- zwers5wWM)|8wEL~g|pXq68%$-tnUmMd*Jj4nP5GQc->*l%?xm(`!9F%GVbc${}8hO z`3*^VJYyAG>Ac`YkoDXzV>e_zV8oc)d*qr4I{d0#aEThk4WoB_hK7CWz>83Q^1BC} z0p1DS38Dgbz+imt?+bt0&HoEFil(EL1jg6$wekgL(em{~L!^OCv481oiG6XXWIreR z>*=xnqYu9Orbx>psbflScjsuy&pXZcnJ3J#M)1GKgfskUeb>eJxNs>0ew*nl^T}T4P_`fKZp~vKt7z7cU%Xcvj4IL&CMe&=u^W>T{W^(%(C@ z5xgfK2NJ4uvX%U6hLv1smkyvCch%p{m9k<(`;Q(V!T_z6!hSpAvGbgI7!lWbX=|ai zP~Zu1Hmj>uewJGxH2=A{hZshcO1{lfN)KjJm;(nYJ?Kc+as@ALhR4Z>uL`Van2D~X zj142{8Vl;be=Y2msnSDlMjC&SGTh}VtCE-yu6%hHc2mJqvZeOw8ko{wmjXT;fGOP+ zG`~(=F+z8lUT?hGL;LADKgQ&BUi_oZvz%2`K^7igkFITK)AsA|L{fFfEVBxg8u(j; zfBQB>Nq9Ef34VD|Bt4mA-Bmn8SsTBjRXkUy!8mL+t{`KrbSOv!8$V4)evi?75F}Z- zT}{e!R~cQtLMJY6wED6Zfm?{bH8Fx^+EBE`7d!*>%{kq4>j}?RlI{yxE9u`c%{-^7 z9;26M^@q-=@$Pu6qtYUH^>F9|NB-i#fw<}#t89(b)G_{d%-{|m<_6TzAZ4uI6UJA5 z`y|b|m%66zyB*``2V0AMsl>&B?pv)Sb#jU}A*1qh`(qVmxW2i*v~#Mix5SbWI`c~} z$b2Qzr>J-WLtSckHcVmW<1JyK>bwuz3_Eh_Xqx&G|BHsm2ifc0*uluejYm^O zP=DQfTl)9XhdnV>`WYzmWKof6EnY?d9@WK`PMhPJuTo~sj`tz){5bl+>p{TdJxFQ| z2|4BrM;cK^V^VdlHOBl2FB=JnnTyLcwPJUx_5Ox)uS?SpFrV}*9KRSmt`sr3MpN;~)zRej4vGX zJVG!!6o`*^d$l=xO{fHHxU2mj?6xpPWoBv2Q~n({JHYt})pBd2dU+QLY(14nGuL^Me`a zvZ250l|U<@5-fxnQ|`%R)=;BN++}>_=0fH0pyx1czDXznN#+O{TBzWAy&cu`L=Tb{ zPBNTjhTIA0!EOWm@mG0&#rDLM$Q5iVAn688p!gEX#kOm$cvx-$Crv)&O1sR6jw9yQ zbtpQ)Cl#CrZrP=_Na|!WN&2TF9D@Ut8-~MUqm0~|ya{o-Fqr|55$fJzDMp`hqJw$D zlQd6)EZy86N7b1ZR+jn3v2d5tx$=P9ll?~%{w!9$cnC)CI#WU{lpTQI->_Y4goh7ti_95AqDLGj zT{Bnl-L4C!p>KR}xN*<6Ug%Kv$k1r2JU58pIRso#02DHf9(|5fYv2kVl0haI5Qd>M z0NXb5UV#$Le_~e9_1T}~{30;#tm#R1uunHpVWT6Jr2%(PL+93P#TuX8n)hmm&F$W! z37WTAYtBrqb2$BFR*QyL3=X>Y^ZI9=8lM*_9H=&QYg0{lp#r;*w%8Wkiu(f@UqD(7 z55PHrK5;l4vX9OZ{vZhWlL`&9c59<&rTzx7h_3Fys~uGti;{tS9}$L-m*Jfq=gUj1iTz^e0IOsUrQ`` zxWa6#QVRTTbhWyvlI&xk{OfO+?rL!>t+&@j_YnTpou6`kTAh0JPweUX@1<@>bZZ96 z0&O|+UQFypT(E>Bbo(f4+1bg24KXKd#|QKwU|7=R%&X4 zIl4h@M@yv+4eYk7SNY&|UH2BX0|S4;%yB*osZ|oI)EvY*TjZ^p3b^vz5v!D2)b-#a zq()^{AwiWc?ITLG{OOJXAr{$A-jz?Mc4NXCnL+p^aB$hcwhBI?mn`UQV+}cE3qRk6 zze9YX_S|?SCbBJt14f5|T|R9YPF@KOYTQt1OaY%tQ4hz%!b5lbHsXN=uMN5e+(ByC zD~~L8_EChDn!m<~JCkwq&|w9-bLh*?kX~z?`k>F|96`aSs^RFpo^y-Tlc|TBcPb}A zQ{5g#02qae&sgej1xxEp?}?=npA6PVf>7!NLg~6(_^&)JL7fcpT4z3YyXC7zr8Gvv5WVnc)Da6W8Jt2m(ZFpy>^625GaO9Gw@nK}<=dg|%#s@%zY3Qgdm znqk*)&!2RrfjKxmU7u$6WulbrbxKdx$1d%bxcon}CYS4}wm$ws)=KZqRCt3{2h2sW z9kb|xY+01_sHBFr*^BN(eunm8N{)4B=VB)-SYvZV@CKrS#gK%Sz{jdgN|A>afW$SeGmCTd-R9P_a z<=ro!yrf_MbmKoixD<>y0!rQ%duKwzAzeQGS;i|hX)N6A5C;A`eDrMuw-qjhCx9r? zx?V67zd}_e9%3`+W{X_fgpz|n=LN(0rt}0y)&bW_&-JgUvz(tw7RPVe%0##YW9U(y zKy4R=N)Ad>7-k%5ZY`5?F7tGXIAijG59#z8**w7+uRvR9QY1QFb?&f+LI>IQ9&;H%lY2FFbY5Qj@`Wl&9`4f7f9RKfRTlXXIZ<;%wBilt zVbSu%#0#6l0u_zltX_(k+f5Y4%5;>w5^Z-7R3wr)F_n{)o;~GGQ24bu7V75un&CFU zqKpSwgG_sd6ZNF;wi^i~5Ml*B<51$OvBNDeFdad8(3|)Mv_hPPz-0M2T(ER*fd@=b z`4=&njv`EVaXRa1lX}_UPHRJ`M9&dyWlJ=>vC!LC_Gv5TY5B{S#_KEyhwUCz9BOoD zb^M^_OLZ-o5x6YyZF70^=?#sSEkkq{?DtvpU}3*a|7h3YiK&$b&E(zL*Cj>^zIs*F z)r|G$86|A4J{TH;F(wYx***(H-A7K8r~WP@O$62CpI~qf^Gp*NBTf-j06IrDLiR>-f{|G0z88=3_3NZ^_4xUAW&#TdRq|ynR1cO<~@JJ5jl4 zQ#LKwbda+z%rZ|y$_cd;=6a~_`pb-?mh5gmk)OCDrRPB2=9}S>Bgua;gDl={kTMoN z$??0i5ZIl!LJ0gX*yc6Q$2GxWyLw4&q=pm%{~N0=I28EXqpz4Fhu6FOgbA3cgVXRzwtCq!SqF3 z@k;Z!+)Jqzw+_zBCxY%VXTll1ckysWMdm;?u^iuAx1$(X1Hs+qz1WjUa4KY{lP;n&=5}{} zG$Vl0By$V|t$UtfbxC|;)tSCeI2R%@QE3{93Gs}JV;bU)%}hR3#$!Q~M#7A&pS2l* zMvwkoEBqU@U^l>jjEiiUf(m%-zheGYnAj$;ynW2a(LXsy3uHLPl(Lb*A3Mt;66*%f zWgMDzsD}?)U2FZ2rd%@difXfF=pwwkVs*`e%AU@Ji3z3Fz<;K=tAVCATz}Ue*BZLV z!t2A|1+Gv#g5a^{BJrvoYGdjIE)OpvNqtPcVc3IiS;ya!cTBU}9jQhLw}(#Mw$M%@ zvT|4IP}}6JM`lAob3cGZ4))cf0ks_1@M&(1?q>*B6{Oa{VBAw+Ay<2g$ z?OAw)xN_HNwe?d+lc5zk#vBW3n15TrLiN8h{UfxxaICXJ_)c($V8)dm{=dHf3)hh# z$`Pp+`+&jF?D{LL&n@YS2!sH#3u>Uz#q!bi$c;A$9lHG1NB>zoMP)$UhG7S zV%2v|RR^0XZ7M*t1W{Q+Sy}Gpiw1G$+1Le#{;sC7peHBy!<63k5vc z9S94rgq|#AIn(Fn2#XmJ^YcVjX$$Jl#W)BZWbnA@!iJu9cZ15t6jEweKsFo{cegB> zhj9<<{u{ykhA0qTe=UUEKVwMN3$Q>$qr@`KVkM8c5n0_p6rre(^>|cmt%}j3)}Tp_ z7)c*ovi7sBXKx#^+kG2dlQwpR2iVEltFy~9Io5FTLGd4KvOyr zm5uo%Cl<`Xt!Hn$)s`2+@Gv}wj+e3j|Gcc8D+s7VTU2fA2jBI>Y}D5`fs3yN9(zE9 zw&my?Iu@#Ae|DpLBEf{vGzet5M8aj_VQ6DO ztjBk*?;E>WxZ%>&NwStO9U5-Q9H{^~)Ge9|?75Qs4`JC@CxBiC-*!GsQvXkGv%Sy2 z0%6fDz|A&k6k_!a6ADU|yZJy&21j)k@GU~5H_pM8pF&Yh3r%$TO@=gO$eEq_Fc#hJ z-R}R(s`h09ohKn!#m;hydZbm7jsN&^^CEaY!eV-hY%4x13CD_NtwSJNuReGupf%Bn zvvZECYl9#M66pio&?F&RTXN?^xBW5(MJ@-zbZc~LrvdI>H@`#c`qvSuM3g=WBu4q| zw&6J+$b~+Us$=Sztp7NLxdHh&MtpgFD-eXi|8aA``1vUih@m|kN_i}8(H9veckkHQ zo?qVKaICi%u=a z2*>r=x1O!dXa%s@ChP=fkg@!~uIlPc478iU!M|odYEOPkEfbTxxEy#soBqbuEJ4B( zH2I4onmm+)~| zZy_Y=P${bWFv$Kf>*+F#(Ia5b8RdVRqOV&{op?yTVr3oh+gSKNEV~7D=y6+!%TksQ zY_8<&dSk%DT(-g_2Q^4jN!Ic|e}!@2-N6VRIHC1doZ1N33XFh{v&dQG|7BIT_Da4O zh`v`~_12)m#2@S#4ULnt{If*Ai0;A-NhWxDIn z*?7eODMt0hkH5w<#KF}~IUHkV$PkdWX=jRM2s*Jo$L|C z^%hAl>%aBIgH!>JEq!rV415>pix|(Bp1;CcXrP!WqKs638*4K0?LxveV$On~X8hrk z#G{*4`xEQ^OkOgv_+KakImI&Mt%TmqlQl5@lj;~Ed{2PJ#uf7Lqj`b(uHTFvaP#rH zLKX<_a4!{_he{8BW#0>X%OE4H?HdBQnqOE$7A+BHUPRZ|?%0>VY!7lHd3OcX1za)EN8llexhHPa<1Q{j1COqICnkJxjx)AQ^)m{3V3OHF8&3v{knrsRlyw& zNS&x|6HMV{ydL2Tv^4itNuq}U&(9<}qf<$stRemfFA5{qkb7Sa20T#oZ=U(@CE1o5 zer&1~!X(Dto%O_S&{-(#TXwFk?7Itw?~c2mxsO1b!gDI=FAU1N<2fsw1TR+e3k;c! zrhfPET;GxhL|9K99yXk)s}Hj$a_C9;AkiHyaETvnW7`53=Q1t>#GRMuZVOtfF#mrc z>~XQD-SA(uv%P2#T48oSCxU~|lMIS))3NQCW9mveQqqJp&A}w|3)+R|`d>^wc$!YP zKXR^p)AV{^oit{+TCvh&AlkEdCH)C$opS_BsFMa%$@K)(?X$hSwt*Q)0Z1}RTmHh! zxU`H*CPm>d+A$+(fx+2juD_vclr5tY4E}?o8n__FoD&PgajmNEQ0aF1@CYs1b3CQ4 zHw-0{YC)Y459tT-V>Cs0!EigktzN>hvmF6%W_4dTQOdgiCAYNYc0y}jCQpVP{x8w0 z+URIG%iGu+VhZod=xR#~;4}dtvGXqo)%#I?{BeQ9eBMd_h_022#?QFTaa?b3C94NF z+tkJw2WAmdu;mm$q`QT_n0hi>Hyq9`;R8WFG#fs0gtGGSH}YxA>0KVs=Q97@=fKF* zIqpB}&PTjGB>YIVcBV^{j&^OD*+((l*tE3PMfmk5ShkIxzE)Y|irWK8aOyXQvhEhL z=+J6%K^a@y14 z(Yo!yS>%>wPU1Y6sJL0{dR$8dWpHYvwzU#5oJONU(I<%$M zK3o!H)-kQy7G9|Y7H(+vUu}R3Zef5;s$`Z&sib+0daMRzTTs%Gp8Uyx5^9YISAk?klCI0D;s`{23M8FiwT&0U78S%FI!v~ zj=hHP2gd>BG`x?9(sx%=schu9pdU}QsP;QxxAcC6Y4Rz46>&-3QdGBl`Qy7sjXFRB zod6oB@#R`r=p=uO-#a=aIhP^Q&iTM_sW)Pl4?TdSwFM*TSAPitNOor7Xrnm|?D`Ck zt7LVheLxdSk5}J#F`@#I-(oJ1cA%H>M;_P6F&L>)OF=y zNoH%jvdNqpt+8B6C0o=aR3=L^#oR3krv-5*1#{0z(L~H{mX4-rI}86Wp_={r4o}ZFme}tjU4`7)HZ_effpo zoc;XM&+#!Rf@w!&vyCNM%HfA{F`2JMKSabfRgA$0+fv|fjulASb{5jP{Rw2a}7B2mq{LJW>|&-;gR>-r4K)=5N@K*oE6&U+ElO45;5@px)O%pkUT4 z>N>rIi!)nK6S8OdhrTH9{vUZAU)kP~x5Sx1e`ot7CD2PJ6z0*#rIvh~X4X$~9o1vY^I1TYpYqDZbzOM=+?ljPfv zOt`Q$0Fm$N0;=WMuzHtSE^m809)`r*dnkfX<5N;eK=|?MQrYxywr?(|nrg%oR#c9V zOifS(0fq!8l-2}(oxj(hy((#Boj;%&57T4&mo@x8Xg#m6jn5bi#{W+xFWH z`LF;g=660Y5tiyYys%uob1AnbMPgP0qkhaQs}Uq8iWPz(WI7x_IY0fN#z+8^V8-@K z>undFhDt{!ld?!mXMQN+U6h#b7SQMdsvf0#g%M*KU53#OEKo|~OGtepvQl&H4wndb zcY04q`Z5mnb0$wmAKY&0QjoPtL)h4D-lMF87|>?f*lvJ-QI#BSQw15&4vn;mJE!h>&FKf_j z(5YB_0w(qC-+z_(dhh|4USuMql!{YG}@wVTnU~8XmvcDQ@v%fENxYoa39KQP}T$t{<*UL6O zK3y>aF_y^aNUXO{X>ZwnwlfYAW0y2bDiV>Dmje6ho7lI6UtUS^U$c@a=uDl$ zQLat(%-XWhe@NW4WTEQ}f#+inh*+L9rcdNv2bL;zGzU)@tGx|gg2+*tPuaH_#nJvk z5h|3q__ghQ!V4G5xp-F14W`K#FM@vVb-DOlC}B~uv@h*@0-np`Gq(~vQ7?7(6H^{E zAdLD%=^SA(c-{eAg6NwkMm)A-I8QcFtV?f?T$$|gxF(9-%L>Q7vYVRkeSBrk?I3&~ z@rC)H4cwb8`)$$;GD@8-;QDhtYHLsDhOV`R3`jqbF%Ke-$m}+iw=dojoe(7639?UU zH^_Sb--VM~C|T1J*=@meO4bs~C5YDD76`-W4uJh-O__SBP-+o|GSS|^2f}mK^g#By z+V-dwS1_xK_B;aU62D7t)sj3)wogm>u|l~g^Fu;1rPc|zh}&W;8uKIj7cTiU_{crPAuCRU6J{QyG#KEGd_nKo zY+Wo=frkK^6}B31c%p~f9C(EBgOK^5Xz9oE@#FPSh|~Xp&<;LD(d_)~Vd*tJ6P>}O z9N>G40ZbT*%0#NdcZ^yv{hV~aPHnw4n{Er>+J8y<|`(<<{?MU}^P%XLQVM5Dre znvJD73}IdQRho7WX!JSo!iy4I2lN-L0>tO7dU_(1vY@Uv-Qy1Q9lhD?4VJo`8=oV- z<+z;CcpR!2P6&J_sU)VOVU<&Jp>e;)RKm0Tb$!EEb!^GwYE8!y!wI+&=SjO_$03() zo#G&RF6NFr!jZ}_PuIWUUQz3?ygSgeM3ZNk=ZV%GYAdvU?!7)2Hrz-b%bLG_O*E~! z(zeJUyiN^V$$MjWS17?&*ChLo>~XCV=_#MJS$Dg2l?GD^=o1~hT@}PO7_K_lTy2bA zi#e_r@A_gM7Uc;M57{9*KM=gl#)RY2mu16JXP1F=QP^;eKXw;#jo+-k=;AhI``O_g zACR8gEtQuB(;n#Uud#Go$a+6sjL`m!D{)bNq<$Bit5HqbRw6yIRo`Xz0s5{Q`hh+b zFGRhzQ+6VASCPB>JiF3x25!f=9&pShb#Od@5@eYyc-EAkL?2|tq+tYn2Y7>MGne_H zJ+4hyN)t+-fFss$ybO@UP`}q$EqC{TZ1?rU{fTn&niSG;Wx1;-g0x|5BQFLrwy{Oa zJfW9w`&)NEH#${J7j{78i?W4A0EP-yB{N(jOyl~PsH%B9jaPn|*8tA3jgjR~1cLJV=`#)VsZ^ujfXS+TbNly9`-n+K!RPJWW5;!+ekNXjeOh zGc7Suv#RM#sz)O2=RTUzPY0$`l{5umtdD!>ToncauGSyueMG_dO22F%JI_d}=dZ*~ zo3_NCH8;7u^D8%r99WtPM456h80tdCS1klhzVm6O*ev&I1o3I(9pD525%3>#)dze) zVOBr*9tZV2$G}(vLkW0~ZXOHSfSIA3Up5E)+`mtB5hyuHjSr-#NJ! zb%v{<0HlV_jK%6LZeVa@Qw&Br8dLgNGL8yU4QCbI7sF}MRBzSji_tX|fldK+q~t)v zl=Eb4qQStKUd7U7quzV?I^*F~M=7?9{%~tq-8QhP6GjEbm#Wh@kAaoB*V2T4z(jt~4JWp~Cu7_r){b0lJAqAjgL39|J4o{{#8hFyIEHeo5NN{81F^Sog zo+yt6jf{|+FHOiX$~xXXhxOdvwl;K5%AH$tQbIVrG_1y#m^jI^-W+h)+l>f0Wofw{ zDqC?gXP9b@UrqA|&lK^hSV;0~IE?E)w-bp0$Hb*jOUucw~`RWP5O_pM+DVg z=qhzNYK+mgGT3#7Q0t?60tpp7?mbDx6Wy(n*0^qGY}Q4bK&V+py3CJAfUI95G@kzZ zI54zNlw&^^iek1c*xjjM`czJl##PkxabSzFa0929M-^a~Av7X;1ZATla=+O0lO zv%a|FM4Uk$&$5*>YG!8VoX73Shg-&{gy;t?&UhoGD#pzhBcDgWHSpCQ1D-7%*YHO? zeXMnw5_d5x(v${i&0Hdd7UqqfnCZCCdPYSeT}Ho8^vE6*0>pw;w#dTrP^MC2+GfPs z5{gp}8o(=>FB~@JLhpg>^g{?mfQ0{U;feIyz6h{T5wNd&RDrqEYjXH1ZGC<7{DsVm UTc(yoo51U=1;)I@^vd1;01N?fr2qf` literal 0 HcmV?d00001 diff --git a/lang/golang/writer/write_test.go b/lang/golang/writer/write_test.go index aee60bba..860d5934 100644 --- a/lang/golang/writer/write_test.go +++ b/lang/golang/writer/write_test.go @@ -140,7 +140,6 @@ import "fmt" name: "add", args: args{ file: &uniast.File{ - Name: "gls.go", Imports: []uniast.Import{ { Path: `"runtime"`, diff --git a/lang/lsp/spec.go b/lang/lsp/spec.go index 454dc2c9..cf2a1ab2 100644 --- a/lang/lsp/spec.go +++ b/lang/lsp/spec.go @@ -18,6 +18,7 @@ import ( "github.com/cloudwego/abcoder/lang/uniast" ) +// Detailed implementation used for collect LSP symbols and transform them to UniAST type LanguageSpec interface { // initialize a root workspace, and return all modules [modulename=>abs-path] inside WorkSpace(root string) (map[string]string, error) @@ -65,7 +66,8 @@ type LanguageSpec interface { GetUnloadedSymbol(from Token, define Location) (string, error) } -// Patcher is used to patch the AST of a module +// ModulePatcher supplements some information for module type ModulePatcher interface { + // Patch is called after collect all symbol Patch(ast *uniast.Module) } diff --git a/lang/uniast/ast.go b/lang/uniast/ast.go index 52c434eb..efbe6368 100644 --- a/lang/uniast/ast.go +++ b/lang/uniast/ast.go @@ -93,7 +93,6 @@ func NewRepository(name string) Repository { } type File struct { - Name string Path string Imports []Import `json:",omitempty"` Package *PkgPath `json:",omitempty"` @@ -124,7 +123,6 @@ func (i Import) Equals(other Import) bool { func NewFile(path string) *File { // abs, _ := filepath.Abs(path) ret := File{ - Name: filepath.Base(path), Path: path, } return &ret diff --git a/lang/uniast/node.go b/lang/uniast/node.go index e0960681..1112b9ea 100644 --- a/lang/uniast/node.go +++ b/lang/uniast/node.go @@ -171,19 +171,28 @@ func (r *Repository) BuildGraph() error { return nil } +// RelationKind type RelationKind string const ( + // DEPENDENCY: the target node is a dependency of the current node DEPENDENCY RelationKind = "Dependency" - REFERENCE RelationKind = "Reference" + // REFERENCE: the target node is a reference of the current node + REFERENCE RelationKind = "Reference" ) +// Relation between two nodes type Relation struct { - Kind RelationKind - Identity // target node - Line int - Desc *string `json:",omitempty"` - Codes *string `json:",omitempty"` + // Kind of the relation + Kind RelationKind + // target node + Identity + // start line-offset of the target token related to the current node's codes + Line int + // information about this relation + Desc *string `json:",omitempty"` + // related codes representing this relation, comming from current node's codes + Codes *string `json:",omitempty"` } // type marshalerRelation struct { diff --git a/lang/write.go b/lang/write.go index 1e8d14f6..a1eb281b 100644 --- a/lang/write.go +++ b/lang/write.go @@ -35,6 +35,9 @@ type WriteOptions struct { // Write writes the AST to the output directory. func Write(ctx context.Context, repo *uniast.Repository, args WriteOptions) error { for mpath, m := range repo.Modules { + if m.IsExternal() { + continue + } var w uniast.Writer switch m.Language { case uniast.Golang: From dd4b22cf0d463ec003efb48ab2f17bed387d40c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Thu, 17 Apr 2025 21:48:35 +0800 Subject: [PATCH 07/15] remove --- docs/localsession.json | 4487 ++++ docs/metainfo.json | 30250 ++++++++++++++++++++++++++ docs/uniast-zh.md | 10 +- out/localsession/backup/metainfo.go | 97 - out/localsession/gls.go | 145 - out/localsession/go.mod | 14 - out/localsession/go.sum | 21 - out/localsession/manager.go | 190 - out/localsession/session.go | 158 - out/localsession/stubs.go | 74 - 10 files changed, 34742 insertions(+), 704 deletions(-) create mode 100644 docs/localsession.json create mode 100644 docs/metainfo.json delete mode 100644 out/localsession/backup/metainfo.go delete mode 100644 out/localsession/gls.go delete mode 100644 out/localsession/go.mod delete mode 100644 out/localsession/go.sum delete mode 100644 out/localsession/manager.go delete mode 100644 out/localsession/session.go delete mode 100644 out/localsession/stubs.go diff --git a/docs/localsession.json b/docs/localsession.json new file mode 100644 index 00000000..fc1cb293 --- /dev/null +++ b/docs/localsession.json @@ -0,0 +1,4487 @@ +{ + "id": "/Users/bytedance/golang/work/abcoder/tmp/localsession", + "Modules": { + "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": { + "Language": "go", + "Version": "v0.0.0-20230728082804-614d0af6619b", + "Name": "github.com/bytedance/gopkg", + "Dir": "", + "Packages": { + "github.com/bytedance/gopkg/cloud/metainfo": { + "IsMain": false, + "IsTest": false, + "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", + "Functions": { + "CountPersistentValues": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", + "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", + "Name": "CountPersistentValues", + "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", + "Line": 215, + "StartOffset": 0, + "EndOffset": 0, + "Content": "// CountPersistentValues counts the length of persisten KV pairs\nfunc CountPersistentValues(ctx context.Context) int {\n\tif n := getNode(ctx); n == nil {\n\t\treturn 0\n\t} else {\n\t\treturn len(n.persistent)\n\t}\n}" + }, + "GetAllPersistentValues": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", + "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", + "Name": "GetAllPersistentValues", + "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", + "Line": 147, + "StartOffset": 0, + "EndOffset": 0, + "Content": "// GetAllPersistentValues retrieves all persistent values.\nfunc GetAllPersistentValues(ctx context.Context) (m map[string]string) {\n\tif n := getNode(ctx); n != nil {\n\t\tif cnt := len(n.persistent); cnt \u003e 0 {\n\t\t\tm = make(map[string]string, cnt)\n\t\t\tfor _, kv := range n.persistent {\n\t\t\t\tm[kv.key] = kv.val\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}" + }, + "RangePersistentValues": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", + "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", + "Name": "RangePersistentValues", + "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", + "Line": 161, + "StartOffset": 0, + "EndOffset": 0, + "Content": "// RangePersistentValues calls f sequentially for each persistent kv.\n// If f returns false, range stops the iteration.\nfunc RangePersistentValues(ctx context.Context, f func(k, v string) bool) {\n\tn := getNode(ctx)\n\tif n == nil {\n\t\treturn\n\t}\n\n\tfor _, kv := range n.persistent {\n\t\tif !f(kv.key, kv.val) {\n\t\t\tbreak\n\t\t}\n\t}\n}" + }, + "WithPersistentValues": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", + "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", + "Name": "WithPersistentValues", + "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", + "Line": 234, + "StartOffset": 0, + "EndOffset": 0, + "Content": "// WithPersistentValues sets the values into the context by the given keys.\n// This value will be propagated to the services along the RPC call chain.\nfunc WithPersistentValues(ctx context.Context, kvs ...string) context.Context {\n\tif len(kvs)%2 != 0 {\n\t\tpanic(\"len(kvs) must be even\")\n\t}\n\n\tkvLen := len(kvs) / 2\n\n\tif ctx == nil || len(kvs) == 0 {\n\t\treturn ctx\n\t}\n\n\tvar n *node\n\tif m := getNode(ctx); m != nil {\n\t\tnn := *m\n\t\tn = \u0026nn\n\t\tn.persistent = make([]kv, len(m.persistent), len(m.persistent)+kvLen)\n\t\tcopy(n.persistent, m.persistent)\n\t} else {\n\t\tn = \u0026node{\n\t\t\tpersistent: make([]kv, 0, kvLen),\n\t\t}\n\t}\n\n\tfor i := 0; i \u003c kvLen; i++ {\n\t\tkey := getKey(kvs, i)\n\t\tval := getValue(kvs, i)\n\n\t\tif len(key) == 0 || len(val) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif idx, ok := search(n.persistent, key); ok {\n\t\t\tif n.persistent[idx].val != val {\n\t\t\t\tn.persistent[idx].val = val\n\t\t\t}\n\t\t} else {\n\t\t\tn.persistent = append(n.persistent, kv{key: key, val: val})\n\t\t}\n\t}\n\n\treturn withNode(ctx, n)\n}" + } + }, + "Types": {}, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": {} + }, + "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}", + "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": "com/cloudwego/localsession.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}", + "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": "com/cloudwego/localsession.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}", + "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}", + "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}", + "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}", + "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}", + "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": "com/cloudwego/localsession.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}", + "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}", + "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}", + "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}", + "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}", + "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": "com/cloudwego/localsession.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{}" + }, + "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" + }, + "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" + }, + "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}", + "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}", + "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}", + "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}", + "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}", + "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}", + "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": "com/cloudwego/localsession.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}", + "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}", + "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}", + "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": "com/cloudwego/localsession.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}", + "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}", + "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": "com/cloudwego/localsession.Load", + "File": "manager.go", + "Line": 152, + "StartOffset": 3902, + "EndOffset": 3906 + }, + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.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}", + "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": "com/cloudwego/localsession.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}", + "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}", + "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}", + "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}", + "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}", + "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}", + "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": "com/cloudwego/localsession.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}", + "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": 73, + "StartOffset": 1629, + "EndOffset": 1891, + "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}", + "FunctionCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "File": "stubs.go", + "Line": 74, + "StartOffset": 1659, + "EndOffset": 1671 + }, + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "setPprofLabel", + "File": "stubs.go", + "Line": 87, + "StartOffset": 1872, + "EndOffset": 1885 + } + ], + "Types": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "labelMap", + "File": "stubs.go", + "Line": 81, + "StartOffset": 1774, + "EndOffset": 1782 + } + ], + "GlobalVars": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Pprof_Label_Session_ID", + "File": "stubs.go", + "Line": 78, + "StartOffset": 1720, + "EndOffset": 1742 + } + ] + }, + "getPproLabel": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "File": "stubs.go", + "Line": 34, + "StartOffset": 872, + "EndOffset": 963, + "Content": "//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap", + "Results": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "labelMap", + "File": "stubs.go", + "Line": 34, + "StartOffset": 954, + "EndOffset": 963 + } + ] + }, + "getSessionID": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getSessionID", + "File": "stubs.go", + "Line": 57, + "StartOffset": 1338, + "EndOffset": 1627, + "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}", + "Results": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionID", + "File": "stubs.go", + "Line": 57, + "StartOffset": 1359, + "EndOffset": 1368 + } + ], + "FunctionCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "File": "stubs.go", + "Line": 58, + "StartOffset": 1384, + "EndOffset": 1396 + } + ], + "Types": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionID", + "File": "stubs.go", + "Line": 69, + "StartOffset": 1603, + "EndOffset": 1612 + } + ], + "GlobalVars": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Pprof_Label_Session_ID", + "File": "stubs.go", + "Line": 62, + "StartOffset": 1453, + "EndOffset": 1475 + } + ] + }, + "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": 676, + "EndOffset": 741, + "Content": "//go:nocheckptr\nfunc goID() uint64 {\n\treturn uint64(gls.GoID())\n}", + "FunctionCalls": [ + { + "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", + "PkgPath": "github.com/modern-go/gls", + "Name": "GoID", + "File": "stubs.go", + "Line": 25, + "StartOffset": 732, + "EndOffset": 736 + } + ] + }, + "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}", + "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": 31, + "StartOffset": 776, + "EndOffset": 870, + "Content": "//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)", + "Params": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "labelMap", + "File": "stubs.go", + "Line": 31, + "StartOffset": 858, + "EndOffset": 869 + } + ] + }, + "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}", + "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}", + "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}", + "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": 38, + "StartOffset": 1013, + "EndOffset": 1336, + "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\t\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}", + "Params": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionID", + "File": "stubs.go", + "Line": 38, + "StartOffset": 1036, + "EndOffset": 1048 + } + ], + "FunctionCalls": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getPproLabel", + "File": "stubs.go", + "Line": 39, + "StartOffset": 1058, + "EndOffset": 1070 + }, + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "setPprofLabel", + "File": "stubs.go", + "Line": 54, + "StartOffset": 1317, + "EndOffset": 1330 + } + ], + "Types": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "labelMap", + "File": "stubs.go", + "Line": 41, + "StartOffset": 1081, + "EndOffset": 1089 + } + ], + "GlobalVars": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Pprof_Label_Session_ID", + "File": "stubs.go", + "Line": 47, + "StartOffset": 1202, + "EndOffset": 1224 + } + ] + } + }, + "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" + }, + { + "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": 28, + "StartOffset": 743, + "EndOffset": 774, + "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}", + "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": 36, + "StartOffset": 971, + "EndOffset": 1011, + "Content": "const Pprof_Label_Session_ID = \"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, + "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 = \"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/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}", + "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}", + "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}", + "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}", + "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}", + "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": {} + } + }, + "Dependencies": { + "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", + "github.com/modern-go/gls": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", + "github.com/stretchr/testify": "github.com/stretchr/testify@v1.7.0" + }, + "Files": { + ".github/ISSUE_TEMPLATE/bug_report.md": { + "Name": "bug_report.md", + "Path": ".github/ISSUE_TEMPLATE/bug_report.md" + }, + ".github/ISSUE_TEMPLATE/feature_request.md": { + "Name": "feature_request.md", + "Path": ".github/ISSUE_TEMPLATE/feature_request.md" + }, + ".github/PULL_REQUEST_TEMPLATE.md": { + "Name": "PULL_REQUEST_TEMPLATE.md", + "Path": ".github/PULL_REQUEST_TEMPLATE.md" + }, + ".github/workflows/release-check.yml": { + "Name": "release-check.yml", + "Path": ".github/workflows/release-check.yml" + }, + ".github/workflows/tests.yml": { + "Name": "tests.yml", + "Path": ".github/workflows/tests.yml" + }, + ".gitignore": { + "Name": ".gitignore", + "Path": ".gitignore" + }, + ".golangci.yaml": { + "Name": ".golangci.yaml", + "Path": ".golangci.yaml" + }, + ".licenserc.yaml": { + "Name": ".licenserc.yaml", + "Path": ".licenserc.yaml" + }, + "CODE_OF_CONDUCT.md": { + "Name": "CODE_OF_CONDUCT.md", + "Path": "CODE_OF_CONDUCT.md" + }, + "CONTRIBUTING.md": { + "Name": "CONTRIBUTING.md", + "Path": "CONTRIBUTING.md" + }, + "LICENSE-APACHE": { + "Name": "LICENSE-APACHE", + "Path": "LICENSE-APACHE" + }, + "README.md": { + "Name": "README.md", + "Path": "README.md" + }, + "_typos.toml": { + "Name": "_typos.toml", + "Path": "_typos.toml" + }, + "api_test.go": { + "Name": "api_test.go", + "Path": "api_test.go" + }, + "backup/metainfo.go": { + "Name": "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": { + "Name": "metainfo_test.go", + "Path": "backup/metainfo_test.go" + }, + "check_branch_name.sh": { + "Name": "check_branch_name.sh", + "Path": "check_branch_name.sh" + }, + "example_test.go": { + "Name": "example_test.go", + "Path": "example_test.go" + }, + "gls.go": { + "Name": "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": { + "Name": "go.mod", + "Path": "go.mod" + }, + "go.sum": { + "Name": "go.sum", + "Path": "go.sum" + }, + "manager.go": { + "Name": "manager.go", + "Path": "manager.go", + "Imports": [ + { + "Path": "\"sync\"" + }, + { + "Path": "\"sync/atomic\"" + }, + { + "Path": "\"time\"" + } + ], + "Package": "github.com/cloudwego/localsession" + }, + "session.go": { + "Name": "session.go", + "Path": "session.go", + "Imports": [ + { + "Path": "\"context\"" + }, + { + "Path": "\"sync\"" + }, + { + "Path": "\"sync/atomic\"" + }, + { + "Path": "\"time\"" + } + ], + "Package": "github.com/cloudwego/localsession" + }, + "stubs.go": { + "Name": "stubs.go", + "Path": "stubs.go", + "Imports": [ + { + "Path": "\"strconv\"" + }, + { + "Alias": "_", + "Path": "\"unsafe\"" + }, + { + "Path": "\"github.com/modern-go/gls\"" + } + ], + "Package": "github.com/cloudwego/localsession" + } + } + }, + "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5": { + "Language": "go", + "Version": "v0.0.0-20220109145502-612d0167dce5", + "Name": "github.com/modern-go/gls", + "Dir": "", + "Packages": { + "github.com/modern-go/gls": { + "IsMain": false, + "IsTest": false, + "PkgPath": "github.com/modern-go/gls", + "Functions": { + "GoID": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", + "PkgPath": "github.com/modern-go/gls", + "Name": "GoID", + "File": "../../../../pkg/mod/github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5/goid.go", + "Line": 21, + "StartOffset": 0, + "EndOffset": 0, + "Content": "// GoID returns the goroutine id of current goroutine\nfunc GoID() int64 {\n\tg := getg()\n\tp_goid := (*int64)(unsafe.Pointer(g + goidOffset))\n\treturn *p_goid\n}" + } + }, + "Types": {}, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": {} + } + }, + "Graph": { + "?#int": { + "ModPath": "", + "PkgPath": "", + "Name": "int", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "defaultShardCap", + "Line": 0 + } + ] + }, + "?sync#Once": { + "ModPath": "", + "PkgPath": "sync", + "Name": "Once", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "defaultManagerOnce", + "Line": 0 + } + ] + }, + "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": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands", + "Line": 25 + } + ] + }, + "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": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands", + "Line": 30 + } + ] + }, + "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": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands", + "Line": 43 + } + ] + }, + "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": "goID", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "GoSession", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": "goID", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Go", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": "defaultManagerObj", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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 + } + ], + "References": null + }, + "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": "UnbindSession", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "BindSession", + "Line": 9 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "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": "com/cloudwego/localsession.Close", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "defaultManagerObj", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "DefaultManagerOptions", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "Options", + "Line": 2 + } + ] + }, + "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", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionCtxWithTimeout", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": "NewSessionCtx", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionCtx.Disable", + "Line": 4 + } + ], + "References": null + }, + "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": "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 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager", + "Line": 8 + } + ], + "References": [ + { + "Kind": "Reference", + "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", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "NewSessionMap", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Disable", + "Line": 4 + } + ], + "References": null + }, + "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": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getSessionID", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionID", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "clearSessionID", + "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": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "newShard", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.GC", + "Line": 8 + } + ] + }, + "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", + "Dependencies": null, + "References": null + }, + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": null + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionCtx", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionCtx", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionCtx.WithValue", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "RecoverCtxOnDemands", + "Line": 8 + } + ] + }, + "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": null, + "References": [ + { + "Kind": "Reference", + "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": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": "SessionCtx", + "Line": 2 + } + ], + "References": null + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionID": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionID", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "newShard", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.GC", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getSessionID", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "UnbindSession", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "BindSession", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "CurSession", + "Line": 4 + } + ] + }, + "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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionManager", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "defaultManagerObj", + "Line": 0 + } + ] + }, + "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": "transmitSessionID", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Store", + "Line": 3 + } + ], + "References": null + }, + "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": null, + "References": null + }, + "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 + } + ], + "References": null + }, + "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": "getSessionID", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Load", + "Line": 2 + } + ], + "References": null + }, + "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": null, + "References": null + }, + "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": "clearSessionID", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Load", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Delete", + "Line": 5 + } + ], + "References": null + }, + "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": "com/cloudwego/localsession.GC", + "Line": 7 + } + ], + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionMap", + "Line": 3 + } + ] + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": "com/cloudwego/localsession.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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "GoSession", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "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": "SESSION_CONFIG_KEY", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.UnbindSession", + "Line": 9 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.BindSession": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.BindSession", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "BindSession", + "Line": 4 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Close": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Close", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "InitDefaultManager", + "Line": 6 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Delete": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Delete", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.UnbindSession", + "Line": 5 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Disable": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Disable", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionMapWithTimeout", + "Line": 4 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.GC": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.GC", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.startGC", + "Line": 7 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.GetSession": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.GetSession", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "CurSession", + "Line": 4 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Load": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Load", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.UnbindSession", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.GetSession", + "Line": 2 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Store": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.Store", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.BindSession", + "Line": 3 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.UnbindSession": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "com/cloudwego/localsession.UnbindSession", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "UnbindSession", + "Line": 4 + } + ] + }, + "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", + "Line": 0 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "UnbindSession", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "BindSession", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "InitDefaultManager", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "CurSession", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "GetDefaultManager", + "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", + "Line": 0 + } + ], + "References": null + }, + "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", + "Line": 0 + } + ], + "References": [ + { + "Kind": "Reference", + "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": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "getSessionID", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionID", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "clearSessionID", + "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": "getPproLabel", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionID", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Pprof_Label_Session_ID", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "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/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", + "PkgPath": "github.com/modern-go/gls", + "Name": "GoID", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "UnbindSession", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "BindSession", + "Line": 4 + }, + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionID", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "clearSessionID", + "Line": 8 + } + ] + }, + "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", + "Line": 1 + }, + { + "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": "Reference", + "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": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "transmitSessionID", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "clearSessionID", + "Line": 14 + } + ] + }, + "github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard": { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "shard", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "newShard", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "NewSessionManager", + "Line": 4 + } + ] + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": null, + "References": null + }, + "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": "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": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.BindSession", + "Line": 6 + } + ] + }, + "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 + } + ], + "References": null + }, + "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", + "Dependencies": null, + "References": null + }, + "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 + } + ], + "References": null + }, + "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", + "Name": "DefaultManagerOptions", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "Options", + "Line": 1 + } + ], + "References": null + }, + "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", + "Name": "InitDefaultManager", + "Line": 2 + } + ], + "References": null + }, + "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", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "ManagerOptions", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession/backup", + "Name": "DefaultOptions", + "Line": 1 + } + ] + }, + "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", + "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": null + }, + "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5?github.com/modern-go/gls#GoID": { + "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", + "PkgPath": "github.com/modern-go/gls", + "Name": "GoID", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "goID", + "Line": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/docs/metainfo.json b/docs/metainfo.json new file mode 100644 index 00000000..2df96fcd --- /dev/null +++ b/docs/metainfo.json @@ -0,0 +1,30250 @@ +{ + "id": "/Users/bytedance/golang/work/abcoder/tmp/metainfo", + "Modules": { + "": { + "Language": "rust", + "Version": "", + "Name": "", + "Dir": "", + "Packages": { + "alloc::boxed": { + "IsMain": false, + "IsTest": false, + "PkgPath": "alloc::boxed", + "Functions": { + "new": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "boxed.rs", + "Line": 273, + "StartOffset": 10171, + "EndOffset": 10174, + "Content": "new" + } + }, + "Types": { + "Box": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "boxed.rs", + "Line": 231, + "StartOffset": 8929, + "EndOffset": 8932, + "Content": "Box" + } + }, + "Vars": {} + }, + "alloc::boxed::convert": { + "IsMain": false, + "IsTest": false, + "PkgPath": "alloc::boxed::convert", + "Functions": { + "downcast": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", + "File": "convert.rs", + "Line": 482, + "StartOffset": 14426, + "EndOffset": 14434, + "Content": "downcast" + } + }, + "Types": {}, + "Vars": {} + }, + "alloc::str": { + "IsMain": false, + "IsTest": false, + "PkgPath": "alloc::str", + "Functions": { + "to_owned": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::str", + "Name": "to_owned", + "File": "str.rs", + "Line": 210, + "StartOffset": 7690, + "EndOffset": 7698, + "Content": "to_owned" + } + }, + "Types": {}, + "Vars": {} + }, + "alloc::string": { + "IsMain": false, + "IsTest": false, + "PkgPath": "alloc::string", + "Functions": { + "push": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "File": "string.rs", + "Line": 1419, + "StartOffset": 48369, + "EndOffset": 48373, + "Content": "push" + }, + "push_str": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "File": "string.rs", + "Line": 1126, + "StartOffset": 39142, + "EndOffset": 39150, + "Content": "push_str" + }, + "with_capacity": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "string.rs", + "Line": 489, + "StartOffset": 15651, + "EndOffset": 15664, + "Content": "with_capacity" + } + }, + "Types": { + "String": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "string.rs", + "Line": 362, + "StartOffset": 11508, + "EndOffset": 11514, + "Content": "String", + "Methods": { + "eq": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cString\u003e.eq" + } + } + } + }, + "Vars": {} + }, + "alloc::sync": { + "IsMain": false, + "IsTest": false, + "PkgPath": "alloc::sync", + "Functions": { + "as_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "sync.rs", + "Line": 3917, + "StartOffset": 139295, + "EndOffset": 139301, + "Content": "as_ref" + }, + "clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "File": "sync.rs", + "Line": 2163, + "StartOffset": 77402, + "EndOffset": 77407, + "Content": "clone" + }, + "new": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "File": "sync.rs", + "Line": 386, + "StartOffset": 14609, + "EndOffset": 14612, + "Content": "new" + } + }, + "Types": { + "Arc": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "sync.rs", + "Line": 240, + "StartOffset": 8930, + "EndOffset": 8933, + "Content": "Arc" + } + }, + "Vars": {} + }, + "core::any": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::any", + "Functions": { + "downcast_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "any.rs", + "Line": 538, + "StartOffset": 16683, + "EndOffset": 16695, + "Content": "downcast_mut" + }, + "downcast_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "File": "any.rs", + "Line": 510, + "StartOffset": 15957, + "EndOffset": 15969, + "Content": "downcast_ref" + }, + "of": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "any.rs", + "Line": 742, + "StartOffset": 24064, + "EndOffset": 24066, + "Content": "of" + } + }, + "Types": { + "Any": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::any", + "Name": "Any", + "File": "any.rs", + "Line": 113, + "StartOffset": 4391, + "EndOffset": 4394, + "Content": "Any" + }, + "TypeId": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "any.rs", + "Line": 710, + "StartOffset": 23176, + "EndOffset": 23182, + "Content": "TypeId" + } + }, + "Vars": {} + }, + "core::borrow": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::borrow", + "Functions": {}, + "Types": { + "Borrow": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::borrow", + "Name": "Borrow", + "File": "borrow.rs", + "Line": 157, + "StartOffset": 6609, + "EndOffset": 6615, + "Content": "Borrow" + } + }, + "Vars": {} + }, + "core::char::methods": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::char::methods", + "Functions": { + "to_ascii_lowercase": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "File": "methods.rs", + "Line": 1254, + "StartOffset": 41973, + "EndOffset": 41991, + "Content": "to_ascii_lowercase" + }, + "to_ascii_uppercase": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "File": "methods.rs", + "Line": 1220, + "StartOffset": 40770, + "EndOffset": 40788, + "Content": "to_ascii_uppercase" + } + }, + "Types": {}, + "Vars": {} + }, + "core::cmp": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::cmp", + "Functions": {}, + "Types": { + "Eq": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "Eq", + "File": "cmp.rs", + "Line": 334, + "StartOffset": 12091, + "EndOffset": 12093, + "Content": "Eq" + }, + "Ord": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "Ord", + "File": "cmp.rs", + "Line": 946, + "StartOffset": 31300, + "EndOffset": 31303, + "Content": "Ord" + }, + "PartialEq": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "PartialEq", + "File": "cmp.rs", + "Line": 248, + "StartOffset": 9080, + "EndOffset": 9089, + "Content": "PartialEq" + }, + "PartialOrd": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "PartialOrd", + "File": "cmp.rs", + "Line": 1329, + "StartOffset": 43927, + "EndOffset": 43937, + "Content": "PartialOrd" + } + }, + "Vars": {} + }, + "core::convert": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::convert", + "Functions": { + "as_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "mod.rs", + "Line": 221, + "StartOffset": 8200, + "EndOffset": 8206, + "Content": "as_ref" + } + }, + "Types": { + "AsRef": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "mod.rs", + "Line": 218, + "StartOffset": 8029, + "EndOffset": 8034, + "Content": "AsRef" + }, + "From": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "From", + "File": "mod.rs", + "Line": 582, + "StartOffset": 22549, + "EndOffset": 22553, + "Content": "From" + }, + "Into": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "mod.rs", + "Line": 447, + "StartOffset": 16452, + "EndOffset": 16456, + "Content": "Into" + } + }, + "Vars": {} + }, + "core::default": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::default", + "Functions": { + "default": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "File": "default.rs", + "Line": 139, + "StartOffset": 3341, + "EndOffset": 3348, + "Content": "default" + } + }, + "Types": { + "Default": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "default.rs", + "Line": 107, + "StartOffset": 2496, + "EndOffset": 2503, + "Content": "Default" + } + }, + "Vars": {} + }, + "core::fmt": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::fmt", + "Functions": { + "debug_struct": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "File": "mod.rs", + "Line": 2228, + "StartOffset": 75498, + "EndOffset": 75510, + "Content": "debug_struct" + } + }, + "Types": { + "Debug": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Debug", + "File": "mod.rs", + "Line": 870, + "StartOffset": 31512, + "EndOffset": 31517, + "Content": "Debug" + }, + "Display": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Display", + "File": "mod.rs", + "Line": 987, + "StartOffset": 35722, + "EndOffset": 35729, + "Content": "Display" + }, + "Formatter": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Formatter", + "File": "mod.rs", + "Line": 532, + "StartOffset": 20036, + "EndOffset": 20045, + "Content": "Formatter" + }, + "Result": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Result", + "File": "mod.rs", + "Line": 79, + "StartOffset": 2322, + "EndOffset": 2328, + "Content": "Result" + } + }, + "Vars": {} + }, + "core::fmt::builders": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::fmt::builders", + "Functions": { + "finish": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "File": "builders.rs", + "Line": 244, + "StartOffset": 7364, + "EndOffset": 7370, + "Content": "finish" + } + }, + "Types": {}, + "Vars": {} + }, + "core::hash": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::hash", + "Functions": {}, + "Types": { + "BuildHasher": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::hash", + "Name": "BuildHasher", + "File": "mod.rs", + "Line": 637, + "StartOffset": 20860, + "EndOffset": 20871, + "Content": "BuildHasher" + }, + "Hash": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::hash", + "Name": "Hash", + "File": "mod.rs", + "Line": 186, + "StartOffset": 5394, + "EndOffset": 5398, + "Content": "Hash" + } + }, + "Vars": {} + }, + "core::iter::traits::collect": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::iter::traits::collect", + "Functions": {}, + "Types": { + "Extend": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::iter::traits::collect", + "Name": "Extend", + "File": "collect.rs", + "Line": 397, + "StartOffset": 12174, + "EndOffset": 12180, + "Content": "Extend" + }, + "FromIterator": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::iter::traits::collect", + "Name": "FromIterator", + "File": "collect.rs", + "Line": 134, + "StartOffset": 4174, + "EndOffset": 4186, + "Content": "FromIterator" + }, + "IntoIterator": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::iter::traits::collect", + "Name": "IntoIterator", + "File": "collect.rs", + "Line": 285, + "StartOffset": 8896, + "EndOffset": 8908, + "Content": "IntoIterator" + } + }, + "Vars": {} + }, + "core::iter::traits::iterator": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::iter::traits::iterator", + "Functions": { + "map": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "File": "iterator.rs", + "Line": 745, + "StartOffset": 25852, + "EndOffset": 25855, + "Content": "map" + } + }, + "Types": {}, + "Vars": {} + }, + "core::macros": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::macros", + "Functions": { + "alloc_error_handler": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "alloc_error_handler", + "File": "mod.rs", + "Line": 1806, + "StartOffset": 63853, + "EndOffset": 64246, + "Content": "/// Attribute macro applied to a function to register it as a handler for allocation failure.\n ///\n /// See also [`std::alloc::handle_alloc_error`](../../../std/alloc/fn.handle_alloc_error.html).\n #[unstable(feature = \"alloc_error_handler\", issue = \"51540\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro alloc_error_handler($item:item) {\n /* compiler built-in */\n }" + }, + "assert": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "mod.rs", + "Line": 1624, + "StartOffset": 57604, + "EndOffset": 59588, + "Content": "/// Asserts that a boolean expression is `true` at runtime.\n ///\n /// This will invoke the [`panic!`] macro if the provided expression cannot be\n /// evaluated to `true` at runtime.\n ///\n /// # Uses\n ///\n /// Assertions are always checked in both debug and release builds, and cannot\n /// be disabled. See [`debug_assert!`] for assertions that are not enabled in\n /// release builds by default.\n ///\n /// Unsafe code may rely on `assert!` to enforce run-time invariants that, if\n /// violated could lead to unsafety.\n ///\n /// Other use-cases of `assert!` include testing and enforcing run-time\n /// invariants in safe code (whose violation cannot result in unsafety).\n ///\n /// # Custom Messages\n ///\n /// This macro has a second form, where a custom panic message can\n /// be provided with or without arguments for formatting. See [`std::fmt`]\n /// for syntax for this form. Expressions used as format arguments will only\n /// be evaluated if the assertion fails.\n ///\n /// [`std::fmt`]: ../std/fmt/index.html\n ///\n /// # Examples\n ///\n /// ```\n /// // the panic message for these assertions is the stringified value of the\n /// // expression given.\n /// assert!(true);\n ///\n /// fn some_computation() -\u003e bool { true } // a very simple function\n ///\n /// assert!(some_computation());\n ///\n /// // assert with a custom message\n /// let x = true;\n /// assert!(x, \"x wasn't true!\");\n ///\n /// let a = 3; let b = 27;\n /// assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"assert_macro\"]\n #[allow_internal_unstable(\n core_intrinsics,\n panic_internals,\n edition_panic,\n generic_assert_internals\n )]\n macro_rules! assert {\n ($cond:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n ($cond:expr, $($arg:tt)+) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "assert_eq": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "mod.rs", + "Line": 15, + "StartOffset": -1, + "EndOffset": 2630, + "Content": "/// Asserts that two expressions are equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_eq!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_eq!`]: crate::debug_assert_eq\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// assert_eq!(a, b);\n///\n/// assert_eq!(a, b, \"we are testing addition with {} and {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_eq_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_eq {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" + }, + "assert_matches": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_matches", + "File": "mod.rs", + "Line": 127, + "StartOffset": -1, + "EndOffset": 7572, + "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `assert!(matches!(value, pattern))`, because it can print\n/// the debug representation of the actual value shape that did not meet expectations. In contrast,\n/// using [`assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_matches!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_matches!`]: crate::assert_matches::debug_assert_matches\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// assert_matches!(a, Some(_));\n/// assert_matches!(b, Some(_));\n///\n/// assert_matches!(a, Some(345));\n/// assert_matches!(a, Some(345) | None);\n///\n/// // assert_matches!(a, None); // panics\n/// // assert_matches!(b, Some(345)); // panics\n/// // assert_matches!(b, Some(345) | None); // panics\n///\n/// assert_matches!(a, Some(x) if x \u003e 100);\n/// // assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(panic_internals)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro assert_matches {\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::None\n );\n }\n }\n },\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $($arg:tt)+) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::Some($crate::format_args!($($arg)+))\n );\n }\n }\n },\n}" + }, + "assert_ne": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_ne", + "File": "mod.rs", + "Line": 71, + "StartOffset": -1, + "EndOffset": 4838, + "Content": "/// Asserts that two expressions are not equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_ne!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_ne!`]: crate::debug_assert_ne\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// assert_ne!(a, b);\n///\n/// assert_ne!(a, b, \"we are testing that the values are not equal\");\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_ne_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_ne {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026($left), \u0026($right)) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" + }, + "autodiff": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "autodiff", + "File": "mod.rs", + "Line": 1607, + "StartOffset": 56722, + "EndOffset": 57567, + "Content": "/// Automatic Differentiation macro which allows generating a new function to compute\n /// the derivative of a given function. It may only be applied to a function.\n /// The expected usage syntax is\n /// `#[autodiff(NAME, MODE, INPUT_ACTIVITIES, OUTPUT_ACTIVITY)]`\n /// where:\n /// NAME is a string that represents a valid function name.\n /// MODE is any of Forward, Reverse, ForwardFirst, ReverseFirst.\n /// INPUT_ACTIVITIES consists of one valid activity for each input parameter.\n /// OUTPUT_ACTIVITY must not be set if we implicitly return nothing (or explicitly return\n /// `-\u003e ()`). Otherwise it must be set to one of the allowed activities.\n #[unstable(feature = \"autodiff\", issue = \"124509\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro autodiff($item:item) {\n /* compiler built-in */\n }" + }, + "bench": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "bench", + "File": "mod.rs", + "Line": 1745, + "StartOffset": 61644, + "EndOffset": 62027, + "Content": "/// Attribute macro applied to a function to turn it into a benchmark test.\n #[unstable(\n feature = \"test\",\n issue = \"50297\",\n soft,\n reason = \"`bench` is a part of custom test frameworks which are unstable\"\n )]\n #[allow_internal_unstable(test, rustc_attrs, coverage_attribute)]\n #[rustc_builtin_macro]\n pub macro bench($item:item) {\n /* compiler built-in */\n }" + }, + "cfg": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "cfg", + "File": "mod.rs", + "Line": 1506, + "StartOffset": 52412, + "EndOffset": 53533, + "Content": "/// Evaluates boolean combinations of configuration flags at compile-time.\n ///\n /// In addition to the `#[cfg]` attribute, this macro is provided to allow\n /// boolean expression evaluation of configuration flags. This frequently\n /// leads to less duplicated code.\n ///\n /// The syntax given to this macro is the same syntax as the [`cfg`]\n /// attribute.\n ///\n /// `cfg!`, unlike `#[cfg]`, does not remove any code and only evaluates to true or false. For\n /// example, all blocks in an if/else expression need to be valid when `cfg!` is used for\n /// the condition, regardless of what `cfg!` is evaluating.\n ///\n /// [`cfg`]: ../reference/conditional-compilation.html#the-cfg-attribute\n ///\n /// # Examples\n ///\n /// ```\n /// let my_directory = if cfg!(windows) {\n /// \"windows-specific-directory\"\n /// } else {\n /// \"unix-directory\"\n /// };\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! cfg {\n ($($cfg:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" + }, + "cfg_accessible": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "cfg_accessible", + "File": "mod.rs", + "Line": 1816, + "StartOffset": 64283, + "EndOffset": 64599, + "Content": "/// Keeps the item it's applied to if the passed path is accessible, and removes it otherwise.\n #[unstable(\n feature = \"cfg_accessible\",\n issue = \"64797\",\n reason = \"`cfg_accessible` is not fully implemented\"\n )]\n #[rustc_builtin_macro]\n pub macro cfg_accessible($item:item) {\n /* compiler built-in */\n }" + }, + "cfg_eval": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "cfg_eval", + "File": "mod.rs", + "Line": 1827, + "StartOffset": 64636, + "EndOffset": 64940, + "Content": "/// Expands all `#[cfg]` and `#[cfg_attr]` attributes in the code fragment it's applied to.\n #[unstable(\n feature = \"cfg_eval\",\n issue = \"82679\",\n reason = \"`cfg_eval` is a recently implemented feature\"\n )]\n #[rustc_builtin_macro]\n pub macro cfg_eval($($tt:tt)*) {\n /* compiler built-in */\n }" + }, + "cfg_match": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "cfg_match", + "File": "mod.rs", + "Line": 288, + "StartOffset": -1, + "EndOffset": 12092, + "Content": "/// A macro for defining `#[cfg]` match-like statements.\n///\n/// It is similar to the `if/elif` C preprocessor macro by allowing definition of a cascade of\n/// `#[cfg]` cases, emitting the implementation which matches first.\n///\n/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code\n/// without having to rewrite each clause multiple times.\n///\n/// Trailing `_` wildcard match arms are **optional** and they indicate a fallback branch when\n/// all previous declarations do not evaluate to true.\n///\n/// # Example\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// cfg_match! {\n/// unix =\u003e {\n/// fn foo() { /* unix specific functionality */ }\n/// }\n/// target_pointer_width = \"32\" =\u003e {\n/// fn foo() { /* non-unix, 32-bit functionality */ }\n/// }\n/// _ =\u003e {\n/// fn foo() { /* fallback implementation */ }\n/// }\n/// }\n/// ```\n///\n/// If desired, it is possible to return expressions through the use of surrounding braces:\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// let _some_string = cfg_match! {{\n/// unix =\u003e { \"With great power comes great electricity bills\" }\n/// _ =\u003e { \"Behind every successful diet is an unwatched pizza\" }\n/// }};\n/// ```\n#[cfg(not(bootstrap))]\n#[unstable(feature = \"cfg_match\", issue = \"115585\")]\n#[rustc_diagnostic_item = \"cfg_match\"]\npub macro cfg_match {\n ({ $($tt:tt)* }) =\u003e {{\n cfg_match! { $($tt)* }\n }},\n (_ =\u003e { $($output:tt)* }) =\u003e {\n $($output)*\n },\n (\n $cfg:meta =\u003e $output:tt\n $($( $rest:tt )+)?\n ) =\u003e {\n #[cfg($cfg)]\n cfg_match! { _ =\u003e $output }\n $(\n #[cfg(not($cfg))]\n cfg_match! { $($rest)+ }\n )?\n },\n}" + }, + "column": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "column", + "File": "mod.rs", + "Line": 1312, + "StartOffset": 45983, + "EndOffset": 47407, + "Content": "/// Expands to the column number at which it was invoked.\n ///\n /// With [`line!`] and [`file!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `u32` and is 1-based, so the first column\n /// in each line evaluates to 1, the second to 2, etc. This is consistent\n /// with error messages by common compilers or popular editors.\n /// The returned column is *not necessarily* the line of the `column!` invocation itself,\n /// but rather the first macro invocation leading up to the invocation\n /// of the `column!` macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let current_col = column!();\n /// println!(\"defined on column: {current_col}\");\n /// ```\n ///\n /// `column!` counts Unicode code points, not bytes or graphemes. As a result, the first two\n /// invocations return the same value, but the third does not.\n ///\n /// ```\n /// let a = (\"foobar\", column!()).1;\n /// let b = (\"人之初性本善\", column!()).1;\n /// let c = (\"f̅o̅o̅b̅a̅r̅\", column!()).1; // Uses combining overline (U+0305)\n ///\n /// assert_eq!(a, b);\n /// assert_ne!(b, c);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! column {\n () =\u003e {\n /* compiler built-in */\n };\n }" + }, + "compile_error": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "compile_error", + "File": "mod.rs", + "Line": 994, + "StartOffset": 33546, + "EndOffset": 35065, + "Content": "/// Causes compilation to fail with the given error message when encountered.\n ///\n /// This macro should be used when a crate uses a conditional compilation strategy to provide\n /// better error messages for erroneous conditions. It's the compiler-level form of [`panic!`],\n /// but emits an error during *compilation* rather than at *runtime*.\n ///\n /// # Examples\n ///\n /// Two such examples are macros and `#[cfg]` environments.\n ///\n /// Emit a better compiler error if a macro is passed invalid values. Without the final branch,\n /// the compiler would still emit an error, but the error's message would not mention the two\n /// valid values.\n ///\n /// ```compile_fail\n /// macro_rules! give_me_foo_or_bar {\n /// (foo) =\u003e {};\n /// (bar) =\u003e {};\n /// ($x:ident) =\u003e {\n /// compile_error!(\"This macro only accepts `foo` or `bar`\");\n /// }\n /// }\n ///\n /// give_me_foo_or_bar!(neither);\n /// // ^ will fail at compile time with message \"This macro only accepts `foo` or `bar`\"\n /// ```\n ///\n /// Emit a compiler error if one of a number of features isn't available.\n ///\n /// ```compile_fail\n /// #[cfg(not(any(feature = \"foo\", feature = \"bar\")))]\n /// compile_error!(\"Either feature \\\"foo\\\" or \\\"bar\\\" must be enabled for this crate.\");\n /// ```\n #[stable(feature = \"compile_error_macro\", since = \"1.20.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! compile_error {\n ($msg:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "concat": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "concat", + "File": "mod.rs", + "Line": 1263, + "StartOffset": 44282, + "EndOffset": 44934, + "Content": "/// Concatenates literals into a static string slice.\n ///\n /// This macro takes any number of comma-separated literals, yielding an\n /// expression of type `\u0026'static str` which represents all of the literals\n /// concatenated left-to-right.\n ///\n /// Integer and floating point literals are [stringified](core::stringify) in order to be\n /// concatenated.\n ///\n /// # Examples\n ///\n /// ```\n /// let s = concat!(\"test\", 10, 'b', true);\n /// assert_eq!(s, \"test10btrue\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat {\n ($($e:expr),* $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "concat_bytes": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "concat_bytes", + "File": "mod.rs", + "Line": 1236, + "StartOffset": 43372, + "EndOffset": 44211, + "Content": "/// Concatenates literals into a byte slice.\n ///\n /// This macro takes any number of comma-separated literals, and concatenates them all into\n /// one, yielding an expression of type `\u0026[u8; _]`, which represents all of the literals\n /// concatenated left-to-right. The literals passed can be any combination of:\n ///\n /// - byte literals (`b'r'`)\n /// - byte strings (`b\"Rust\"`)\n /// - arrays of bytes/numbers (`[b'A', 66, b'C']`)\n ///\n /// # Examples\n ///\n /// ```\n /// #![feature(concat_bytes)]\n ///\n /// # fn main() {\n /// let s: \u0026[u8; 6] = concat_bytes!(b'A', b\"BC\", [68, b'E', 70]);\n /// assert_eq!(s, b\"ABCDEF\");\n /// # }\n /// ```\n #[unstable(feature = \"concat_bytes\", issue = \"87555\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat_bytes {\n ($($e:literal),+ $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "concat_idents": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "concat_idents", + "File": "mod.rs", + "Line": 1201, + "StartOffset": 42140, + "EndOffset": 43303, + "Content": "/// Concatenates identifiers into one identifier.\n ///\n /// This macro takes any number of comma-separated identifiers, and\n /// concatenates them all into one, yielding an expression which is a new\n /// identifier. Note that hygiene makes it such that this macro cannot\n /// capture local variables. Also, as a general rule, macros are only\n /// allowed in item, statement or expression position. That means while\n /// you may use this macro for referring to existing variables, functions or\n /// modules etc, you cannot define a new one with it.\n ///\n /// # Examples\n ///\n /// ```\n /// #![feature(concat_idents)]\n ///\n /// # fn main() {\n /// fn foobar() -\u003e u32 { 23 }\n ///\n /// let f = concat_idents!(foo, bar);\n /// println!(\"{}\", f());\n ///\n /// // fn concat_idents!(new, fun, name) { } // not usable in this way!\n /// # }\n /// ```\n #[unstable(\n feature = \"concat_idents\",\n issue = \"29599\",\n reason = \"`concat_idents` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat_idents {\n ($($e:ident),+ $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "const_format_args": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "const_format_args", + "File": "mod.rs", + "Line": 1098, + "StartOffset": 38026, + "EndOffset": 38551, + "Content": "/// Same as [`format_args`], but can be used in some const contexts.\n ///\n /// This macro is used by the panic macros for the `const_panic` feature.\n ///\n /// This macro will be removed once `format_args` is allowed in const contexts.\n #[unstable(feature = \"const_format_args\", issue = \"none\")]\n #[allow_internal_unstable(fmt_internals, const_fmt_arguments_new)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! const_format_args {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "contracts_ensures": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "contracts_ensures", + "File": "mod.rs", + "Line": 1780, + "StartOffset": 62845, + "EndOffset": 63317, + "Content": "/// Attribute macro applied to a function to give it a post-condition.\n ///\n /// The attribute carries an argument token-tree which is\n /// eventually parsed as a unary closure expression that is\n /// invoked on a reference to the return value.\n #[cfg(not(bootstrap))]\n #[unstable(feature = \"contracts\", issue = \"128044\")]\n #[allow_internal_unstable(contracts_internals)]\n #[rustc_builtin_macro]\n pub macro contracts_ensures($item:item) {\n /* compiler built-in */\n }" + }, + "contracts_requires": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "contracts_requires", + "File": "mod.rs", + "Line": 1793, + "StartOffset": 63354, + "EndOffset": 63816, + "Content": "/// Attribute macro applied to a function to give it a precondition.\n ///\n /// The attribute carries an argument token-tree which is\n /// eventually parsed as an boolean expression with access to the\n /// function's formal parameters\n #[cfg(not(bootstrap))]\n #[unstable(feature = \"contracts\", issue = \"128044\")]\n #[allow_internal_unstable(contracts_internals)]\n #[rustc_builtin_macro]\n pub macro contracts_requires($item:item) {\n /* compiler built-in */\n }" + }, + "debug_assert": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "debug_assert", + "File": "mod.rs", + "Line": 350, + "StartOffset": -1, + "EndOffset": 14076, + "Content": "/// Asserts that a boolean expression is `true` at runtime.\n///\n/// This will invoke the [`panic!`] macro if the provided expression cannot be\n/// evaluated to `true` at runtime.\n///\n/// Like [`assert!`], this macro also has a second version, where a custom panic\n/// message can be provided.\n///\n/// # Uses\n///\n/// Unlike [`assert!`], `debug_assert!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert!` is always type checked.\n///\n/// An unchecked assertion allows a program in an inconsistent state to keep\n/// running, which might have unexpected consequences but does not introduce\n/// unsafety as long as this only happens in safe code. The performance cost\n/// of assertions, however, is not measurable in general. Replacing [`assert!`]\n/// with `debug_assert!` is thus only encouraged after thorough profiling, and\n/// more importantly, only in safe code!\n///\n/// # Examples\n///\n/// ```\n/// // the panic message for these assertions is the stringified value of the\n/// // expression given.\n/// debug_assert!(true);\n///\n/// fn some_expensive_computation() -\u003e bool { true } // a very simple function\n/// debug_assert!(some_expensive_computation());\n///\n/// // assert with a custom message\n/// let x = true;\n/// debug_assert!(x, \"x wasn't true!\");\n///\n/// let a = 3; let b = 27;\n/// debug_assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_diagnostic_item = \"debug_assert_macro\"]\n#[allow_internal_unstable(edition_panic)]\nmacro_rules! debug_assert {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert!($($arg)*);\n }\n };\n}" + }, + "debug_assert_eq": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "debug_assert_eq", + "File": "mod.rs", + "Line": 403, + "StartOffset": -1, + "EndOffset": 15103, + "Content": "/// Asserts that two expressions are equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_eq!`], `debug_assert_eq!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_eq!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_eq!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// debug_assert_eq!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_eq_macro\")]\nmacro_rules! debug_assert_eq {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_eq!($($arg)*);\n }\n };\n}" + }, + "debug_assert_matches": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "debug_assert_matches", + "File": "mod.rs", + "Line": 463, + "StartOffset": -1, + "EndOffset": 18355, + "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `debug_assert!(matches!(value, pattern))`, because it can\n/// print the debug representation of the actual value shape that did not meet expectations. In\n/// contrast, using [`debug_assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// Unlike [`assert_matches!`], `debug_assert_matches!` statements are only enabled in non optimized\n/// builds by default. An optimized build will not execute `debug_assert_matches!` statements unless\n/// `-C debug-assertions` is passed to the compiler. This makes `debug_assert_matches!` useful for\n/// checks that are too expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_matches!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::debug_assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// debug_assert_matches!(a, Some(_));\n/// debug_assert_matches!(b, Some(_));\n///\n/// debug_assert_matches!(a, Some(345));\n/// debug_assert_matches!(a, Some(345) | None);\n///\n/// // debug_assert_matches!(a, None); // panics\n/// // debug_assert_matches!(b, Some(345)); // panics\n/// // debug_assert_matches!(b, Some(345) | None); // panics\n///\n/// debug_assert_matches!(a, Some(x) if x \u003e 100);\n/// // debug_assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(assert_matches)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro debug_assert_matches($($arg:tt)*) {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_matches::assert_matches!($($arg)*);\n }\n}" + }, + "debug_assert_ne": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "debug_assert_ne", + "File": "mod.rs", + "Line": 433, + "StartOffset": -1, + "EndOffset": 16135, + "Content": "/// Asserts that two expressions are not equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_ne!`], `debug_assert_ne!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_ne!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_ne!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// debug_assert_ne!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_ne_macro\")]\nmacro_rules! debug_assert_ne {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_ne!($($arg)*);\n }\n };\n}" + }, + "deref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "deref", + "File": "mod.rs", + "Line": 1850, + "StartOffset": 65337, + "EndOffset": 65608, + "Content": "/// Unstable placeholder for deref patterns.\n #[allow_internal_unstable(builtin_syntax)]\n #[unstable(\n feature = \"deref_patterns\",\n issue = \"87121\",\n reason = \"placeholder syntax for deref patterns\"\n )]\n pub macro deref($pat:pat) {\n builtin # deref($pat)\n }" + }, + "derive": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "derive", + "File": "mod.rs", + "Line": 1710, + "StartOffset": 60479, + "EndOffset": 60772, + "Content": "/// Attribute macro used to apply derive macros.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/derive.html\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n pub macro derive($item:item) {\n /* compiler built-in */\n }" + }, + "derive_const": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "derive_const", + "File": "mod.rs", + "Line": 1721, + "StartOffset": 60809, + "EndOffset": 61167, + "Content": "/// Attribute macro used to apply derive macros for implementing traits\n /// in a const context.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/derive.html\n #[unstable(feature = \"derive_const\", issue = \"none\")]\n #[rustc_builtin_macro]\n pub macro derive_const($item:item) {\n /* compiler built-in */\n }" + }, + "env": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "env", + "File": "mod.rs", + "Line": 1127, + "StartOffset": 39142, + "EndOffset": 40630, + "Content": "/// Inspects an environment variable at compile time.\n ///\n /// This macro will expand to the value of the named environment variable at\n /// compile time, yielding an expression of type `\u0026'static str`. Use\n /// [`std::env::var`] instead if you want to read the value at runtime.\n ///\n /// [`std::env::var`]: ../std/env/fn.var.html\n ///\n /// If the environment variable is not defined, then a compilation error\n /// will be emitted. To not emit a compile error, use the [`option_env!`]\n /// macro instead. A compilation error will also be emitted if the\n /// environment variable is not a valid Unicode string.\n ///\n /// # Examples\n ///\n /// ```\n /// let path: \u0026'static str = env!(\"PATH\");\n /// println!(\"the $PATH variable at the time of compiling was: {path}\");\n /// ```\n ///\n /// You can customize the error message by passing a string as the second\n /// parameter:\n ///\n /// ```compile_fail\n /// let doc: \u0026'static str = env!(\"documentation\", \"what's that?!\");\n /// ```\n ///\n /// If the `documentation` environment variable is not defined, you'll get\n /// the following error:\n ///\n /// ```text\n /// error: what's that?!\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"env_macro\"] // useful for external lints\n macro_rules! env {\n ($name:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n ($name:expr, $error_msg:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "file": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "file", + "File": "mod.rs", + "Line": 1351, + "StartOffset": 47423, + "EndOffset": 48201, + "Content": "/// Expands to the file name in which it was invoked.\n ///\n /// With [`line!`] and [`column!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `\u0026'static str`, and the returned file\n /// is not the invocation of the `file!` macro itself, but rather the\n /// first macro invocation leading up to the invocation of the `file!`\n /// macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let this_file = file!();\n /// println!(\"defined in file: {this_file}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! file {\n () =\u003e {\n /* compiler built-in */\n };\n }" + }, + "format_args": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "format_args", + "File": "mod.rs", + "Line": 1034, + "StartOffset": 35130, + "EndOffset": 37953, + "Content": "/// Constructs parameters for the other string-formatting macros.\n ///\n /// This macro functions by taking a formatting string literal containing\n /// `{}` for each additional argument passed. `format_args!` prepares the\n /// additional parameters to ensure the output can be interpreted as a string\n /// and canonicalizes the arguments into a single type. Any value that implements\n /// the [`Display`] trait can be passed to `format_args!`, as can any\n /// [`Debug`] implementation be passed to a `{:?}` within the formatting string.\n ///\n /// This macro produces a value of type [`fmt::Arguments`]. This value can be\n /// passed to the macros within [`std::fmt`] for performing useful redirection.\n /// All other formatting macros ([`format!`], [`write!`], [`println!`], etc) are\n /// proxied through this one. `format_args!`, unlike its derived macros, avoids\n /// heap allocations.\n ///\n /// You can use the [`fmt::Arguments`] value that `format_args!` returns\n /// in `Debug` and `Display` contexts as seen below. The example also shows\n /// that `Debug` and `Display` format to the same thing: the interpolated\n /// format string in `format_args!`.\n ///\n /// ```rust\n /// let debug = format!(\"{:?}\", format_args!(\"{} foo {:?}\", 1, 2));\n /// let display = format!(\"{}\", format_args!(\"{} foo {:?}\", 1, 2));\n /// assert_eq!(\"1 foo 2\", display);\n /// assert_eq!(display, debug);\n /// ```\n ///\n /// See [the formatting documentation in `std::fmt`](../std/fmt/index.html)\n /// for details of the macro argument syntax, and further information.\n ///\n /// [`Display`]: crate::fmt::Display\n /// [`Debug`]: crate::fmt::Debug\n /// [`fmt::Arguments`]: crate::fmt::Arguments\n /// [`std::fmt`]: ../std/fmt/index.html\n /// [`format!`]: ../std/macro.format.html\n /// [`println!`]: ../std/macro.println.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// let s = fmt::format(format_args!(\"hello {}\", \"world\"));\n /// assert_eq!(s, format!(\"hello {}\", \"world\"));\n /// ```\n ///\n /// # Lifetime limitation\n ///\n /// Except when no formatting arguments are used,\n /// the produced `fmt::Arguments` value borrows temporary values,\n /// which means it can only be used within the same expression\n /// and cannot be stored for later use.\n /// This is a known limitation, see [#92698](https://github.com/rust-lang/rust/issues/92698).\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"format_args_macro\")]\n #[allow_internal_unsafe]\n #[allow_internal_unstable(fmt_internals)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! format_args {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "format_args_nl": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "format_args_nl", + "File": "mod.rs", + "Line": 1112, + "StartOffset": 38624, + "EndOffset": 39069, + "Content": "/// Same as [`format_args`], but adds a newline in the end.\n #[unstable(\n feature = \"format_args_nl\",\n issue = \"none\",\n reason = \"`format_args_nl` is only for internal \\\n language use and is subject to change\"\n )]\n #[allow_internal_unstable(fmt_internals)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! format_args_nl {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "global_allocator": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "global_allocator", + "File": "mod.rs", + "Line": 1770, + "StartOffset": 62449, + "EndOffset": 62808, + "Content": "/// Attribute macro applied to a static to register it as a global allocator.\n ///\n /// See also [`std::alloc::GlobalAlloc`](../../../std/alloc/trait.GlobalAlloc.html).\n #[stable(feature = \"global_allocator\", since = \"1.28.0\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro global_allocator($item:item) {\n /* compiler built-in */\n }" + }, + "include": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "include", + "File": "mod.rs", + "Line": 1539, + "StartOffset": 53549, + "EndOffset": 56656, + "Content": "/// Parses a file as an expression or an item according to the context.\n ///\n /// **Warning**: For multi-file Rust projects, the `include!` macro is probably not what you\n /// are looking for. Usually, multi-file Rust projects use\n /// [modules](https://doc.rust-lang.org/reference/items/modules.html). Multi-file projects and\n /// modules are explained in the Rust-by-Example book\n /// [here](https://doc.rust-lang.org/rust-by-example/mod/split.html) and the module system is\n /// explained in the Rust Book\n /// [here](https://doc.rust-lang.org/book/ch07-02-defining-modules-to-control-scope-and-privacy.html).\n ///\n /// The included file is placed in the surrounding code\n /// [unhygienically](https://doc.rust-lang.org/reference/macros-by-example.html#hygiene). If\n /// the included file is parsed as an expression and variables or functions share names across\n /// both files, it could result in variables or functions being different from what the\n /// included file expected.\n ///\n /// The included file is located relative to the current file (similarly to how modules are\n /// found). The provided path is interpreted in a platform-specific way at compile time. So,\n /// for instance, an invocation with a Windows path containing backslashes `\\` would not\n /// compile correctly on Unix.\n ///\n /// # Uses\n ///\n /// The `include!` macro is primarily used for two purposes. It is used to include\n /// documentation that is written in a separate file and it is used to include [build artifacts\n /// usually as a result from the `build.rs`\n /// script](https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script).\n ///\n /// When using the `include` macro to include stretches of documentation, remember that the\n /// included file still needs to be a valid Rust syntax. It is also possible to\n /// use the [`include_str`] macro as `#![doc = include_str!(\"...\")]` (at the module level) or\n /// `#[doc = include_str!(\"...\")]` (at the item level) to include documentation from a plain\n /// text or markdown file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following contents:\n ///\n /// File 'monkeys.in':\n ///\n /// ```ignore (only-for-syntax-highlight)\n /// ['🙈', '🙊', '🙉']\n /// .iter()\n /// .cycle()\n /// .take(6)\n /// .collect::\u003cString\u003e()\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let my_string = include!(\"monkeys.in\");\n /// assert_eq!(\"🙈🙊🙉🙈🙊🙉\", my_string);\n /// println!(\"{my_string}\");\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print\n /// \"🙈🙊🙉🙈🙊🙉\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"include_macro\"] // useful for external lints\n macro_rules! include {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "include_bytes": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "include_bytes", + "File": "mod.rs", + "Line": 1440, + "StartOffset": 50320, + "EndOffset": 51633, + "Content": "/// Includes a file as a reference to a byte array.\n ///\n /// The file is located relative to the current file (similarly to how\n /// modules are found). The provided path is interpreted in a platform-specific\n /// way at compile time. So, for instance, an invocation with a Windows path\n /// containing backslashes `\\` would not compile correctly on Unix.\n ///\n /// This macro will yield an expression of type `\u0026'static [u8; N]` which is\n /// the contents of the file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following\n /// contents:\n ///\n /// File 'spanish.in':\n ///\n /// ```text\n /// adiós\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let bytes = include_bytes!(\"spanish.in\");\n /// assert_eq!(bytes, b\"adi\\xc3\\xb3s\\n\");\n /// print!(\"{}\", String::from_utf8_lossy(bytes));\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print \"adiós\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"include_bytes_macro\")]\n macro_rules! include_bytes {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "include_str": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "include_str", + "File": "mod.rs", + "Line": 1400, + "StartOffset": 48987, + "EndOffset": 50254, + "Content": "/// Includes a UTF-8 encoded file as a string.\n ///\n /// The file is located relative to the current file (similarly to how\n /// modules are found). The provided path is interpreted in a platform-specific\n /// way at compile time. So, for instance, an invocation with a Windows path\n /// containing backslashes `\\` would not compile correctly on Unix.\n ///\n /// This macro will yield an expression of type `\u0026'static str` which is the\n /// contents of the file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following\n /// contents:\n ///\n /// File 'spanish.in':\n ///\n /// ```text\n /// adiós\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let my_str = include_str!(\"spanish.in\");\n /// assert_eq!(my_str, \"adiós\\n\");\n /// print!(\"{my_str}\");\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print \"adiós\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"include_str_macro\")]\n macro_rules! include_str {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "line": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "line", + "File": "mod.rs", + "Line": 1285, + "StartOffset": 45002, + "EndOffset": 45967, + "Content": "/// Expands to the line number on which it was invoked.\n ///\n /// With [`column!`] and [`file!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `u32` and is 1-based, so the first line\n /// in each file evaluates to 1, the second to 2, etc. This is consistent\n /// with error messages by common compilers or popular editors.\n /// The returned line is *not necessarily* the line of the `line!` invocation itself,\n /// but rather the first macro invocation leading up to the invocation\n /// of the `line!` macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let current_line = line!();\n /// println!(\"defined on line: {current_line}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! line {\n () =\u003e {\n /* compiler built-in */\n };\n }" + }, + "log_syntax": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "log_syntax", + "File": "mod.rs", + "Line": 1683, + "StartOffset": 59661, + "EndOffset": 60025, + "Content": "/// Prints passed tokens into the standard output.\n #[unstable(\n feature = \"log_syntax\",\n issue = \"29598\",\n reason = \"`log_syntax!` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! log_syntax {\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" + }, + "matches": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "matches", + "File": "mod.rs", + "Line": 514, + "StartOffset": -1, + "EndOffset": 19362, + "Content": "/// Returns whether the given expression matches the provided pattern.\n///\n/// The pattern syntax is exactly the same as found in a match arm. The optional if guard can be\n/// used to add additional checks that must be true for the matched value, otherwise this macro will\n/// return `false`.\n///\n/// When testing that a value matches a pattern, it's generally preferable to use\n/// [`assert_matches!`] as it will print the debug representation of the value if the assertion\n/// fails.\n///\n/// # Examples\n///\n/// ```\n/// let foo = 'f';\n/// assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));\n///\n/// let bar = Some(4);\n/// assert!(matches!(bar, Some(x) if x \u003e 2));\n/// ```\n#[macro_export]\n#[stable(feature = \"matches_macro\", since = \"1.42.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"matches_macro\")]\nmacro_rules! matches {\n ($expression:expr, $pattern:pat $(if $guard:expr)? $(,)?) =\u003e {\n match $expression {\n $pattern $(if $guard)? =\u003e true,\n _ =\u003e false\n }\n };\n}" + }, + "module_path": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "module_path", + "File": "mod.rs", + "Line": 1480, + "StartOffset": 51699, + "EndOffset": 52396, + "Content": "/// Expands to a string that represents the current module path.\n ///\n /// The current module path can be thought of as the hierarchy of modules\n /// leading back up to the crate root. The first component of the path\n /// returned is the name of the crate currently being compiled.\n ///\n /// # Examples\n ///\n /// ```\n /// mod test {\n /// pub fn foo() {\n /// assert!(module_path!().ends_with(\"test\"));\n /// }\n /// }\n ///\n /// test::foo();\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! module_path {\n () =\u003e {\n /* compiler built-in */\n };\n }" + }, + "option_env": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "option_env", + "File": "mod.rs", + "Line": 1169, + "StartOffset": 40713, + "EndOffset": 42074, + "Content": "/// Optionally inspects an environment variable at compile time.\n ///\n /// If the named environment variable is present at compile time, this will\n /// expand into an expression of type `Option\u003c\u0026'static str\u003e` whose value is\n /// `Some` of the value of the environment variable (a compilation error\n /// will be emitted if the environment variable is not a valid Unicode\n /// string). If the environment variable is not present, then this will\n /// expand to `None`. See [`Option\u003cT\u003e`][Option] for more information on this\n /// type. Use [`std::env::var`] instead if you want to read the value at\n /// runtime.\n ///\n /// [`std::env::var`]: ../std/env/fn.var.html\n ///\n /// A compile time error is only emitted when using this macro if the\n /// environment variable exists and is not a valid Unicode string. To also\n /// emit a compile error if the environment variable is not present, use the\n /// [`env!`] macro instead.\n ///\n /// # Examples\n ///\n /// ```\n /// let key: Option\u003c\u0026'static str\u003e = option_env!(\"SECRET_KEY\");\n /// println!(\"the secret key might be: {key:?}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"option_env_macro\"] // useful for external lints\n macro_rules! option_env {\n ($name:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "panic": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "panic", + "File": "mod.rs", + "Line": 1, + "StartOffset": -1, + "EndOffset": 425, + "Content": "#[doc = include_str!(\"panic.md\")]\n#[macro_export]\n#[rustc_builtin_macro(core_panic)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"core\", since = \"1.6.0\")]\n#[rustc_diagnostic_item = \"core_panic_macro\"]\nmacro_rules! panic {\n // Expands to either `$crate::panic::panic_2015` or `$crate::panic::panic_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" + }, + "r#try": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "r#try", + "File": "mod.rs", + "Line": 545, + "StartOffset": -1, + "EndOffset": 22019, + "Content": "/// Unwraps a result or propagates its error.\n///\n/// The [`?` operator][propagating-errors] was added to replace `try!`\n/// and should be used instead. Furthermore, `try` is a reserved word\n/// in Rust 2018, so if you must use it, you will need to use the\n/// [raw-identifier syntax][ris]: `r#try`.\n///\n/// [propagating-errors]: https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#a-shortcut-for-propagating-errors-the--operator\n/// [ris]: https://doc.rust-lang.org/nightly/rust-by-example/compatibility/raw_identifiers.html\n///\n/// `try!` matches the given [`Result`]. In case of the `Ok` variant, the\n/// expression has the value of the wrapped value.\n///\n/// In case of the `Err` variant, it retrieves the inner error. `try!` then\n/// performs conversion using `From`. This provides automatic conversion\n/// between specialized errors and more general ones. The resulting\n/// error is then immediately returned.\n///\n/// Because of the early return, `try!` can only be used in functions that\n/// return [`Result`].\n///\n/// # Examples\n///\n/// ```\n/// use std::io;\n/// use std::fs::File;\n/// use std::io::prelude::*;\n///\n/// enum MyError {\n/// FileWriteError\n/// }\n///\n/// impl From\u003cio::Error\u003e for MyError {\n/// fn from(e: io::Error) -\u003e MyError {\n/// MyError::FileWriteError\n/// }\n/// }\n///\n/// // The preferred method of quick returning Errors\n/// fn write_to_file_question() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = File::create(\"my_best_friends.txt\")?;\n/// file.write_all(b\"This is a list of my best friends.\")?;\n/// Ok(())\n/// }\n///\n/// // The previous method of quick returning Errors\n/// fn write_to_file_using_try() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// r#try!(file.write_all(b\"This is a list of my best friends.\"));\n/// Ok(())\n/// }\n///\n/// // This is equivalent to:\n/// fn write_to_file_using_match() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// match file.write_all(b\"This is a list of my best friends.\") {\n/// Ok(v) =\u003e v,\n/// Err(e) =\u003e return Err(From::from(e)),\n/// }\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[deprecated(since = \"1.39.0\", note = \"use the `?` operator instead\")]\n#[doc(alias = \"?\")]\nmacro_rules! r#try {\n ($expr:expr $(,)?) =\u003e {\n match $expr {\n $crate::result::Result::Ok(val) =\u003e val,\n $crate::result::Result::Err(err) =\u003e {\n return $crate::result::Result::Err($crate::convert::From::from(err));\n }\n }\n };\n}" + }, + "stringify": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "stringify", + "File": "mod.rs", + "Line": 1376, + "StartOffset": 48217, + "EndOffset": 48971, + "Content": "/// Stringifies its arguments.\n ///\n /// This macro will yield an expression of type `\u0026'static str` which is the\n /// stringification of all the tokens passed to the macro. No restrictions\n /// are placed on the syntax of the macro invocation itself.\n ///\n /// Note that the expanded results of the input tokens may change in the\n /// future. You should be careful if you rely on the output.\n ///\n /// # Examples\n ///\n /// ```\n /// let one_plus_one = stringify!(1 + 1);\n /// assert_eq!(one_plus_one, \"1 + 1\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! stringify {\n ($($t:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" + }, + "test": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "test", + "File": "mod.rs", + "Line": 1733, + "StartOffset": 61204, + "EndOffset": 61607, + "Content": "/// Attribute macro applied to a function to turn it into a unit test.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/testing.html#the-test-attribute\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[allow_internal_unstable(test, rustc_attrs, coverage_attribute)]\n #[rustc_builtin_macro]\n pub macro test($item:item) {\n /* compiler built-in */\n }" + }, + "test_case": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "test_case", + "File": "mod.rs", + "Line": 1758, + "StartOffset": 62064, + "EndOffset": 62412, + "Content": "/// An implementation detail of the `#[test]` and `#[bench]` macros.\n #[unstable(\n feature = \"custom_test_frameworks\",\n issue = \"50297\",\n reason = \"custom test frameworks are an unstable feature\"\n )]\n #[allow_internal_unstable(test, rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro test_case($item:item) {\n /* compiler built-in */\n }" + }, + "todo": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "todo", + "File": "mod.rs", + "Line": 907, + "StartOffset": -1, + "EndOffset": 33236, + "Content": "/// Indicates unfinished code.\n///\n/// This can be useful if you are prototyping and just\n/// want a placeholder to let your code pass type analysis.\n///\n/// The difference between [`unimplemented!`] and `todo!` is that while `todo!` conveys\n/// an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `todo!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Here's an example of some in-progress code. We have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` on one of our types, but we also want to work on\n/// just `bar()` first. In order for our code to compile, we need to implement\n/// `baz()` and `qux()`, so we can use `todo!`:\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // Let's not worry about implementing baz() for now\n/// todo!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We can add a message to todo! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not yet implemented: MyStruct is not yet quxable'\".\n/// todo!(\"MyStruct is not yet quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n///\n/// // We aren't even using baz() or qux(), so this is fine.\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"todo_macro\", since = \"1.40.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"todo_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! todo {\n () =\u003e {\n $crate::panicking::panic(\"not yet implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not yet implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" + }, + "trace_macros": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "trace_macros", + "File": "mod.rs", + "Line": 1697, + "StartOffset": 60041, + "EndOffset": 60424, + "Content": "/// Enables or disables tracing functionality used for debugging other macros.\n #[unstable(\n feature = \"trace_macros\",\n issue = \"29598\",\n reason = \"`trace_macros` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! trace_macros {\n (true) =\u003e {{ /* compiler built-in */ }};\n (false) =\u003e {{ /* compiler built-in */ }};\n }" + }, + "type_ascribe": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "type_ascribe", + "File": "mod.rs", + "Line": 1838, + "StartOffset": 64977, + "EndOffset": 65289, + "Content": "/// Unstable placeholder for type ascription.\n #[allow_internal_unstable(builtin_syntax)]\n #[unstable(\n feature = \"type_ascription\",\n issue = \"23416\",\n reason = \"placeholder syntax for type ascription\"\n )]\n #[rustfmt::skip]\n pub macro type_ascribe($expr:expr, $ty:ty) {\n builtin # type_ascribe($expr, $ty)\n }" + }, + "unimplemented": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "unimplemented", + "File": "mod.rs", + "Line": 820, + "StartOffset": -1, + "EndOffset": 30903, + "Content": "/// Indicates unimplemented code by panicking with a message of \"not implemented\".\n///\n/// This allows your code to type-check, which is useful if you are prototyping or\n/// implementing a trait that requires multiple methods which you don't plan to use all of.\n///\n/// The difference between `unimplemented!` and [`todo!`] is that while `todo!`\n/// conveys an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unimplemented!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// [`todo!`]: crate::todo\n///\n/// # Examples\n///\n/// Say we have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` for 'MyStruct', but for some reason it only makes sense\n/// to implement the `bar()` function. `baz()` and `qux()` will still need to be defined\n/// in our implementation of `Foo`, but we can use `unimplemented!` in their definitions\n/// to allow our code to compile.\n///\n/// We still want to have our program stop running if the unimplemented methods are\n/// reached.\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // It makes no sense to `baz` a `MyStruct`, so we have no logic here\n/// // at all.\n/// // This will display \"thread 'main' panicked at 'not implemented'\".\n/// unimplemented!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We have some logic here,\n/// // We can add a message to unimplemented! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not implemented: MyStruct isn't quxable'\".\n/// unimplemented!(\"MyStruct isn't quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unimplemented_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! unimplemented {\n () =\u003e {\n $crate::panicking::panic(\"not implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" + }, + "unreachable": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "unreachable", + "File": "mod.rs", + "Line": 755, + "StartOffset": -1, + "EndOffset": 28157, + "Content": "/// Indicates unreachable code.\n///\n/// This is useful any time that the compiler can't determine that some code is unreachable. For\n/// example:\n///\n/// * Match arms with guard conditions.\n/// * Loops that dynamically terminate.\n/// * Iterators that dynamically terminate.\n///\n/// If the determination that the code is unreachable proves incorrect, the\n/// program immediately terminates with a [`panic!`].\n///\n/// The unsafe counterpart of this macro is the [`unreachable_unchecked`] function, which\n/// will cause undefined behavior if the code is reached.\n///\n/// [`unreachable_unchecked`]: crate::hint::unreachable_unchecked\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unreachable!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Match arms:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn foo(x: Option\u003ci32\u003e) {\n/// match x {\n/// Some(n) if n \u003e= 0 =\u003e println!(\"Some(Non-negative)\"),\n/// Some(n) if n \u003c 0 =\u003e println!(\"Some(Negative)\"),\n/// Some(_) =\u003e unreachable!(), // compile error if commented out\n/// None =\u003e println!(\"None\")\n/// }\n/// }\n/// ```\n///\n/// Iterators:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn divide_by_three(x: u32) -\u003e u32 { // one of the poorest implementations of x/3\n/// for i in 0.. {\n/// if 3*i \u003c i { panic!(\"u32 overflow\"); }\n/// if x \u003c 3*i { return i-1; }\n/// }\n/// unreachable!(\"The loop should always return\");\n/// }\n/// ```\n#[macro_export]\n#[rustc_builtin_macro(unreachable)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unreachable_macro\")]\nmacro_rules! unreachable {\n // Expands to either `$crate::panic::unreachable_2015` or `$crate::panic::unreachable_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" + }, + "write": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "write", + "File": "mod.rs", + "Line": 622, + "StartOffset": -1, + "EndOffset": 25037, + "Content": "/// Writes formatted data into a buffer.\n///\n/// This macro accepts a 'writer', a format string, and a list of arguments. Arguments will be\n/// formatted according to the specified format string and the result will be passed to the writer.\n/// The writer may be any value with a `write_fmt` method; generally this comes from an\n/// implementation of either the [`fmt::Write`] or the [`io::Write`] trait. The macro\n/// returns whatever the `write_fmt` method returns; commonly a [`fmt::Result`], or an\n/// [`io::Result`].\n///\n/// See [`std::fmt`] for more information on the format string syntax.\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n/// [`fmt::Write`]: crate::fmt::Write\n/// [`io::Write`]: ../std/io/trait.Write.html\n/// [`fmt::Result`]: crate::fmt::Result\n/// [`io::Result`]: ../std/io/type.Result.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::Write;\n///\n/// fn main() -\u003e std::io::Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// write!(\u0026mut w, \"test\")?;\n/// write!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(w, b\"testformatted arguments\");\n/// Ok(())\n/// }\n/// ```\n///\n/// A module can import both `std::fmt::Write` and `std::io::Write` and call `write!` on objects\n/// implementing either, as objects do not typically implement both. However, the module must\n/// avoid conflict between the trait names, such as by importing them as `_` or otherwise renaming\n/// them:\n///\n/// ```\n/// use std::fmt::Write as _;\n/// use std::io::Write as _;\n///\n/// fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n/// let mut s = String::new();\n/// let mut v = Vec::new();\n///\n/// write!(\u0026mut s, \"{} {}\", \"abc\", 123)?; // uses fmt::Write::write_fmt\n/// write!(\u0026mut v, \"s = {:?}\", s)?; // uses io::Write::write_fmt\n/// assert_eq!(v, b\"s = \\\"abc 123\\\"\");\n/// Ok(())\n/// }\n/// ```\n///\n/// If you also need the trait names themselves, such as to implement one or both on your types,\n/// import the containing module and then name them with a prefix:\n///\n/// ```\n/// # #![allow(unused_imports)]\n/// use std::fmt::{self, Write as _};\n/// use std::io::{self, Write as _};\n///\n/// struct Example;\n///\n/// impl fmt::Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n/// ```\n///\n/// Note: This macro can be used in `no_std` setups as well.\n/// In a `no_std` setup you are responsible for the implementation details of the components.\n///\n/// ```no_run\n/// use core::fmt::Write;\n///\n/// struct Example;\n///\n/// impl Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n///\n/// let mut m = Example{};\n/// write!(\u0026mut m, \"Hello World\").expect(\"Not written\");\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"write_macro\")]\nmacro_rules! write {\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args!($($arg)*))\n };\n}" + }, + "writeln": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::macros", + "Name": "writeln", + "File": "mod.rs", + "Line": 717, + "StartOffset": -1, + "EndOffset": 26116, + "Content": "/// Writes formatted data into a buffer, with a newline appended.\n///\n/// On all platforms, the newline is the LINE FEED character (`\\n`/`U+000A`) alone\n/// (no additional CARRIAGE RETURN (`\\r`/`U+000D`).\n///\n/// For more information, see [`write!`]. For information on the format string syntax, see\n/// [`std::fmt`].\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::{Write, Result};\n///\n/// fn main() -\u003e Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// writeln!(\u0026mut w)?;\n/// writeln!(\u0026mut w, \"test\")?;\n/// writeln!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(\u0026w[..], \"\\ntest\\nformatted arguments\\n\".as_bytes());\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"writeln_macro\")]\n#[allow_internal_unstable(format_args_nl)]\nmacro_rules! writeln {\n ($dst:expr $(,)?) =\u003e {\n $crate::write!($dst, \"\\n\")\n };\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args_nl!($($arg)*))\n };\n}" + } + }, + "Types": {}, + "Vars": {} + }, + "core::marker": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::marker", + "Functions": {}, + "Types": { + "PhantomData": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "marker.rs", + "Line": 774, + "StartOffset": 29456, + "EndOffset": 29467, + "Content": "PhantomData" + }, + "Send": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "marker.rs", + "Line": 90, + "StartOffset": 3419, + "EndOffset": 3423, + "Content": "Send" + }, + "Sized": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sized", + "File": "marker.rs", + "Line": 154, + "StartOffset": 5622, + "EndOffset": 5627, + "Content": "Sized" + }, + "Sync": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "marker.rs", + "Line": 619, + "StartOffset": 24192, + "EndOffset": 24196, + "Content": "Sync" + } + }, + "Vars": {} + }, + "core::ops::deref": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::ops::deref", + "Functions": {}, + "Types": { + "Deref": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::ops::deref", + "Name": "Deref", + "File": "deref.rs", + "Line": 138, + "StartOffset": 6095, + "EndOffset": 6100, + "Content": "Deref" + }, + "DerefMut": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::ops::deref", + "Name": "DerefMut", + "File": "deref.rs", + "Line": 268, + "StartOffset": 10829, + "EndOffset": 10837, + "Content": "DerefMut" + } + }, + "Vars": {} + }, + "core::ops::function": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::ops::function", + "Functions": {}, + "Types": { + "FnOnce": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "function.rs", + "Line": 242, + "StartOffset": 8736, + "EndOffset": 8742, + "Content": "FnOnce" + } + }, + "Vars": {} + }, + "core::option": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::option", + "Functions": { + "and_then": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "option.rs", + "Line": 1447, + "StartOffset": 51530, + "EndOffset": 51538, + "Content": "and_then" + }, + "as_deref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "File": "option.rs", + "Line": 1303, + "StartOffset": 47102, + "EndOffset": 47110, + "Content": "as_deref" + }, + "as_mut": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "option.rs", + "Line": 728, + "StartOffset": 27598, + "EndOffset": 27604, + "Content": "as_mut" + }, + "as_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "option.rs", + "Line": 706, + "StartOffset": 27062, + "EndOffset": 27068, + "Content": "as_ref" + }, + "clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "File": "option.rs", + "Line": 2037, + "StartOffset": 68519, + "EndOffset": 68524, + "Content": "clone" + }, + "get_or_insert_with": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "option.rs", + "Line": 1691, + "StartOffset": 58361, + "EndOffset": 58379, + "Content": "get_or_insert_with" + }, + "is_none": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "option.rs", + "Line": 651, + "StartOffset": 24970, + "EndOffset": 24977, + "Content": "is_none" + }, + "is_some": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "File": "option.rs", + "Line": 607, + "StartOffset": 23633, + "EndOffset": 23640, + "Content": "is_some" + }, + "map": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "option.rs", + "Line": 1114, + "StartOffset": 41603, + "EndOffset": 41606, + "Content": "map" + }, + "or_else": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "option.rs", + "Line": 1546, + "StartOffset": 54361, + "EndOffset": 54368, + "Content": "or_else" + }, + "take": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "File": "option.rs", + "Line": 1726, + "StartOffset": 59394, + "EndOffset": 59398, + "Content": "take" + }, + "unwrap": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "option.rs", + "Line": 975, + "StartOffset": 37239, + "EndOffset": 37245, + "Content": "unwrap" + }, + "unwrap_or": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "option.rs", + "Line": 998, + "StartOffset": 37964, + "EndOffset": 37973, + "Content": "unwrap_or" + } + }, + "Types": { + "Option": { + "Exported": false, + "TypeKind": "enum", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "option.rs", + "Line": 572, + "StartOffset": 22411, + "EndOffset": 22417, + "Content": "Option" + } + }, + "Vars": {} + }, + "core::panic::unwind_safe": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::panic::unwind_safe", + "Functions": {}, + "Types": { + "UnwindSafe": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::panic::unwind_safe", + "Name": "UnwindSafe", + "File": "unwind_safe.rs", + "Line": 90, + "StartOffset": 4463, + "EndOffset": 4473, + "Content": "UnwindSafe" + } + }, + "Vars": {} + }, + "core::result": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::result", + "Functions": { + "ok": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "File": "result.rs", + "Line": 658, + "StartOffset": 23836, + "EndOffset": 23838, + "Content": "ok" + } + }, + "Types": {}, + "Vars": {} + }, + "core::str": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::str", + "Functions": { + "chars": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "File": "mod.rs", + "Line": 1040, + "StartOffset": 36210, + "EndOffset": 36215, + "Content": "chars" + }, + "len": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "mod.rs", + "Line": 140, + "StartOffset": 4729, + "EndOffset": 4732, + "Content": "len" + }, + "strip_prefix": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "File": "mod.rs", + "Line": 2397, + "StartOffset": 83755, + "EndOffset": 83767, + "Content": "strip_prefix" + } + }, + "Types": {}, + "Vars": {} + }, + "core::str::traits": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::str::traits", + "Functions": {}, + "Types": { + "FromStr": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::str::traits", + "Name": "FromStr", + "File": "traits.rs", + "Line": 798, + "StartOffset": 29053, + "EndOffset": 29060, + "Content": "FromStr" + } + }, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "any.rs": { + "Path": "any.rs" + }, + "borrow.rs": { + "Path": "borrow.rs" + }, + "boxed.rs": { + "Path": "boxed.rs" + }, + "builders.rs": { + "Path": "builders.rs" + }, + "cmp.rs": { + "Path": "cmp.rs" + }, + "collect.rs": { + "Path": "collect.rs" + }, + "convert.rs": { + "Path": "convert.rs" + }, + "default.rs": { + "Path": "default.rs" + }, + "deref.rs": { + "Path": "deref.rs" + }, + "function.rs": { + "Path": "function.rs" + }, + "iterator.rs": { + "Path": "iterator.rs" + }, + "marker.rs": { + "Path": "marker.rs" + }, + "methods.rs": { + "Path": "methods.rs" + }, + "mod.rs": { + "Path": "mod.rs" + }, + "option.rs": { + "Path": "option.rs" + }, + "result.rs": { + "Path": "result.rs" + }, + "str.rs": { + "Path": "str.rs" + }, + "string.rs": { + "Path": "string.rs" + }, + "sync.rs": { + "Path": "sync.rs" + }, + "traits.rs": { + "Path": "traits.rs" + }, + "unwind_safe.rs": { + "Path": "unwind_safe.rs" + } + } + }, + "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.expecting": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.expecting", + "File": "hash_map.rs", + "Line": 452, + "StartOffset": 12430, + "EndOffset": 12513, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\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": 2418, + "EndOffset": 3042, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), None);\n /// ```\n #[inline]\n pub fn get\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c\u0026V\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 3069, + "EndOffset": 3746, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some((\u00261, \u0026\"a\")));\n /// assert_eq!(map.get_key_value(\u00262), None);\n /// ```\n #[inline]\n pub fn get_key_value\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c(\u0026K, \u0026V)\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 3783, + "EndOffset": 4451, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[\u00261], \"b\");\n /// ```\n #[inline]\n pub fn get_mut\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003c\u0026mut V\u003e\n where\n K: Borrow\u003cQ\u003e,\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.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": 4482, + "EndOffset": 5314, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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[\u002637], \"c\");\n /// ```\n #[inline]\n pub fn insert(\u0026mut self, k: K, v: V) -\u003e Option\u003cV\u003e {\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_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": 5347, + "EndOffset": 6277, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003c\u0026str\u003e = 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) -\u003e IntoKeys\u003cK, V\u003e {\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": 6309, + "EndOffset": 7248, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003ci32\u003e = 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) -\u003e IntoValues\u003cK, V\u003e {\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": 7282, + "EndOffset": 7962, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\"a\"));\n /// assert_eq!(map.remove(\u00261), None);\n /// ```\n #[inline]\n pub fn remove\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003cV\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 11499, + "EndOffset": 11585, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003cK, V\u003e Serialize for AHashMap\u003cK, V\u003e\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize\u003cS: Serializer\u003e(\u0026self, serializer: S) -\u003e Result\u003cS::Ok, S::Error\u003e {\n self.deref().serialize(serializer)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap.visit_map": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.visit_map", + "File": "hash_map.rs", + "Line": 456, + "StartOffset": 12571, + "EndOffset": 12957, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap::deserialize": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::deserialize", + "File": "hash_map.rs", + "Line": 435, + "StartOffset": 11782, + "EndOffset": 11930, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn deserialize\u003cD: Deserializer\u003c'de\u003e\u003e(deserializer: D) -\u003e Result\u003cSelf, D::Error\u003e {\n let hash_map = HashMap::deserialize(deserializer);\n hash_map.map(|hash_map| Self(hash_map))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap::deserialize_in_place": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::deserialize_in_place", + "File": "hash_map.rs", + "Line": 440, + "StartOffset": 11983, + "EndOffset": 12997, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn deserialize_in_place\u003cD: Deserializer\u003c'de\u003e\u003e(deserializer: D, place: \u0026mut Self) -\u003e Result\u003c(), D::Error\u003e {\n use serde::de::{MapAccess, Visitor};\n\n struct MapInPlaceVisitor\u003c'a, K: 'a, V: 'a\u003e(\u0026'a mut AHashMap\u003cK, V\u003e);\n\n impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\n }\n\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n }\n\n deserializer.deserialize_map(MapInPlaceVisitor(place))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap::new": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::new", + "File": "hash_map.rs", + "Line": 54, + "StartOffset": 1391, + "EndOffset": 1637, + "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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 using [RandomState::new] which obtains its keys from [RandomSource].\n /// See the documentation in [RandomSource] for notes about key strength.\n pub fn new() -\u003e Self {\n AHashMap(HashMap::with_hasher(RandomState::new()))\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": 1701, + "EndOffset": 1917, + "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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) -\u003e 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" + } + } + }, + "AHashMap::with_capacity_and_hasher": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity_and_hasher", + "File": "hash_map.rs", + "Line": 75, + "StartOffset": 2176, + "EndOffset": 2258, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\nwhere\n S: BuildHasher,\n{\n pub fn with_capacity_and_hasher(capacity: usize, hash_builder: S) -\u003e Self {\n AHashMap(HashMap::with_capacity_and_hasher(capacity, hash_builder))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "AHashMap::with_hasher": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_hasher", + "File": "hash_map.rs", + "Line": 71, + "StartOffset": 2065, + "EndOffset": 2118, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\nwhere\n S: BuildHasher,\n{\n pub fn with_hasher(hash_builder: S) -\u003e Self {\n AHashMap(HashMap::with_hasher(hash_builder))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Debug\u003cAHashMap\u003e.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Debug\u003cAHashMap\u003e.fmt", + "File": "hash_map.rs", + "Line": 342, + "StartOffset": 9167, + "EndOffset": 9231, + "Content": "impl\u003cK, V, S\u003e Debug for AHashMap\u003cK, V, S\u003e\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(\u0026self, fmt: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n self.0.fmt(fmt)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Default\u003cAHashMap\u003e::default": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Default\u003cAHashMap\u003e::default", + "File": "hash_map.rs", + "Line": 412, + "StartOffset": 11216, + "EndOffset": 11334, + "Content": "/// NOTE: For safety this trait impl is only available available if either of the flags `runtime-rng` (on by default) or\n/// `compile-time-rng` are enabled. This is to prevent weakly keyed maps from being accidentally created. Instead one of\n/// constructors for [RandomState] must be used.\n#[cfg(any(feature = \"compile-time-rng\", feature = \"runtime-rng\", feature = \"no-rng\"))]\nimpl\u003cK, V\u003e Default for AHashMap\u003cK, V, RandomState\u003e {\n #[inline]\n #[inline]\n fn default() -\u003e AHashMap\u003cK, V, RandomState\u003e {\n AHashMap(HashMap::default())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Deref\u003cAHashMap\u003e.deref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Deref\u003cAHashMap\u003e.deref", + "File": "hash_map.rs", + "Line": 280, + "StartOffset": 8039, + "EndOffset": 8115, + "Content": "impl\u003cK, V, S\u003e Deref for AHashMap\u003cK, V, S\u003e {\n type Target = HashMap\u003cK, V, S\u003e;\n fn deref(\u0026self) -\u003e \u0026Self::Target {\n \u0026self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "DerefMut\u003cAHashMap\u003e.deref_mut": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "DerefMut\u003cAHashMap\u003e.deref_mut", + "File": "hash_map.rs", + "Line": 286, + "StartOffset": 8139, + "EndOffset": 8238, + "Content": "impl\u003cK, V, S\u003e DerefMut for AHashMap\u003cK, V, S\u003e {\n fn deref_mut(\u0026mut self) -\u003e \u0026mut Self::Target {\n \u0026mut self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Extend\u003cAHashMap\u003e.extend": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "hash_map.rs", + "Line": 401, + "StartOffset": 10709, + "EndOffset": 10802, + "Content": "impl\u003c'a, K, V, S\u003e Extend\u003c(\u0026'a K, \u0026'a V)\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Copy + 'a,\n V: Copy + 'a,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend\u003cT: IntoIterator\u003cItem = (\u0026'a K, \u0026'a V)\u003e\u003e(\u0026mut 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" + } + } + }, + "From\u003cAHashMap\u003e::from": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "From\u003cAHashMap\u003e::from", + "File": "hash_map.rs", + "Line": 33, + "StartOffset": 925, + "EndOffset": 1201, + "Content": "impl\u003cK, V, const N: usize\u003e From\u003c[(K, V); N]\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Eq + Hash,\n{\n /// # Examples\n ///\n /// ```\n /// use ahash::AHashMap;\n ///\n /// let map1 = AHashMap::from([(1, 2), (3, 4)]);\n /// let map2: AHashMap\u003c_, _\u003e = [(1, 2), (3, 4)].into();\n /// assert_eq!(map1, map2);\n /// ```\n /// # Examples\n ///\n /// ```\n /// use ahash::AHashMap;\n ///\n /// let map1 = AHashMap::from([(1, 2), (3, 4)]);\n /// let map2: AHashMap\u003c_, _\u003e = [(1, 2), (3, 4)].into();\n /// assert_eq!(map1, map2);\n /// ```\n fn from(arr: [(K, V); N]) -\u003e Self {\n Self::from_iter(arr)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "FromIterator\u003cAHashMap\u003e::from_iter": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "FromIterator\u003cAHashMap\u003e::from_iter", + "File": "hash_map.rs", + "Line": 351, + "StartOffset": 9351, + "EndOffset": 9677, + "Content": "impl\u003cK, V\u003e FromIterator\u003c(K, V)\u003e for AHashMap\u003cK, V, RandomState\u003e\nwhere\n K: Eq + Hash,\n{\n /// This crates a hashmap from the provided iterator using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n /// This crates a hashmap from the provided iterator using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n fn from_iter\u003cT: IntoIterator\u003cItem = (K, V)\u003e\u003e(iter: T) -\u003e Self {\n let mut inner = HashMap::with_hasher(RandomState::new());\n inner.extend(iter);\n AHashMap(inner)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Into\u003cAHashMap\u003e.into": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Into\u003cAHashMap\u003e.into", + "File": "hash_map.rs", + "Line": 48, + "StartOffset": 1238, + "EndOffset": 1368, + "Content": "impl\u003cK, V\u003e Into\u003cHashMap\u003cK, V, crate::RandomState\u003e\u003e for AHashMap\u003cK, V\u003e {\n fn into(self) -\u003e HashMap\u003cK, V, crate::RandomState\u003e {\n self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "IntoIterator\u003cAHashMap\u003e.into_iter": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "IntoIterator\u003cAHashMap\u003e.into_iter", + "File": "hash_map.rs", + "Line": 371, + "StartOffset": 10022, + "EndOffset": 10115, + "Content": "impl\u003c'a, K, V, S\u003e IntoIterator for \u0026'a mut AHashMap\u003cK, V, S\u003e {\n type Item = (\u0026'a K, \u0026'a mut V);\n type IntoIter = hash_map::IterMut\u003c'a, K, V\u003e;\n fn into_iter(self) -\u003e Self::IntoIter {\n (\u0026mut self.0).iter_mut()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "PartialEq\u003cAHashMap\u003e.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "PartialEq\u003cAHashMap\u003e.eq", + "File": "hash_map.rs", + "Line": 304, + "StartOffset": 8470, + "EndOffset": 8527, + "Content": "impl\u003cK, V, S\u003e PartialEq for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(\u0026self, other: \u0026AHashMap\u003cK, V, S\u003e) -\u003e bool {\n self.0.eq(\u0026other.0)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Sized\u003cAHashMap\u003e.index": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Sized\u003cAHashMap\u003e.index", + "File": "hash_map.rs", + "Line": 325, + "StartOffset": 8816, + "EndOffset": 9037, + "Content": "impl\u003cK, Q: ?Sized, V, S\u003e Index\u003c\u0026Q\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Borrow\u003cQ\u003e,\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(\u0026self, key: \u0026Q) -\u003e \u0026V {\n self.0.index(key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "test_borrow": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "test_borrow", + "File": "hash_map.rs", + "Line": 478, + "StartOffset": 13092, + "EndOffset": 13269, + "Content": "#[test]\n fn test_borrow() {\n let mut map: AHashMap\u003cString, String\u003e = AHashMap::new();\n map.insert(\"foo\".to_string(), \"Bar\".to_string());\n map.insert(\"Bar\".to_string(), map.get(\"foo\").unwrap().to_owned());\n }" + }, + "test_serde": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "test_serde", + "File": "hash_map.rs", + "Line": 485, + "StartOffset": 13349, + "EndOffset": 14032, + "Content": "#[cfg(feature = \"serde\")]\n #[test]\n fn test_serde() {\n let mut map = AHashMap::new();\n map.insert(\"for\".to_string(), 0);\n map.insert(\"bar\".to_string(), 1);\n let mut serialization = serde_json::to_string(\u0026map).unwrap();\n let mut deserialization: AHashMap\u003cString, u64\u003e = serde_json::from_str(\u0026serialization).unwrap();\n assert_eq!(deserialization, map);\n\n map.insert(\"baz\".to_string(), 2);\n serialization = serde_json::to_string(\u0026map).unwrap();\n let mut deserializer = serde_json::Deserializer::from_str(\u0026serialization);\n AHashMap::deserialize_in_place(\u0026mut deserializer, \u0026mut deserialization).unwrap();\n assert_eq!(deserialization, map);\n }" + } + }, + "Types": { + "AHashMap": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "hash_map.rs", + "Line": 18, + "StartOffset": -1, + "EndOffset": 647, + "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\u003cK, V, S = crate::RandomState\u003e(HashMap\u003cK, V, S\u003e);", + "Methods": { + "deref": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Deref\u003cAHashMap\u003e.deref" + }, + "deref_mut": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "DerefMut\u003cAHashMap\u003e.deref_mut" + }, + "eq": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "PartialEq\u003cAHashMap\u003e.eq" + }, + "expecting": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.expecting" + }, + "extend": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend" + }, + "fmt": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Debug\u003cAHashMap\u003e.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": "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": "Sized\u003cAHashMap\u003e.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": "Into\u003cAHashMap\u003e.into" + }, + "into_iter": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "IntoIterator\u003cAHashMap\u003e.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" + }, + "visit_map": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.visit_map" + } + } + }, + "IntoIter": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "IntoIter", + "File": "hash_map.rs", + "Line": 378, + "StartOffset": 10207, + "EndOffset": 10248, + "Content": "type IntoIter = hash_map::IntoIter\u003cK, V\u003e;" + }, + "Item": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Item", + "File": "hash_map.rs", + "Line": 361, + "StartOffset": 9709, + "EndOffset": 9736, + "Content": "type Item = (\u0026'a K, \u0026'a V);" + }, + "MapInPlaceVisitor": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "MapInPlaceVisitor", + "File": "hash_map.rs", + "Line": 443, + "StartOffset": 12144, + "EndOffset": 12211, + "Content": "struct MapInPlaceVisitor\u003c'a, K: 'a, V: 'a\u003e(\u0026'a mut AHashMap\u003cK, V\u003e);" + }, + "Output": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Output", + "File": "hash_map.rs", + "Line": 323, + "StartOffset": 8793, + "EndOffset": 8809, + "Content": "type Output = V;" + }, + "Target": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Target", + "File": "hash_map.rs", + "Line": 279, + "StartOffset": 7995, + "EndOffset": 8026, + "Content": "type Target = HashMap\u003cK, V, S\u003e;" + }, + "Value": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Value", + "File": "hash_map.rs", + "Line": 450, + "StartOffset": 12391, + "EndOffset": 12407, + "Content": "type Value = ();" + } + }, + "Vars": { + "hash_map": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "hash_map", + "File": "hash_map.rs", + "Line": 436, + "StartOffset": 11788, + "EndOffset": 11838, + "Content": "let hash_map = HashMap::deserialize(deserializer);" + }, + "mut deserialization": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "mut deserialization", + "File": "hash_map.rs", + "Line": 492, + "StartOffset": 13541, + "EndOffset": 13636, + "Content": "let mut deserialization: AHashMap\u003cString, u64\u003e = serde_json::from_str(\u0026serialization).unwrap();" + }, + "mut deserializer": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "mut deserializer", + "File": "hash_map.rs", + "Line": 497, + "StartOffset": 13800, + "EndOffset": 13874, + "Content": "let mut deserializer = serde_json::Deserializer::from_str(\u0026serialization);" + }, + "mut inner": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "mut inner", + "File": "hash_map.rs", + "Line": 354, + "StartOffset": 9518, + "EndOffset": 9575, + "Content": "let mut inner = HashMap::with_hasher(RandomState::new());" + }, + "mut map": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "mut map", + "File": "hash_map.rs", + "Line": 480, + "StartOffset": 13126, + "EndOffset": 13182, + "Content": "let mut map: AHashMap\u003cString, String\u003e = AHashMap::new();" + }, + "mut serialization": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "mut serialization", + "File": "hash_map.rs", + "Line": 491, + "StartOffset": 13499, + "EndOffset": 13560, + "Content": "let mut serialization = serde_json::to_string(\u0026map).unwrap();" + } + } + } + }, + "Dependencies": {}, + "Files": { + "hash_map.rs": { + "Path": "hash_map.rs" + } + } + }, + "bytes@1.6.0": { + "Language": "rust", + "Version": "1.6.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.6.0", + "PkgPath": "bytes::bytes", + "Name": "_split_off_must_use", + "File": "bytes.rs", + "Line": 1310, + "StartOffset": -1, + "EndOffset": 36589, + "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.6.0", + "PkgPath": "bytes::bytes", + "Name": "_split_to_must_use", + "File": "bytes.rs", + "Line": 1300, + "StartOffset": -1, + "EndOffset": 36395, + "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() {}" + }, + "advance": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "advance", + "File": "bytes.rs", + "Line": 569, + "StartOffset": 16315, + "EndOffset": 16583, + "Content": "#[inline]\n fn advance(\u0026mut self, cnt: usize) {\n assert!(\n cnt \u003c= self.len(),\n \"cannot advance past `remaining`: {:?} \u003c= {:?}\",\n cnt,\n self.len(),\n );\n\n unsafe {\n self.inc_start(cnt);\n }\n }" + }, + "as_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "as_ref", + "File": "bytes.rs", + "Line": 604, + "StartOffset": 16991, + "EndOffset": 17067, + "Content": "#[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + }, + "as_slice": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "as_slice", + "File": "bytes.rs", + "Line": 526, + "StartOffset": 15363, + "EndOffset": 15413, + "Content": "#[inline]\n fn as_slice(\u0026self) -\u003e \u0026[u8] {\n unsafe { slice::from_raw_parts(self.ptr, self.len) }\n }" + }, + "borrow": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "borrow", + "File": "bytes.rs", + "Line": 620, + "StartOffset": 17251, + "EndOffset": 17314, + "Content": "fn borrow(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + }, + "bytes_cloning_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "bytes_cloning_vec", + "File": "bytes.rs", + "Line": 1327, + "StartOffset": 36700, + "EndOffset": 37416, + "Content": "#[test]\n fn bytes_cloning_vec() {\n loom::model(|| {\n let a = Bytes::from(b\"abcdefgh\".to_vec());\n let addr = a.as_ptr() as usize;\n\n // test the Bytes::clone is Sync by putting it in an Arc\n let a1 = Arc::new(a);\n let a2 = a1.clone();\n\n let t1 = thread::spawn(move || {\n let b: Bytes = (*a1).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });\n\n let t2 = thread::spawn(move || {\n let b: Bytes = (*a2).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });\n\n t1.join().unwrap();\n t2.join().unwrap();\n });\n }" + }, + "chunk": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "chunk", + "File": "bytes.rs", + "Line": 564, + "StartOffset": 16239, + "EndOffset": 16286, + "Content": "#[inline]\n fn chunk(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + }, + "clear": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "clear", + "File": "bytes.rs", + "Line": 493, + "StartOffset": 14741, + "EndOffset": 15036, + "Content": "/// Clears the buffer, removing all data.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut buf = Bytes::from(\u0026b\"hello world\"[..]);\n /// buf.clear();\n /// assert!(buf.is_empty());\n /// ```\n #[inline]\n pub fn clear(\u0026mut self) {\n self.truncate(0);\n }" + }, + "clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "clone", + "File": "bytes.rs", + "Line": 552, + "StartOffset": 15996, + "EndOffset": 16065, + "Content": "#[inline]\n fn clone(\u0026self) -\u003e Bytes {\n unsafe { (self.vtable.clone)(\u0026self.data, self.ptr, self.len) }\n }" + }, + "cmp": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "cmp", + "File": "bytes.rs", + "Line": 664, + "StartOffset": 18153, + "EndOffset": 18227, + "Content": "fn cmp(\u0026self, other: \u0026Bytes) -\u003e cmp::Ordering {\n self.as_slice().cmp(other.as_slice())\n }" + }, + "copy_from_slice": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "copy_from_slice", + "File": "bytes.rs", + "Line": 235, + "StartOffset": 7536, + "EndOffset": 7648, + "Content": "/// Creates `Bytes` instance from slice, by copying it.\n pub fn copy_from_slice(data: \u0026[u8]) -\u003e Self {\n data.to_vec().into()\n }" + }, + "copy_to_bytes": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "copy_to_bytes", + "File": "bytes.rs", + "Line": 583, + "StartOffset": 16598, + "EndOffset": 16847, + "Content": "fn copy_to_bytes(\u0026mut self, len: usize) -\u003e Self {\n if len == self.remaining() {\n core::mem::replace(self, Bytes::new())\n } else {\n let ret = self.slice(..len);\n self.advance(len);\n ret\n }\n }" + }, + "default": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "default", + "File": "bytes.rs", + "Line": 812, + "StartOffset": 21508, + "EndOffset": 21576, + "Content": "#[inline]\n fn default() -\u003e Bytes {\n Bytes::new()\n }" + }, + "deref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "deref", + "File": "bytes.rs", + "Line": 597, + "StartOffset": 16912, + "EndOffset": 16959, + "Content": "#[inline]\n fn deref(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + }, + "drop": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "drop", + "File": "bytes.rs", + "Line": 1080, + "StartOffset": 28768, + "EndOffset": 28817, + "Content": "fn drop(\u0026mut self) {\n unsafe { dealloc(self.buf, Layout::from_size_align(self.cap, 1).unwrap()) }\n }" + }, + "eq": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "eq", + "File": "bytes.rs", + "Line": 744, + "StartOffset": 19994, + "EndOffset": 20073, + "Content": "fn eq(\u0026self, other: \u0026String) -\u003e bool {\n *self == other[..]\n }" + }, + "fmt": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "fmt", + "File": "bytes.rs", + "Line": 911, + "StartOffset": 23997, + "EndOffset": 24233, + "Content": "fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"Vtable\")\n .field(\"clone\", \u0026(self.clone as *const ()))\n .field(\"drop\", \u0026(self.drop as *const ()))\n .finish()\n }" + }, + "free_boxed_slice": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "free_boxed_slice", + "File": "bytes.rs", + "Line": 1065, + "StartOffset": -1, + "EndOffset": 28514, + "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = (offset as usize - buf as usize) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" + }, + "from": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "from", + "File": "bytes.rs", + "Line": 865, + "StartOffset": 22773, + "EndOffset": 23636, + "Content": "fn from(slice: Box\u003c[u8]\u003e) -\u003e Bytes {\n // Box\u003c[u8]\u003e doesn't contain a heap allocation for empty slices,\n // so the pointer isn't aligned enough for the KIND_VEC stashing to\n // work.\n if slice.is_empty() {\n return Bytes::new();\n }\n\n let len = slice.len();\n let ptr = Box::into_raw(slice) as *mut u8;\n\n if ptr as usize \u0026 0x1 == 0 {\n let data = ptr_map(ptr, |addr| addr | KIND_VEC);\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(data.cast()),\n vtable: \u0026PROMOTABLE_EVEN_VTABLE,\n }\n } else {\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(ptr.cast()),\n vtable: \u0026PROMOTABLE_ODD_VTABLE,\n }\n }\n }" + }, + "from_iter": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "from_iter", + "File": "bytes.rs", + "Line": 644, + "StartOffset": 17707, + "EndOffset": 17811, + "Content": "fn from_iter\u003cT: IntoIterator\u003cItem = u8\u003e\u003e(into_iter: T) -\u003e Self {\n Vec::from_iter(into_iter).into()\n }" + }, + "from_static": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "from_static", + "File": "bytes.rs", + "Line": 149, + "StartOffset": 5265, + "EndOffset": 5890, + "Content": "/// Creates a new `Bytes` from a static slice.\n ///\n /// The returned `Bytes` will point directly to the static slice. There is\n /// no allocating or copying.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::from_static(b\"hello\");\n /// assert_eq!(\u0026b[..], b\"hello\");\n /// ```\n #[inline]\n #[cfg(not(all(loom, test)))]\n pub const fn from_static(bytes: \u0026'static [u8]) -\u003e Self {\n Bytes {\n ptr: bytes.as_ptr(),\n len: bytes.len(),\n data: AtomicPtr::new(ptr::null_mut()),\n vtable: \u0026STATIC_VTABLE,\n }\n }" + }, + "hash": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "hash", + "File": "bytes.rs", + "Line": 611, + "StartOffset": 17099, + "EndOffset": 17206, + "Content": "fn hash\u003cH\u003e(\u0026self, state: \u0026mut H)\n where\n H: hash::Hasher,\n {\n self.as_slice().hash(state);\n }" + }, + "inc_start": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "inc_start", + "File": "bytes.rs", + "Line": 531, + "StartOffset": 15479, + "EndOffset": 15709, + "Content": "#[inline]\n unsafe fn inc_start(\u0026mut self, by: usize) {\n // should already be asserted, but debug assert for tests\n debug_assert!(self.len \u003e= by, \"internal: inc_start out of bounds\");\n self.len -= by;\n self.ptr = self.ptr.add(by);\n }" + }, + "into_iter": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "into_iter", + "File": "bytes.rs", + "Line": 629, + "StartOffset": 17433, + "EndOffset": 17478, + "Content": "fn into_iter(self) -\u003e Self::IntoIter {\n IntoIter::new(self)\n }" + }, + "is_empty": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "is_empty", + "File": "bytes.rs", + "Line": 198, + "StartOffset": 6480, + "EndOffset": 6748, + "Content": "/// Returns true if the `Bytes` has a length of 0.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::new();\n /// assert!(b.is_empty());\n /// ```\n #[inline]\n pub const fn is_empty(\u0026self) -\u003e bool {\n self.len == 0\n }" + }, + "is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "is_unique", + "File": "bytes.rs", + "Line": 213, + "StartOffset": 6775, + "EndOffset": 7476, + "Content": "/// Returns true if this is the only reference to the data.\n ///\n /// Always returns false if the data is backed by a static slice.\n ///\n /// The result of this method may be invalidated immediately if another\n /// thread clones this value while this is being called. Ensure you have\n /// unique access to this value (`\u0026mut Bytes`) first if you need to be\n /// certain the result is valid (i.e. for safety reasons)\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let a = Bytes::from(vec![1, 2, 3]);\n /// assert!(a.is_unique());\n /// let b = a.clone();\n /// assert!(!a.is_unique());\n /// ```\n pub fn is_unique(\u0026self) -\u003e bool {\n unsafe { (self.vtable.is_unique)(\u0026self.data) }\n }" + }, + "len": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "len", + "File": "bytes.rs", + "Line": 183, + "StartOffset": 6171, + "EndOffset": 6458, + "Content": "/// Returns the number of bytes contained in this `Bytes`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::from(\u0026b\"hello\"[..]);\n /// assert_eq!(b.len(), 5);\n /// ```\n #[inline]\n pub const fn len(\u0026self) -\u003e usize {\n self.len\n }" + }, + "new": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "new", + "File": "bytes.rs", + "Line": 122, + "StartOffset": 4585, + "EndOffset": 5096, + "Content": "/// Creates a new empty `Bytes`.\n ///\n /// This will not allocate and the returned `Bytes` handle will be empty.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::new();\n /// assert_eq!(\u0026b[..], b\"\");\n /// ```\n #[inline]\n #[cfg(not(all(loom, test)))]\n pub const fn new() -\u003e Self {\n // Make it a named const to work around\n // \"unsizing casts are not allowed in const fn\"\n const EMPTY: \u0026[u8] = \u0026[];\n Bytes::from_static(EMPTY)\n }" + }, + "partial_cmp": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "partial_cmp", + "File": "bytes.rs", + "Line": 804, + "StartOffset": 21380, + "EndOffset": 21451, + "Content": "fn partial_cmp(\u0026self, other: \u0026\u0026'a T) -\u003e Option\u003ccmp::Ordering\u003e {\n self.partial_cmp(\u0026**other)\n }" + }, + "promotable_even_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_clone", + "File": "bytes.rs", + "Line": 962, + "StartOffset": -1, + "EndOffset": 25798, + "Content": "unsafe fn promotable_even_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 \u0026 !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.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_drop", + "File": "bytes.rs", + "Line": 1007, + "StartOffset": -1, + "EndOffset": 27101, + "Content": "unsafe fn promotable_even_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" + }, + "promotable_even_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_to_vec", + "File": "bytes.rs", + "Line": 1001, + "StartOffset": -1, + "EndOffset": 26633, + "Content": "unsafe fn promotable_even_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK)\n })\n}" + }, + "promotable_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_is_unique", + "File": "bytes.rs", + "Line": 1053, + "StartOffset": -1, + "EndOffset": 28377, + "Content": "unsafe fn promotable_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).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.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_clone", + "File": "bytes.rs", + "Line": 1022, + "StartOffset": -1, + "EndOffset": 27491, + "Content": "unsafe fn promotable_odd_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_drop", + "File": "bytes.rs", + "Line": 1038, + "StartOffset": -1, + "EndOffset": 28056, + "Content": "unsafe fn promotable_odd_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_to_vec", + "File": "bytes.rs", + "Line": 1034, + "StartOffset": -1, + "EndOffset": 27595, + "Content": "unsafe fn promotable_odd_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" + }, + "promotable_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_to_vec", + "File": "bytes.rs", + "Line": 975, + "StartOffset": -1, + "EndOffset": 26422, + "Content": "unsafe fn promotable_to_vec(\n data: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -\u003e *mut u8,\n) -\u003e Vec\u003cu8\u003e {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 = (ptr as usize - buf as usize) + 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.6.0", + "PkgPath": "bytes::bytes", + "Name": "ptr_map", + "File": "bytes.rs", + "Line": 1288, + "StartOffset": -1, + "EndOffset": 36169, + "Content": "#[cfg(not(miri))]\nfn ptr_map\u003cF\u003e(ptr: *mut u8, f: F) -\u003e *mut u8\nwhere\n F: FnOnce(usize) -\u003e usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n new_addr as *mut u8\n}" + }, + "release_shared": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "release_shared", + "File": "bytes.rs", + "Line": 1239, + "StartOffset": -1, + "EndOffset": 35405, + "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 // \u003e It is important to enforce any possible access to the object in one\n // \u003e thread (through an existing reference) to *happen before* deleting\n // \u003e the object in a different thread. This is achieved by a \"release\"\n // \u003e operation after dropping a reference (any access to the object\n // \u003e through this reference must obviously happened before), and an\n // \u003e \"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}" + }, + "remaining": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "remaining", + "File": "bytes.rs", + "Line": 559, + "StartOffset": 16144, + "EndOffset": 16215, + "Content": "#[inline]\n fn remaining(\u0026self) -\u003e usize {\n self.len()\n }" + }, + "shallow_clone_arc": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "shallow_clone_arc", + "File": "bytes.rs", + "Line": 1152, + "StartOffset": -1, + "EndOffset": 31409, + "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size \u003e usize::MAX \u003e\u003e 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: \u0026SHARED_VTABLE,\n }\n}" + }, + "shallow_clone_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "shallow_clone_vec", + "File": "bytes.rs", + "Line": 1167, + "StartOffset": -1, + "EndOffset": 34061, + "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -\u003e Bytes {\n // If the buffer is still tracked in a `Vec\u003cu8\u003e`. 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 `\u0026mut 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 as usize - buf as usize) + 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 \u0026 KIND_MASK),\n \"internal: Box\u003cShared\u003e should have an aligned pointer\",\n );\n\n // Try compare \u0026 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) =\u003e {\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: \u0026SHARED_VTABLE,\n }\n }\n Err(actual) =\u003e {\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.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared_clone", + "File": "bytes.rs", + "Line": 1102, + "StartOffset": -1, + "EndOffset": 29640, + "Content": "unsafe fn shared_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e 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.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared_drop", + "File": "bytes.rs", + "Line": 1146, + "StartOffset": -1, + "EndOffset": 31059, + "Content": "unsafe fn shared_drop(data: \u0026mut AtomicPtr\u003c()\u003e, _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.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared_is_unique", + "File": "bytes.rs", + "Line": 1140, + "StartOffset": -1, + "EndOffset": 30891, + "Content": "pub(crate) unsafe fn shared_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" + }, + "shared_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_vec", + "File": "bytes.rs", + "Line": 1136, + "StartOffset": -1, + "EndOffset": 30623, + "Content": "unsafe fn shared_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared_to_vec_impl", + "File": "bytes.rs", + "Line": 1107, + "StartOffset": -1, + "EndOffset": 30527, + "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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 let buf = (*shared).buf;\n let cap = (*shared).cap;\n\n // Deallocate Shared\n drop(Box::from_raw(shared as *mut mem::ManuallyDrop\u003cShared\u003e));\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}" + }, + "slice": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "slice", + "File": "bytes.rs", + "Line": 240, + "StartOffset": 7682, + "EndOffset": 9305, + "Content": "/// Returns a slice of self for the provided range.\n ///\n /// This will increment the reference count for the underlying memory and\n /// return a new `Bytes` handle set to the slice.\n ///\n /// This operation is `O(1)`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.slice(2..5);\n ///\n /// assert_eq!(\u0026b[..], b\"llo\");\n /// ```\n ///\n /// # Panics\n ///\n /// Requires that `begin \u003c= end` and `end \u003c= self.len()`, otherwise slicing\n /// will panic.\n pub fn slice(\u0026self, range: impl RangeBounds\u003cusize\u003e) -\u003e Self {\n use core::ops::Bound;\n\n let len = self.len();\n\n let begin = match range.start_bound() {\n Bound::Included(\u0026n) =\u003e n,\n Bound::Excluded(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Unbounded =\u003e 0,\n };\n\n let end = match range.end_bound() {\n Bound::Included(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Excluded(\u0026n) =\u003e n,\n Bound::Unbounded =\u003e len,\n };\n\n assert!(\n begin \u003c= end,\n \"range start must not be greater than end: {:?} \u003c= {:?}\",\n begin,\n end,\n );\n assert!(\n end \u003c= len,\n \"range end out of bounds: {:?} \u003c= {:?}\",\n end,\n len,\n );\n\n if end == begin {\n return Bytes::new();\n }\n\n let mut ret = self.clone();\n\n ret.len = end - begin;\n ret.ptr = unsafe { ret.ptr.add(begin) };\n\n ret\n }" + }, + "slice_ref": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "slice_ref", + "File": "bytes.rs", + "Line": 304, + "StartOffset": 9322, + "EndOffset": 11166, + "Content": "/// Returns a slice of self that is equivalent to the given `subset`.\n ///\n /// When processing a `Bytes` buffer with other tools, one often gets a\n /// `\u0026[u8]` which is in fact a slice of the `Bytes`, i.e. a subset of it.\n /// This function turns that `\u0026[u8]` into another `Bytes`, as if one had\n /// called `self.slice()` with the offsets that correspond to `subset`.\n ///\n /// This operation is `O(1)`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let bytes = Bytes::from(\u0026b\"012345678\"[..]);\n /// let as_slice = bytes.as_ref();\n /// let subset = \u0026as_slice[2..6];\n /// let subslice = bytes.slice_ref(\u0026subset);\n /// assert_eq!(\u0026subslice[..], b\"2345\");\n /// ```\n ///\n /// # Panics\n ///\n /// Requires that the given `sub` slice is in fact contained within the\n /// `Bytes` buffer; otherwise this function will panic.\n pub fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e Self {\n // Empty slice and empty Bytes may have their pointers reset\n // so explicitly allow empty slice to be a subslice of any slice.\n if subset.is_empty() {\n return Bytes::new();\n }\n\n let bytes_p = self.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 \u003e= bytes_p,\n \"subset pointer ({:p}) is smaller than self pointer ({:p})\",\n subset.as_ptr(),\n self.as_ptr(),\n );\n assert!(\n sub_p + sub_len \u003c= bytes_p + bytes_len,\n \"subset is out of bounds: self = ({:p}, {}), subset = ({:p}, {})\",\n self.as_ptr(),\n bytes_len,\n subset.as_ptr(),\n sub_len,\n );\n\n let sub_offset = sub_p - bytes_p;\n\n self.slice(sub_offset..(sub_offset + sub_len))\n }" + }, + "split_off": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "split_off", + "File": "bytes.rs", + "Line": 362, + "StartOffset": 11226, + "EndOffset": 12394, + "Content": "/// Splits the bytes into two at the given index.\n ///\n /// Afterwards `self` contains elements `[0, at)`, and the returned `Bytes`\n /// contains elements `[at, len)`.\n ///\n /// This is an `O(1)` operation that just increases the reference count and\n /// sets a few indices.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.split_off(5);\n ///\n /// assert_eq!(\u0026a[..], b\"hello\");\n /// assert_eq!(\u0026b[..], b\" world\");\n /// ```\n ///\n /// # Panics\n ///\n /// Panics if `at \u003e len`.\n #[must_use = \"consider Bytes::truncate if you don't need the other half\"]\n pub fn split_off(\u0026mut self, at: usize) -\u003e Self {\n assert!(\n at \u003c= self.len(),\n \"split_off out of bounds: {:?} \u003c= {:?}\",\n at,\n self.len(),\n );\n\n if at == self.len() {\n return Bytes::new();\n }\n\n if at == 0 {\n return mem::replace(self, Bytes::new());\n }\n\n let mut ret = self.clone();\n\n self.len = at;\n\n unsafe { ret.inc_start(at) };\n\n ret\n }" + }, + "split_to": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "split_to", + "File": "bytes.rs", + "Line": 411, + "StartOffset": 12411, + "EndOffset": 13574, + "Content": "/// Splits the bytes into two at the given index.\n ///\n /// Afterwards `self` contains elements `[at, len)`, and the returned\n /// `Bytes` contains elements `[0, at)`.\n ///\n /// This is an `O(1)` operation that just increases the reference count and\n /// sets a few indices.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.split_to(5);\n ///\n /// assert_eq!(\u0026a[..], b\" world\");\n /// assert_eq!(\u0026b[..], b\"hello\");\n /// ```\n ///\n /// # Panics\n ///\n /// Panics if `at \u003e len`.\n #[must_use = \"consider Bytes::advance if you don't need the other half\"]\n pub fn split_to(\u0026mut self, at: usize) -\u003e Self {\n assert!(\n at \u003c= self.len(),\n \"split_to out of bounds: {:?} \u003c= {:?}\",\n at,\n self.len(),\n );\n\n if at == self.len() {\n return mem::replace(self, Bytes::new());\n }\n\n if at == 0 {\n return Bytes::new();\n }\n\n let mut ret = self.clone();\n\n unsafe { self.inc_start(at) };\n\n ret.len = at;\n ret\n }" + }, + "static_clone": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "static_clone", + "File": "bytes.rs", + "Line": 928, + "StartOffset": -1, + "EndOffset": 24575, + "Content": "unsafe fn static_clone(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e 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.6.0", + "PkgPath": "bytes::bytes", + "Name": "static_drop", + "File": "bytes.rs", + "Line": 942, + "StartOffset": -1, + "EndOffset": 24896, + "Content": "unsafe fn static_drop(_: \u0026mut AtomicPtr\u003c()\u003e, _: *const u8, _: usize) {\n // nothing to drop for \u0026'static [u8]\n}" + }, + "static_is_unique": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "static_is_unique", + "File": "bytes.rs", + "Line": 938, + "StartOffset": -1, + "EndOffset": 24812, + "Content": "fn static_is_unique(_: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n false\n}" + }, + "static_to_vec": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "static_to_vec", + "File": "bytes.rs", + "Line": 933, + "StartOffset": -1, + "EndOffset": 24741, + "Content": "unsafe fn static_to_vec(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" + }, + "truncate": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "truncate", + "File": "bytes.rs", + "Line": 459, + "StartOffset": 13591, + "EndOffset": 14726, + "Content": "/// Shortens the buffer, keeping the first `len` bytes and dropping the\n /// rest.\n ///\n /// If `len` is greater than the buffer's current length, this has no\n /// effect.\n ///\n /// The [split_off](`Self::split_off()`) method can emulate `truncate`, but this causes the\n /// excess bytes to be returned instead of dropped.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut buf = Bytes::from(\u0026b\"hello world\"[..]);\n /// buf.truncate(5);\n /// assert_eq!(buf, b\"hello\"[..]);\n /// ```\n #[inline]\n pub fn truncate(\u0026mut self, len: usize) {\n if len \u003c self.len {\n // The Vec \"promotable\" vtables do not store the capacity,\n // so we cannot truncate while using this repr. We *have* to\n // promote using `split_off` so the capacity can be stored.\n if self.vtable as *const Vtable == \u0026PROMOTABLE_EVEN_VTABLE\n || self.vtable as *const Vtable == \u0026PROMOTABLE_ODD_VTABLE\n {\n drop(self.split_off(len));\n } else {\n self.len = len;\n }\n }\n }" + }, + "with_vtable": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "with_vtable", + "File": "bytes.rs", + "Line": 509, + "StartOffset": 15067, + "EndOffset": 15332, + "Content": "#[inline]\n pub(crate) unsafe fn with_vtable(\n ptr: *const u8,\n len: usize,\n data: AtomicPtr\u003c()\u003e,\n vtable: \u0026'static Vtable,\n ) -\u003e Bytes {\n Bytes {\n ptr,\n len,\n data,\n vtable,\n }\n }" + } + }, + "Types": { + "Bytes": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Bytes", + "File": "bytes.rs", + "Line": 19, + "StartOffset": -1, + "EndOffset": 4125, + "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\u003c[u8]\u003e`), 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\u003c()\u003e,\n vtable: \u0026'static Vtable,\n}" + }, + "IntoIter": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "IntoIter", + "File": "bytes.rs", + "Line": 636, + "StartOffset": 17552, + "EndOffset": 17594, + "Content": "type IntoIter = core::slice::Iter\u003c'a, u8\u003e;" + }, + "Item": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Item", + "File": "bytes.rs", + "Line": 626, + "StartOffset": 17346, + "EndOffset": 17361, + "Content": "type Item = u8;" + }, + "Shared": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Shared", + "File": "bytes.rs", + "Line": 1072, + "StartOffset": -1, + "EndOffset": 28736, + "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}" + }, + "Target": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Target", + "File": "bytes.rs", + "Line": 595, + "StartOffset": 16865, + "EndOffset": 16884, + "Content": "type Target = [u8];" + }, + "Vtable": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Vtable", + "File": "bytes.rs", + "Line": 108, + "StartOffset": -1, + "EndOffset": 4516, + "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Vec\u003cu8\u003e,\n /// fn(data)\n pub is_unique: unsafe fn(\u0026AtomicPtr\u003c()\u003e) -\u003e bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(\u0026mut AtomicPtr\u003c()\u003e, *const u8, usize),\n}" + } + }, + "Vars": { + "EMPTY": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "EMPTY", + "File": "bytes.rs", + "Line": 137, + "StartOffset": 4928, + "EndOffset": 5034, + "Content": "// Make it a named const to work around\n // \"unsizing casts are not allowed in const fn\"\n const EMPTY: \u0026[u8] = \u0026[];" + }, + "KIND_ARC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_ARC", + "File": "bytes.rs", + "Line": 1098, + "StartOffset": -1, + "EndOffset": 29446, + "Content": "const KIND_ARC: usize = 0b0;" + }, + "KIND_MASK": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_MASK", + "File": "bytes.rs", + "Line": 1100, + "StartOffset": -1, + "EndOffset": 29477, + "Content": "const KIND_MASK: usize = 0b1;" + }, + "KIND_VEC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "KIND_VEC", + "File": "bytes.rs", + "Line": 1099, + "StartOffset": -1, + "EndOffset": 29447, + "Content": "const KIND_VEC: usize = 0b1;" + }, + "PROMOTABLE_EVEN_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "PROMOTABLE_EVEN_VTABLE", + "File": "bytes.rs", + "Line": 948, + "StartOffset": -1, + "EndOffset": 25135, + "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" + }, + "PROMOTABLE_ODD_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "PROMOTABLE_ODD_VTABLE", + "File": "bytes.rs", + "Line": 955, + "StartOffset": -1, + "EndOffset": 25324, + "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" + }, + "SHARED_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "SHARED_VTABLE", + "File": "bytes.rs", + "Line": 1091, + "StartOffset": -1, + "EndOffset": 29394, + "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" + }, + "STATIC_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "STATIC_VTABLE", + "File": "bytes.rs", + "Line": 921, + "StartOffset": -1, + "EndOffset": 24419, + "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n is_unique: static_is_unique,\n drop: static_drop,\n};" + }, + "a": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "a", + "File": "bytes.rs", + "Line": 1330, + "StartOffset": 36771, + "EndOffset": 36813, + "Content": "let a = Bytes::from(b\"abcdefgh\".to_vec());" + }, + "a1": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "a1", + "File": "bytes.rs", + "Line": 1334, + "StartOffset": 36896, + "EndOffset": 36917, + "Content": "let a1 = Arc::new(a);" + }, + "a2": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "a2", + "File": "bytes.rs", + "Line": 1335, + "StartOffset": 36965, + "EndOffset": 36985, + "Content": "let a2 = a1.clone();" + }, + "addr": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "addr", + "File": "bytes.rs", + "Line": 1331, + "StartOffset": 36796, + "EndOffset": 36827, + "Content": "let addr = a.as_ptr() as usize;" + }, + "b": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "b", + "File": "bytes.rs", + "Line": 1338, + "StartOffset": 37037, + "EndOffset": 37066, + "Content": "let b: Bytes = (*a1).clone();" + }, + "begin": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "begin", + "File": "bytes.rs", + "Line": 267, + "StartOffset": 8403, + "EndOffset": 8568, + "Content": "let begin = match range.start_bound() {\n Bound::Included(\u0026n) =\u003e n,\n Bound::Excluded(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Unbounded =\u003e 0,\n };" + }, + "buf": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "buf", + "File": "bytes.rs", + "Line": 970, + "StartOffset": 25640, + "EndOffset": 25699, + "Content": "let buf = ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK);" + }, + "bytes": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "bytes", + "File": "bytes.rs", + "Line": 903, + "StartOffset": 23798, + "EndOffset": 23840, + "Content": "let bytes = mem::ManuallyDrop::new(bytes);" + }, + "bytes_len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "bytes_len", + "File": "bytes.rs", + "Line": 337, + "StartOffset": 10513, + "EndOffset": 10540, + "Content": "let bytes_len = self.len();" + }, + "bytes_p": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "bytes_p", + "File": "bytes.rs", + "Line": 336, + "StartOffset": 10512, + "EndOffset": 10549, + "Content": "let bytes_p = self.as_ptr() as usize;" + }, + "cap": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "cap", + "File": "bytes.rs", + "Line": 992, + "StartOffset": 26266, + "EndOffset": 26312, + "Content": "let cap = (ptr as usize - buf as usize) + len;" + }, + "data": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "data", + "File": "bytes.rs", + "Line": 877, + "StartOffset": 23178, + "EndOffset": 23226, + "Content": "let data = ptr_map(ptr, |addr| addr | KIND_VEC);" + }, + "diff": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "diff", + "File": "bytes.rs", + "Line": 1284, + "StartOffset": 35895, + "EndOffset": 35938, + "Content": "let diff = new_addr.wrapping_sub(old_addr);" + }, + "end": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "end", + "File": "bytes.rs", + "Line": 273, + "StartOffset": 8612, + "EndOffset": 8773, + "Content": "let end = match range.end_bound() {\n Bound::Included(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Excluded(\u0026n) =\u003e n,\n Bound::Unbounded =\u003e len,\n };" + }, + "kind": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "kind", + "File": "bytes.rs", + "Line": 1055, + "StartOffset": 28133, + "EndOffset": 28172, + "Content": "let kind = shared as usize \u0026 KIND_MASK;" + }, + "len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "len", + "File": "bytes.rs", + "Line": 873, + "StartOffset": 23090, + "EndOffset": 23112, + "Content": "let len = slice.len();" + }, + "mut ret": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "mut ret", + "File": "bytes.rs", + "Line": 402, + "StartOffset": 12296, + "EndOffset": 12323, + "Content": "let mut ret = self.clone();" + }, + "new_addr": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "new_addr", + "File": "bytes.rs", + "Line": 1294, + "StartOffset": 36107, + "EndOffset": 36134, + "Content": "let new_addr = f(old_addr);" + }, + "old_addr": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "old_addr", + "File": "bytes.rs", + "Line": 1293, + "StartOffset": 36105, + "EndOffset": 36133, + "Content": "let old_addr = ptr as usize;" + }, + "old_size": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "old_size", + "File": "bytes.rs", + "Line": 1153, + "StartOffset": 31073, + "EndOffset": 31138, + "Content": "let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);" + }, + "ptr": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "ptr", + "File": "bytes.rs", + "Line": 874, + "StartOffset": 23091, + "EndOffset": 23133, + "Content": "let ptr = Box::into_raw(slice) as *mut u8;" + }, + "ref_cnt": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "ref_cnt", + "File": "bytes.rs", + "Line": 1058, + "StartOffset": 28229, + "EndOffset": 28302, + "Content": "let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);" + }, + "ret": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "ret", + "File": "bytes.rs", + "Line": 587, + "StartOffset": 16749, + "EndOffset": 16777, + "Content": "let ret = self.slice(..len);" + }, + "shared": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "shared", + "File": "bytes.rs", + "Line": 1195, + "StartOffset": 32454, + "EndOffset": 32489, + "Content": "let shared = Box::into_raw(shared);" + }, + "slice": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "slice", + "File": "bytes.rs", + "Line": 934, + "StartOffset": 24611, + "EndOffset": 24655, + "Content": "let slice = slice::from_raw_parts(ptr, len);" + }, + "sub_len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "sub_len", + "File": "bytes.rs", + "Line": 340, + "StartOffset": 10596, + "EndOffset": 10623, + "Content": "let sub_len = subset.len();" + }, + "sub_offset": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "sub_offset", + "File": "bytes.rs", + "Line": 357, + "StartOffset": 11125, + "EndOffset": 11158, + "Content": "let sub_offset = sub_p - bytes_p;" + }, + "sub_p": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "sub_p", + "File": "bytes.rs", + "Line": 339, + "StartOffset": 10595, + "EndOffset": 10632, + "Content": "let sub_p = subset.as_ptr() as usize;" + }, + "t1": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "t1", + "File": "bytes.rs", + "Line": 1337, + "StartOffset": 37032, + "EndOffset": 37127, + "Content": "let t1 = thread::spawn(move || {\n let b: Bytes = (*a1).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });" + }, + "t2": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "t2", + "File": "bytes.rs", + "Line": 1342, + "StartOffset": 37195, + "EndOffset": 37290, + "Content": "let t2 = thread::spawn(move || {\n let b: Bytes = (*a2).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });" + }, + "v": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "v", + "File": "bytes.rs", + "Line": 1130, + "StartOffset": 30421, + "EndOffset": 30470, + "Content": "let v = slice::from_raw_parts(ptr, len).to_vec();" + } + } + } + }, + "Dependencies": {}, + "Files": { + "bytes.rs": { + "Path": "bytes.rs" + } + } + }, + "faststr@0.2.19": { + "Language": "rust", + "Version": "0.2.19", + "Name": "faststr", + "Dir": "", + "Packages": { + "faststr": { + "IsMain": false, + "IsTest": false, + "PkgPath": "faststr", + "Functions": { + "AsRef\u003cFastStr\u003e.as_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cFastStr\u003e.as_ref", + "File": "lib.rs", + "Line": 294, + "StartOffset": 9030, + "EndOffset": 9114, + "Content": "impl AsRef\u003cstr\u003e for FastStr {\n #[inline(always)]\n #[inline(always)]\n fn as_ref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "AsRef\u003cRepr\u003e.as_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cRepr\u003e.as_ref", + "File": "lib.rs", + "Line": 758, + "StartOffset": 21241, + "EndOffset": 21645, + "Content": "impl AsRef\u003c[u8]\u003e for Repr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n match self {\n Self::Empty =\u003e \u0026[],\n Self::Bytes(bytes) =\u003e bytes.as_ref(),\n Self::ArcStr(arc_str) =\u003e arc_str.as_bytes(),\n Self::ArcString(arc_string) =\u003e arc_string.as_bytes(),\n Self::StaticStr(s) =\u003e s.as_bytes(),\n Self::Inline { len, buf } =\u003e \u0026buf[..*len],\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Borrow\u003cFastStr\u003e.borrow": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Borrow\u003cFastStr\u003e.borrow", + "File": "lib.rs", + "Line": 477, + "StartOffset": 13041, + "EndOffset": 13118, + "Content": "impl Borrow\u003cstr\u003e for FastStr {\n #[inline]\n #[inline]\n fn borrow(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Debug\u003cFastStr\u003e.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Debug\u003cFastStr\u003e.fmt", + "File": "lib.rs", + "Line": 411, + "StartOffset": 11173, + "EndOffset": 11277, + "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Default\u003cFastStr\u003e::default": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Default\u003cFastStr\u003e::default", + "File": "lib.rs", + "Line": 280, + "StartOffset": 8821, + "EndOffset": 8890, + "Content": "impl Default for FastStr {\n #[inline]\n #[inline]\n fn default() -\u003e Self {\n Self::empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Deref\u003cFastStr\u003e.deref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Deref\u003cFastStr\u003e.deref", + "File": "lib.rs", + "Line": 303, + "StartOffset": 9192, + "EndOffset": 9238, + "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Display\u003cFastStr\u003e.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Display\u003cFastStr\u003e.fmt", + "File": "lib.rs", + "Line": 418, + "StartOffset": 11327, + "EndOffset": 11433, + "Content": "impl fmt::Display for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Display::fmt(self.as_str(), f)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.as_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.as_str", + "File": "lib.rs", + "Line": 191, + "StartOffset": 5894, + "EndOffset": 6015, + "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(\u0026self) -\u003e \u0026str {\n self.0.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.deep_clone_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes", + "File": "lib.rs", + "Line": 242, + "StartOffset": 7413, + "EndOffset": 7838, + "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(\u0026self) -\u003e Self {\n Self(self.0.deep_clone_bytes())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.index": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.index", + "File": "lib.rs", + "Line": 221, + "StartOffset": 6678, + "EndOffset": 6993, + "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(\u0026self, start: usize, end: usize) -\u003e Self {\n Self(self.0.slice_ref(\u0026self.as_bytes()[start..end]))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.into_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes", + "File": "lib.rs", + "Line": 197, + "StartOffset": 6044, + "EndOffset": 6174, + "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) -\u003e Bytes {\n self.0.into_bytes()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.into_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_string", + "File": "lib.rs", + "Line": 231, + "StartOffset": 7059, + "EndOffset": 7379, + "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) -\u003e String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.is_empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.is_empty", + "File": "lib.rs", + "Line": 209, + "StartOffset": 6327, + "EndOffset": 6437, + "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(\u0026self) -\u003e bool {\n self.0.is_empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.len": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.len", + "File": "lib.rs", + "Line": 203, + "StartOffset": 6207, + "EndOffset": 6301, + "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(\u0026self) -\u003e usize {\n self.0.len()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr.slice_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref", + "File": "lib.rs", + "Line": 215, + "StartOffset": 6468, + "EndOffset": 6623, + "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 #[inline(always)]\n pub fn slice_ref(\u0026self, subset: \u0026str) -\u003e Self {\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::empty", + "File": "lib.rs", + "Line": 72, + "StartOffset": 2099, + "EndOffset": 2185, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create an empty `FastStr`.\n #[inline]\n pub const fn empty() -\u003e Self {\n Self(Repr::empty())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_arc_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_arc_str", + "File": "lib.rs", + "Line": 78, + "StartOffset": 2218, + "EndOffset": 2332, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 an `Arc\u003cstr\u003e`.\n #[inline]\n pub fn from_arc_str(s: Arc\u003cstr\u003e) -\u003e Self {\n Self(Repr::from_arc_str(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_arc_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_arc_string", + "File": "lib.rs", + "Line": 90, + "StartOffset": 2521, + "EndOffset": 2644, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 an `Arc\u003cString\u003e`.\n #[inline]\n pub fn from_arc_string(s: Arc\u003cString\u003e) -\u003e Self {\n Self(Repr::from_arc_string(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_bytes", + "File": "lib.rs", + "Line": 96, + "StartOffset": 2688, + "EndOffset": 2981, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_bytes(b: Bytes) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026b)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_bytes_unchecked(b) })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_bytes_mut": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_bytes_mut", + "File": "lib.rs", + "Line": 116, + "StartOffset": 3392, + "EndOffset": 3692, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_bytes_mut(b: BytesMut) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026b)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_bytes_mut_unchecked(b) })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_bytes_mut_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_bytes_mut_unchecked", + "File": "lib.rs", + "Line": 125, + "StartOffset": 3754, + "EndOffset": 4096, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object. This is an unsafe method\n /// because the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `b` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_bytes_mut_unchecked(b: BytesMut) -\u003e Self {\n let v = b.freeze();\n Self::from_bytes_unchecked(v)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_bytes_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_bytes_unchecked", + "File": "lib.rs", + "Line": 105, + "StartOffset": 3039, + "EndOffset": 3343, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `Bytes` object. This is an unsafe method\n /// because the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `b` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_bytes_unchecked(b: Bytes) -\u003e Self {\n Self(Repr::from_bytes_unchecked(b))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_char_iter": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_char_iter", + "File": "lib.rs", + "Line": 254, + "StartOffset": 7883, + "EndOffset": 8773, + "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n fn from_char_iter\u003cI: iter::Iterator\u003cItem = char\u003e\u003e(mut iter: I) -\u003e Self {\n let (min_size, _) = iter.size_hint();\n if min_size \u003e INLINE_CAP {\n let s: String = iter.collect();\n return Self(Repr::Bytes(Bytes::from(s)));\n }\n let mut len = 0;\n let mut buf = [0u8; INLINE_CAP];\n while let Some(ch) = iter.next() {\n let size = ch.len_utf8();\n if size + len \u003e INLINE_CAP {\n let (min_remaining, _) = iter.size_hint();\n let mut s = String::with_capacity(size + len + min_remaining);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..len]) });\n s.push(ch);\n s.extend(iter);\n return Self(Repr::Bytes(Bytes::from(s)));\n }\n ch.encode_utf8(\u0026mut buf[len..]);\n len += size;\n }\n Self(Repr::Inline { len, buf })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_static_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_static_str", + "File": "lib.rs", + "Line": 137, + "StartOffset": 4139, + "EndOffset": 4274, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 static string slice.\n #[inline]\n pub const fn from_static_str(s: \u0026'static str) -\u003e Self {\n Self(Repr::StaticStr(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "lib.rs", + "Line": 84, + "StartOffset": 2373, + "EndOffset": 2481, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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) -\u003e Self {\n Self(Repr::from_string(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_u8_slice": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_u8_slice", + "File": "lib.rs", + "Line": 163, + "StartOffset": 5011, + "EndOffset": 5361, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[deprecated(\n since = \"0.2.13\",\n note = \"This method is not really zero-cost. Use `new_u8_slice` instead.\"\n )]\n #[inline]\n pub fn from_u8_slice(v: \u0026[u8]) -\u003e Result\u003cSelf, Utf8Error\u003e {\n Self::new_u8_slice(v)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_u8_slice_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_u8_slice_unchecked", + "File": "lib.rs", + "Line": 174, + "StartOffset": 5396, + "EndOffset": 5846, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 #[deprecated(\n since = \"0.2.13\",\n note = \"This method is not really zero-cost. Use `new_u8_slice_unchecked` instead.\"\n )]\n #[inline]\n pub unsafe fn from_u8_slice_unchecked(v: \u0026[u8]) -\u003e Self {\n Self::new_u8_slice_unchecked(v)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_vec_u8": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8", + "File": "lib.rs", + "Line": 143, + "StartOffset": 4312, + "EndOffset": 4600, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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\u003cu8\u003e`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_vec_u8(v: Vec\u003cu8\u003e) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026v)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_vec_u8_unchecked(v) })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::from_vec_u8_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_vec_u8_unchecked", + "File": "lib.rs", + "Line": 152, + "StartOffset": 4659, + "EndOffset": 4961, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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\u003cu8\u003e`. 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\u003cu8\u003e) -\u003e Self {\n Self::from_bytes_unchecked(v.into())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::new", + "File": "lib.rs", + "Line": 25, + "StartOffset": 557, + "EndOffset": 913, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n pub fn new\u003cT\u003e(text: T) -\u003e Self\n where\n T: AsRef\u003cstr\u003e,\n {\n Self(Repr::new(text))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new_inline": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::new_inline", + "File": "lib.rs", + "Line": 37, + "StartOffset": 948, + "EndOffset": 1390, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new inline `FastStr` (up to 24 bytes long) from a string slice `s`.\n ///\n /// This constructor panics if the length of `s` is greater than 24.\n ///\n /// Note: the inline length is not guaranteed.\n #[inline]\n #[doc(hidden)]\n #[deprecated(\n since = \"0.2.13\",\n note = \"The inline threshold is not stable. Please use `FastStr::new()` instead.\"\n )]\n pub fn new_inline(s: \u0026str) -\u003e Self {\n Self(Repr::new_inline(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new_u8_slice": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice", + "File": "lib.rs", + "Line": 52, + "StartOffset": 1429, + "EndOffset": 1676, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn new_u8_slice(v: \u0026[u8]) -\u003e Result\u003cSelf, Utf8Error\u003e {\n let s = from_utf8(v)?;\n Ok(Self::new(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FastStr::new_u8_slice_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::new_u8_slice_unchecked", + "File": "lib.rs", + "Line": 60, + "StartOffset": 1706, + "EndOffset": 2073, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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: \u0026[u8]) -\u003e Self {\n let s = unsafe { std::str::from_utf8_unchecked(v) };\n Self::new(s)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "From\u003cBytes\u003e::from": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "From\u003cBytes\u003e::from", + "File": "lib.rs", + "Line": 318, + "StartOffset": 9414, + "EndOffset": 9496, + "Content": "impl From\u003cFastStr\u003e for Bytes {\n #[inline]\n #[inline]\n fn from(val: FastStr) -\u003e Self {\n val.into_bytes()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "Bytes" + } + } + }, + "From\u003cFastStr\u003e::from": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "From\u003cFastStr\u003e::from", + "File": "lib.rs", + "Line": 518, + "StartOffset": 13787, + "EndOffset": 13879, + "Content": "impl From\u003cArc\u003cString\u003e\u003e for FastStr {\n #[inline]\n #[inline]\n fn from(val: Arc\u003cString\u003e) -\u003e Self {\n Self::from_arc_string(val)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "From\u003cString\u003e::from": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "From\u003cString\u003e::from", + "File": "lib.rs", + "Line": 310, + "StartOffset": 9268, + "EndOffset": 9380, + "Content": "impl From\u003cFastStr\u003e for String {\n #[inline]\n #[inline]\n fn from(val: FastStr) -\u003e Self {\n #[allow(deprecated)]\n val.into_string()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String" + } + } + }, + "FromIterator\u003cFastStr\u003e::from_iter": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FromIterator\u003cFastStr\u003e::from_iter", + "File": "lib.rs", + "Line": 470, + "StartOffset": 12843, + "EndOffset": 12987, + "Content": "impl\u003c'a\u003e iter::FromIterator\u003c\u0026'a str\u003e for FastStr {\n #[inline]\n #[inline]\n fn from_iter\u003cI: iter::IntoIterator\u003cItem = \u0026'a str\u003e\u003e(iter: I) -\u003e FastStr {\n build_from_str_iter(iter.into_iter())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "FromStr\u003cFastStr\u003e::from_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FromStr\u003cFastStr\u003e::from_str", + "File": "lib.rs", + "Line": 486, + "StartOffset": 13202, + "EndOffset": 13275, + "Content": "impl FromStr for FastStr {\n type Err = Infallible;\n\n #[inline]\n #[inline]\n fn from_str(s: \u0026str) -\u003e Result\u003cFastStr, Self::Err\u003e {\n Ok(FastStr::new(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Hash\u003cFastStr\u003e.hash": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Hash\u003cFastStr\u003e.hash", + "File": "lib.rs", + "Line": 404, + "StartOffset": 11031, + "EndOffset": 11130, + "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash\u003cH: hash::Hasher\u003e(\u0026self, hasher: \u0026mut H) {\n self.as_str().hash(hasher)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Ord\u003cFastStr\u003e.cmp": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Ord\u003cFastStr\u003e.cmp", + "File": "lib.rs", + "Line": 390, + "StartOffset": 10746, + "EndOffset": 10833, + "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(\u0026self, other: \u0026FastStr) -\u003e Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "PartialEq\u003cFastStr\u003e.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cFastStr\u003e.eq", + "File": "lib.rs", + "Line": 325, + "StartOffset": 9529, + "EndOffset": 9626, + "Content": "impl PartialEq\u003cFastStr\u003e for FastStr {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n self.as_str() == other.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "PartialEq\u003cString\u003e.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cString\u003e.eq", + "File": "lib.rs", + "Line": 369, + "StartOffset": 10347, + "EndOffset": 10443, + "Content": "impl PartialEq\u003cFastStr\u003e for String {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n other == self\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String" + } + } + }, + "PartialEq\u003ceq\u003e.eq": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003ceq\u003e.eq", + "File": "lib.rs", + "Line": 341, + "StartOffset": 9826, + "EndOffset": 9919, + "Content": "impl PartialEq\u003cFastStr\u003e for str {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n other == self\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "eq" + } + } + }, + "PartialOrd\u003cFastStr\u003e.partial_cmp": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp", + "File": "lib.rs", + "Line": 397, + "StartOffset": 10883, + "EndOffset": 10993, + "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(\u0026self, other: \u0026FastStr) -\u003e Option\u003cOrdering\u003e {\n Some(self.cmp(other))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } + }, + "Repr.as_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.as_str", + "File": "lib.rs", + "Line": 646, + "StartOffset": 17119, + "EndOffset": 17619, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(\u0026self) -\u003e \u0026str {\n match self {\n Self::Empty =\u003e \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { std::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) =\u003e arc_str,\n Self::ArcString(arc_string) =\u003e arc_string,\n Self::StaticStr(s) =\u003e s,\n Self::Inline { len, buf } =\u003e unsafe { std::str::from_utf8_unchecked(\u0026buf[..*len]) },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.deep_clone_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes", + "File": "lib.rs", + "Line": 690, + "StartOffset": 18792, + "EndOffset": 19422, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(\u0026self) -\u003e Self {\n match self {\n Self::Empty =\u003e Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { Self::new(std::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) =\u003e Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) =\u003e Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) =\u003e Self::StaticStr(s),\n Self::Inline { len, buf } =\u003e Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.into_bytes": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_bytes", + "File": "lib.rs", + "Line": 676, + "StartOffset": 18248, + "EndOffset": 18777, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -\u003e Bytes {\n match self {\n Self::Empty =\u003e Bytes::new(),\n Self::Bytes(bytes) =\u003e bytes,\n Self::ArcStr(arc_str) =\u003e Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) =\u003e {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) =\u003e Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } =\u003e Bytes::from(buf[..len].to_vec()),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.into_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_string", + "File": "lib.rs", + "Line": 659, + "StartOffset": 17634, + "EndOffset": 18233, + "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -\u003e String {\n match self {\n Self::Empty =\u003e String::new(),\n Self::Bytes(bytes) =\u003e unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) =\u003e arc_str.to_string(),\n Self::ArcString(arc_string) =\u003e {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) =\u003e s.to_string(),\n Self::Inline { len, buf } =\u003e unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.is_empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.is_empty", + "File": "lib.rs", + "Line": 634, + "StartOffset": 16727, + "EndOffset": 17104, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(\u0026self) -\u003e bool {\n match self {\n Self::Empty =\u003e true,\n Self::Bytes(bytes) =\u003e bytes.is_empty(),\n Self::ArcStr(arc_str) =\u003e arc_str.is_empty(),\n Self::ArcString(arc_string) =\u003e arc_string.is_empty(),\n Self::StaticStr(s) =\u003e s.is_empty(),\n Self::Inline { len, .. } =\u003e *len == 0,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.len": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.len", + "File": "lib.rs", + "Line": 622, + "StartOffset": 16367, + "EndOffset": 16712, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(\u0026self) -\u003e usize {\n match self {\n Self::Empty =\u003e 0,\n Self::Bytes(bytes) =\u003e bytes.len(),\n Self::ArcStr(arc_str) =\u003e arc_str.len(),\n Self::ArcString(arc_string) =\u003e arc_string.len(),\n Self::StaticStr(s) =\u003e s.len(),\n Self::Inline { len, .. } =\u003e *len,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr.slice_ref": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.slice_ref", + "File": "lib.rs", + "Line": 706, + "StartOffset": 19437, + "EndOffset": 21223, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e 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 \u003e= 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 \u003c= 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 =\u003e panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) =\u003e Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) =\u003e Self::StaticStr(unsafe {\n std::str::from_utf8_unchecked(\u0026s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } =\u003e Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(\u0026buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::empty": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::empty", + "File": "lib.rs", + "Line": 591, + "StartOffset": 15601, + "EndOffset": 15648, + "Content": "impl Repr {\n #[inline]\n #[inline]\n const fn empty() -\u003e Self {\n Self::Empty\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::from_arc_str": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::from_arc_str", + "File": "lib.rs", + "Line": 596, + "StartOffset": 15673, + "EndOffset": 15732, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_arc_str(s: Arc\u003cstr\u003e) -\u003e Self {\n Self::ArcStr(s)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::from_arc_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::from_arc_string", + "File": "lib.rs", + "Line": 608, + "StartOffset": 15982, + "EndOffset": 16167, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_arc_string(s: Arc\u003cString\u003e) -\u003e Self {\n match Arc::try_unwrap(s) {\n Ok(s) =\u003e Self::from_string(s),\n Err(s) =\u003e Self::ArcString(s),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::from_bytes_unchecked": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::from_bytes_unchecked", + "File": "lib.rs", + "Line": 616, + "StartOffset": 16182, + "EndOffset": 16335, + "Content": "impl Repr {\n #[inline]\n /// Safety: the caller must guarantee that the bytes `v` are valid UTF-8.\n #[inline]\n unsafe fn from_bytes_unchecked(bytes: Bytes) -\u003e Self {\n Self::Bytes(bytes)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::from_string": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::from_string", + "File": "lib.rs", + "Line": 601, + "StartOffset": 15761, + "EndOffset": 15921, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_string(s: String) -\u003e Self {\n let v = s.into_bytes();\n // Safety: s is a `String`, thus we can assume it's valid utf-8\n unsafe { Self::from_bytes_unchecked(v.into()) }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::new": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::new", + "File": "lib.rs", + "Line": 554, + "StartOffset": 14531, + "EndOffset": 14979, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn new\u003cT\u003e(text: T) -\u003e Self\n where\n T: AsRef\u003cstr\u003e,\n {\n let text = text.as_ref();\n if text.is_empty() {\n return Self::Empty;\n }\n {\n let len = text.len();\n if len \u003c= INLINE_CAP {\n // Safety: we have checked the length of text \u003c= `INLINE_CAP`.\n return unsafe { Self::new_inline_impl(text) };\n }\n }\n\n Self::Bytes(Bytes::copy_from_slice(text.as_bytes()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::new_inline": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::new_inline", + "File": "lib.rs", + "Line": 574, + "StartOffset": 15045, + "EndOffset": 15258, + "Content": "impl Repr {\n #[inline]\n fn new_inline(s: \u0026str) -\u003e Self {\n if s.len() \u003e INLINE_CAP {\n panic!(\"[FastStr] string is too long to inline\");\n }\n // Safety: we have checked the length of s \u003c= `INLINE_CAP`.\n unsafe { Self::new_inline_impl(s) }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "Repr::new_inline_impl": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr::new_inline_impl", + "File": "lib.rs", + "Line": 582, + "StartOffset": 15307, + "EndOffset": 15553, + "Content": "impl Repr {\n #[inline]\n /// # Safety\n ///\n /// The length of `s` must be \u003c= `INLINE_CAP`.\n unsafe fn new_inline_impl(s: \u0026str) -\u003e Self {\n let mut buf = [0u8; INLINE_CAP];\n std::ptr::copy_nonoverlapping(s.as_ptr(), buf.as_mut_ptr(), s.len());\n Self::Inline { len: s.len(), buf }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } + }, + "build_from_str_iter": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "build_from_str_iter", + "File": "lib.rs", + "Line": 432, + "StartOffset": -1, + "EndOffset": 12383, + "Content": "fn build_from_str_iter\u003cT\u003e(mut iter: impl Iterator\u003cItem = T\u003e) -\u003e FastStr\nwhere\n T: AsRef\u003cstr\u003e,\n String: iter::Extend\u003cT\u003e,\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 \u003e INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..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": { + "Err": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Err", + "File": "lib.rs", + "Line": 484, + "StartOffset": 13148, + "EndOffset": 13170, + "Content": "type Err = Infallible;" + }, + "FastStr": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "lib.rs", + "Line": 15, + "StartOffset": -1, + "EndOffset": 387, + "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n#[derive(Clone)]\npub struct FastStr(Repr);", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cFastStr\u003e.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.as_str" + }, + "borrow": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Borrow\u003cFastStr\u003e.borrow" + }, + "cmp": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Ord\u003cFastStr\u003e.cmp" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes" + }, + "deref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Deref\u003cFastStr\u003e.deref" + }, + "eq": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cFastStr\u003e.eq" + }, + "fmt": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Debug\u003cFastStr\u003e.fmt" + }, + "hash": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Hash\u003cFastStr\u003e.hash" + }, + "index": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.index" + }, + "into_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.len" + }, + "partial_cmp": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp" + }, + "slice_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref" + } + } + }, + "Repr": { + "Exported": false, + "TypeKind": "enum", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr", + "File": "lib.rs", + "Line": 543, + "StartOffset": -1, + "EndOffset": 14475, + "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc\u003cstr\u003e),\n ArcString(Arc\u003cString\u003e),\n StaticStr(\u0026'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cRepr\u003e.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.as_str" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes" + }, + "into_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.len" + }, + "slice_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.slice_ref" + } + } + }, + "Target": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Target", + "File": "lib.rs", + "Line": 301, + "StartOffset": 9144, + "EndOffset": 9162, + "Content": "type Target = str;" + } + }, + "Vars": { + "(min_remaining, _)": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "(min_remaining, _)", + "File": "lib.rs", + "Line": 265, + "StartOffset": 8309, + "EndOffset": 8351, + "Content": "let (min_remaining, _) = iter.size_hint();" + }, + "(min_size, _)": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "(min_size, _)", + "File": "lib.rs", + "Line": 255, + "StartOffset": 7888, + "EndOffset": 7925, + "Content": "let (min_size, _) = iter.size_hint();" + }, + "INLINE_CAP": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "INLINE_CAP", + "File": "lib.rs", + "Line": 541, + "StartOffset": -1, + "EndOffset": 14334, + "Content": "const INLINE_CAP: usize = 24;" + }, + "bytes_len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "bytes_len", + "File": "lib.rs", + "Line": 712, + "StartOffset": 19578, + "EndOffset": 19605, + "Content": "let bytes_len = self.len();" + }, + "bytes_p": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "bytes_p", + "File": "lib.rs", + "Line": 711, + "StartOffset": 19568, + "EndOffset": 19614, + "Content": "let bytes_p = self.as_ref().as_ptr() as usize;" + }, + "iter": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "iter", + "File": "lib.rs", + "Line": 427, + "StartOffset": 11547, + "EndOffset": 11575, + "Content": "let iter = iter.into_iter();" + }, + "len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "len", + "File": "lib.rs", + "Line": 564, + "StartOffset": 14740, + "EndOffset": 14761, + "Content": "let len = text.len();" + }, + "mut buf": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "mut buf", + "File": "lib.rs", + "Line": 586, + "StartOffset": 15388, + "EndOffset": 15420, + "Content": "let mut buf = [0u8; INLINE_CAP];" + }, + "mut len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "mut len", + "File": "lib.rs", + "Line": 260, + "StartOffset": 8144, + "EndOffset": 8160, + "Content": "let mut len = 0;" + }, + "mut new_buf": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "mut new_buf", + "File": "lib.rs", + "Line": 748, + "StartOffset": 21002, + "EndOffset": 21036, + "Content": "let mut new_buf = [0; INLINE_CAP];" + }, + "mut s": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "mut s", + "File": "lib.rs", + "Line": 443, + "StartOffset": 12003, + "EndOffset": 12049, + "Content": "let mut s = String::with_capacity(size + len);" + }, + "s": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "s", + "File": "lib.rs", + "Line": 68, + "StartOffset": 1954, + "EndOffset": 2006, + "Content": "let s = unsafe { std::str::from_utf8_unchecked(v) };" + }, + "size": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "size", + "File": "lib.rs", + "Line": 441, + "StartOffset": 11931, + "EndOffset": 11954, + "Content": "let size = slice.len();" + }, + "slice": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "slice", + "File": "lib.rs", + "Line": 440, + "StartOffset": 11889, + "EndOffset": 11916, + "Content": "let slice = slice.as_ref();" + }, + "sub_len": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "sub_len", + "File": "lib.rs", + "Line": 715, + "StartOffset": 19670, + "EndOffset": 19697, + "Content": "let sub_len = subset.len();" + }, + "sub_offset": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "sub_offset", + "File": "lib.rs", + "Line": 732, + "StartOffset": 20217, + "EndOffset": 20250, + "Content": "let sub_offset = sub_p - bytes_p;" + }, + "sub_p": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "sub_p", + "File": "lib.rs", + "Line": 714, + "StartOffset": 19669, + "EndOffset": 19706, + "Content": "let sub_p = subset.as_ptr() as usize;" + }, + "text": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "text", + "File": "lib.rs", + "Line": 559, + "StartOffset": 14625, + "EndOffset": 14650, + "Content": "let text = text.as_ref();" + }, + "v": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "v", + "File": "lib.rs", + "Line": 603, + "StartOffset": 15780, + "EndOffset": 15803, + "Content": "let v = s.into_bytes();" + } + } + } + }, + "Dependencies": {}, + "Files": { + "lib.rs": { + "Path": "lib.rs" + } + } + }, + "metainfo": { + "Language": "rust", + "Version": "", + "Name": "metainfo", + "Dir": "src", + "Packages": { + "metainfo": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo", + "Functions": { + "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "File": "src/lib.rs", + "Line": 515, + "StartOffset": 15665, + "EndOffset": 15870, + "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 517, + "StartOffset": 15777, + "EndOffset": 15791 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 516, + "StartOffset": 15695, + "EndOffset": 15701 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 515, + "StartOffset": 15707, + "EndOffset": 15713 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 515, + "StartOffset": 15715, + "EndOffset": 15723 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 515, + "StartOffset": 15724, + "EndOffset": 15731 + } + ] + }, + "Backward\u003cMetaInfo\u003e.get_all_backward_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "File": "src/lib.rs", + "Line": 508, + "StartOffset": 15442, + "EndOffset": 15650, + "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 508, + "StartOffset": 15483, + "EndOffset": 15489 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 508, + "StartOffset": 15491, + "EndOffset": 15499 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 508, + "StartOffset": 15500, + "EndOffset": 15507 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 510, + "StartOffset": 15553, + "EndOffset": 15571 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 509, + "StartOffset": 15472, + "EndOffset": 15478 + } + ] + }, + "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16057, + "EndOffset": 16158, + "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16115, + "EndOffset": 16121 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16122, + "EndOffset": 16130 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16131, + "EndOffset": 16138 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 527, + "StartOffset": 16067, + "EndOffset": 16106 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 527, + "StartOffset": 16107, + "EndOffset": 16120 + } + ] + }, + "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 15885, + "EndOffset": 15985, + "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 15942, + "EndOffset": 15948 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 15949, + "EndOffset": 15957 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 15958, + "EndOffset": 15965 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 523, + "StartOffset": 15895, + "EndOffset": 15934 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 523, + "StartOffset": 15935, + "EndOffset": 15947 + } + ] + }, + "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16551, + "EndOffset": 16858, + "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 548, + "StartOffset": 16745, + "EndOffset": 16768 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 546, + "StartOffset": 16710, + "EndOffset": 16716 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 547, + "StartOffset": 16737, + "EndOffset": 16759 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16603, + "EndOffset": 16608 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16618, + "EndOffset": 16622 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 541, + "StartOffset": 16623, + "EndOffset": 16630 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 547, + "StartOffset": 16723, + "EndOffset": 16736 + } + ] + }, + "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 530, + "StartOffset": 16231, + "EndOffset": 16536, + "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 537, + "StartOffset": 16424, + "EndOffset": 16447 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 535, + "StartOffset": 16389, + "EndOffset": 16395 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 536, + "StartOffset": 16415, + "EndOffset": 16437 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 530, + "StartOffset": 16282, + "EndOffset": 16287 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 530, + "StartOffset": 16297, + "EndOffset": 16301 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 530, + "StartOffset": 16302, + "EndOffset": 16309 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 536, + "StartOffset": 16402, + "EndOffset": 16414 + } + ] + }, + "Debug\u003cMetaInfo\u003e.fmt": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "File": "src/lib.rs", + "Line": 623, + "StartOffset": 19077, + "EndOffset": 19172, + "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "File": "src/lib.rs", + "Line": 624, + "StartOffset": 19114, + "EndOffset": 19126 + }, + { + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "File": "src/lib.rs", + "Line": 624, + "StartOffset": 19139, + "EndOffset": 19145 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Formatter", + "File": "src/lib.rs", + "Line": 623, + "StartOffset": 19104, + "EndOffset": 19113 + }, + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Result", + "File": "src/lib.rs", + "Line": 623, + "StartOffset": 19127, + "EndOffset": 19133 + } + ] + }, + "Forward\u003cMetaInfo\u003e.get_all_persistents": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "File": "src/lib.rs", + "Line": 420, + "StartOffset": 12845, + "EndOffset": 13045, + "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 fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_persistents(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 420, + "StartOffset": 12878, + "EndOffset": 12884 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 420, + "StartOffset": 12886, + "EndOffset": 12894 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 420, + "StartOffset": 12895, + "EndOffset": 12902 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 422, + "StartOffset": 12948, + "EndOffset": 12967 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 421, + "StartOffset": 12874, + "EndOffset": 12880 + } + ] + }, + "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 433, + "StartOffset": 13249, + "EndOffset": 13372, + "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 fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(HttpConverter)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 436, + "StartOffset": 13334, + "EndOffset": 13368 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 435, + "StartOffset": 13315, + "EndOffset": 13321 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 435, + "StartOffset": 13322, + "EndOffset": 13330 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 435, + "StartOffset": 13331, + "EndOffset": 13338 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 436, + "StartOffset": 13369, + "EndOffset": 13382 + } + ] + }, + "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 427, + "StartOffset": 13060, + "EndOffset": 13182, + "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 fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(RpcConverter)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 430, + "StartOffset": 13144, + "EndOffset": 13178 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 429, + "StartOffset": 13125, + "EndOffset": 13131 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 429, + "StartOffset": 13132, + "EndOffset": 13140 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 429, + "StartOffset": 13141, + "EndOffset": 13148 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 430, + "StartOffset": 13179, + "EndOffset": 13191 + } + ] + }, + "Forward\u003cMetaInfo\u003e.get_all_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13440, + "EndOffset": 13638, + "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 fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13472, + "EndOffset": 13478 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13480, + "EndOffset": 13488 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13489, + "EndOffset": 13496 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 441, + "StartOffset": 13542, + "EndOffset": 13560 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 440, + "StartOffset": 13469, + "EndOffset": 13475 + } + ] + }, + "Forward\u003cMetaInfo\u003e.get_all_upstreams": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "File": "src/lib.rs", + "Line": 446, + "StartOffset": 13653, + "EndOffset": 13846, + "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 fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 448, + "StartOffset": 13754, + "EndOffset": 13768 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 447, + "StartOffset": 13682, + "EndOffset": 13688 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 446, + "StartOffset": 13684, + "EndOffset": 13690 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 446, + "StartOffset": 13692, + "EndOffset": 13700 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 446, + "StartOffset": 13701, + "EndOffset": 13708 + } + ] + }, + "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 475, + "StartOffset": 14464, + "EndOffset": 14755, + "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 fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 482, + "StartOffset": 14649, + "EndOffset": 14663 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 480, + "StartOffset": 14614, + "EndOffset": 14620 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 481, + "StartOffset": 14641, + "EndOffset": 14665 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 475, + "StartOffset": 14507, + "EndOffset": 14512 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 475, + "StartOffset": 14522, + "EndOffset": 14526 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 475, + "StartOffset": 14527, + "EndOffset": 14534 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 481, + "StartOffset": 14627, + "EndOffset": 14640 + } + ] + }, + "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 486, + "StartOffset": 14770, + "EndOffset": 15056, + "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 fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 493, + "StartOffset": 14953, + "EndOffset": 14965 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 491, + "StartOffset": 14918, + "EndOffset": 14924 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 492, + "StartOffset": 14945, + "EndOffset": 14968 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 486, + "StartOffset": 14811, + "EndOffset": 14816 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 486, + "StartOffset": 14826, + "EndOffset": 14830 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 486, + "StartOffset": 14831, + "EndOffset": 14838 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 492, + "StartOffset": 14931, + "EndOffset": 14944 + } + ] + }, + "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 453, + "StartOffset": 13861, + "EndOffset": 14150, + "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 fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 460, + "StartOffset": 14045, + "EndOffset": 14059 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 458, + "StartOffset": 14010, + "EndOffset": 14016 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 459, + "StartOffset": 14036, + "EndOffset": 14060 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 453, + "StartOffset": 13903, + "EndOffset": 13908 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 453, + "StartOffset": 13918, + "EndOffset": 13922 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 453, + "StartOffset": 13923, + "EndOffset": 13930 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 459, + "StartOffset": 14023, + "EndOffset": 14035 + } + ] + }, + "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 464, + "StartOffset": 14165, + "EndOffset": 14449, + "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 fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 471, + "StartOffset": 14347, + "EndOffset": 14359 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 469, + "StartOffset": 14312, + "EndOffset": 14318 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 470, + "StartOffset": 14338, + "EndOffset": 14361 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 464, + "StartOffset": 14205, + "EndOffset": 14210 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 464, + "StartOffset": 14220, + "EndOffset": 14224 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 464, + "StartOffset": 14225, + "EndOffset": 14232 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 470, + "StartOffset": 14325, + "EndOffset": 14337 + } + ] + }, + "MetaInfo.clear": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "File": "src/lib.rs", + "Line": 288, + "StartOffset": 8873, + "EndOffset": 9527, + "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(\u0026mut 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": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 293, + "StartOffset": 9047, + "EndOffset": 9053 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "File": "src/lib.rs", + "Line": 294, + "StartOffset": 9054, + "EndOffset": 9059 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/lib.rs", + "Line": 297, + "StartOffset": 9138, + "EndOffset": 9143 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "File": "src/lib.rs", + "Line": 300, + "StartOffset": 9230, + "EndOffset": 9235 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "File": "src/lib.rs", + "Line": 303, + "StartOffset": 9338, + "EndOffset": 9343 + } + ] + }, + "MetaInfo.contains": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "File": "src/lib.rs", + "Line": 176, + "StartOffset": 5361, + "EndOffset": 5747, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains entry\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 181, + "StartOffset": 5493, + "EndOffset": 5499 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 182, + "StartOffset": 5511, + "EndOffset": 5514 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "File": "src/lib.rs", + "Line": 182, + "StartOffset": 5527, + "EndOffset": 5535 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 183, + "StartOffset": 5533, + "EndOffset": 5542 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 189, + "StartOffset": 5694, + "EndOffset": 5700 + } + ] + }, + "MetaInfo.contains_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "File": "src/lib.rs", + "Line": 193, + "StartOffset": 5782, + "EndOffset": 6228, + "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 198, + "StartOffset": 5942, + "EndOffset": 5948 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 199, + "StartOffset": 5968, + "EndOffset": 5971 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "File": "src/lib.rs", + "Line": 199, + "StartOffset": 6000, + "EndOffset": 6008 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 200, + "StartOffset": 5990, + "EndOffset": 5999 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 206, + "StartOffset": 6167, + "EndOffset": 6173 + } + ] + }, + "MetaInfo.contains_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "File": "src/lib.rs", + "Line": 210, + "StartOffset": 6263, + "EndOffset": 6698, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e 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": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 215, + "StartOffset": 6428, + "EndOffset": 6434 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 216, + "StartOffset": 6446, + "EndOffset": 6449 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/lib.rs", + "Line": 216, + "StartOffset": 6462, + "EndOffset": 6474 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 216, + "StartOffset": 6479, + "EndOffset": 6485 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 217, + "StartOffset": 6468, + "EndOffset": 6477 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 223, + "StartOffset": 6640, + "EndOffset": 6646 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 212, + "StartOffset": 6348, + "EndOffset": 6353 + } + ] + }, + "MetaInfo.derive": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "File": "src/lib.rs", + "Line": 106, + "StartOffset": 2974, + "EndOffset": 4123, + "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) -\u003e (MetaInfo, MetaInfo) {\n if self.tmap.is_none() \u0026\u0026 self.smap.is_none() \u0026\u0026 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "File": "src/lib.rs", + "Line": 127, + "StartOffset": 3856, + "EndOffset": 3859 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 129, + "StartOffset": 3952, + "EndOffset": 3961 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 113, + "StartOffset": 3238, + "EndOffset": 3245 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "File": "src/lib.rs", + "Line": 116, + "StartOffset": 3467, + "EndOffset": 3472 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "File": "src/lib.rs", + "Line": 125, + "StartOffset": 3805, + "EndOffset": 3809 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "File": "src/lib.rs", + "Line": 129, + "StartOffset": 3965, + "EndOffset": 3970 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 106, + "StartOffset": 2998, + "EndOffset": 3010 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 127, + "StartOffset": 3851, + "EndOffset": 3854 + } + ] + }, + "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": 10981, + "EndOffset": 11121, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(\u0026mut 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" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 356, + "StartOffset": 11008, + "EndOffset": 11015 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 357, + "StartOffset": 11057, + "EndOffset": 11061 + } + ] + }, + "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": 10829, + "EndOffset": 10966, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(\u0026mut 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" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 350, + "StartOffset": 10855, + "EndOffset": 10862 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 351, + "StartOffset": 10903, + "EndOffset": 10907 + } + ] + }, + "MetaInfo.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "File": "src/lib.rs", + "Line": 310, + "StartOffset": 9542, + "EndOffset": 10814, + "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(\u0026mut 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": 9803, + "EndOffset": 9816 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 322, + "StartOffset": 9990, + "EndOffset": 10003 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/lib.rs", + "Line": 328, + "StartOffset": 10195, + "EndOffset": 10208 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9772, + "EndOffset": 9790 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "File": "src/lib.rs", + "Line": 317, + "StartOffset": 9794, + "EndOffset": 9800 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 323, + "StartOffset": 9980, + "EndOffset": 9986 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "File": "src/lib.rs", + "Line": 329, + "StartOffset": 10191, + "EndOffset": 10197 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 333, + "StartOffset": 10341, + "EndOffset": 10348 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 336, + "StartOffset": 10484, + "EndOffset": 10490 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 336, + "StartOffset": 10493, + "EndOffset": 10499 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/lib.rs", + "Line": 336, + "StartOffset": 10502, + "EndOffset": 10508 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 313, + "StartOffset": 9688, + "EndOffset": 9696 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9794, + "EndOffset": 9801 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 322, + "StartOffset": 9980, + "EndOffset": 9988 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 328, + "StartOffset": 10183, + "EndOffset": 10193 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9817, + "EndOffset": 9833 + } + ] + }, + "MetaInfo.get": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 227, + "StartOffset": 6733, + "EndOffset": 7054, + "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\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::\u003cT\u003e())\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 230, + "StartOffset": 6836, + "EndOffset": 6842 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 230, + "StartOffset": 6845, + "EndOffset": 6853 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "File": "src/lib.rs", + "Line": 230, + "StartOffset": 6866, + "EndOffset": 6869 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 230, + "StartOffset": 6873, + "EndOffset": 6880 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 233, + "StartOffset": 7002, + "EndOffset": 7008 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 229, + "StartOffset": 6841, + "EndOffset": 6847 + } + ] + }, + "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": 592, + "StartOffset": 18215, + "EndOffset": 19059, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 602, + "StartOffset": 18478, + "EndOffset": 18496 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 607, + "StartOffset": 18691, + "EndOffset": 18704 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 600, + "StartOffset": 18423, + "EndOffset": 18429 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 603, + "StartOffset": 18504, + "EndOffset": 18507 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 608, + "StartOffset": 18693, + "EndOffset": 18699 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 609, + "StartOffset": 18763, + "EndOffset": 18767 + }, + { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "File": "src/lib.rs", + "Line": 610, + "StartOffset": 18798, + "EndOffset": 18801 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 596, + "StartOffset": 18301, + "EndOffset": 18307 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 596, + "StartOffset": 18308, + "EndOffset": 18316 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 596, + "StartOffset": 18317, + "EndOffset": 18324 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 598, + "StartOffset": 18369, + "EndOffset": 18378 + } + ] + }, + "MetaInfo.get_all_persistents_and_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 554, + "StartOffset": 16876, + "EndOffset": 18200, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 555, + "StartOffset": 16895, + "EndOffset": 16929 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 558, + "StartOffset": 16972, + "EndOffset": 16978 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 558, + "StartOffset": 16979, + "EndOffset": 16987 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 558, + "StartOffset": 16988, + "EndOffset": 16995 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 564, + "StartOffset": 17149, + "EndOffset": 17168 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 571, + "StartOffset": 17503, + "EndOffset": 17516 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 562, + "StartOffset": 17093, + "EndOffset": 17099 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 566, + "StartOffset": 17242, + "EndOffset": 17245 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 566, + "StartOffset": 17252, + "EndOffset": 17255 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 566, + "StartOffset": 17259, + "EndOffset": 17268 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 573, + "StartOffset": 17569, + "EndOffset": 17575 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 575, + "StartOffset": 17663, + "EndOffset": 17667 + }, + { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "File": "src/lib.rs", + "Line": 576, + "StartOffset": 17699, + "EndOffset": 17702 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 583, + "StartOffset": 18014, + "EndOffset": 18034 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 560, + "StartOffset": 17040, + "EndOffset": 17049 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 571, + "StartOffset": 17493, + "EndOffset": 17501 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 576, + "StartOffset": 17751, + "EndOffset": 17756 + } + ] + }, + "MetaInfo.get_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "File": "src/lib.rs", + "Line": 244, + "StartOffset": 7323, + "EndOffset": 7770, + "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: \u0026FastStrMap| faststr_tmap.get::\u003cT\u003e())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::\u003cT\u003e())\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 248, + "StartOffset": 7496, + "EndOffset": 7502 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7522, + "EndOffset": 7530 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7572, + "EndOffset": 7575 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 250, + "StartOffset": 7544, + "EndOffset": 7551 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 253, + "StartOffset": 7706, + "EndOffset": 7712 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 246, + "StartOffset": 7450, + "EndOffset": 7456 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 246, + "StartOffset": 7458, + "EndOffset": 7465 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7547, + "EndOffset": 7557 + } + ] + }, + "MetaInfo.get_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "File": "src/lib.rs", + "Line": 266, + "StartOffset": 8118, + "EndOffset": 8537, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003c\u0026FastStr\u003e {\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": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 270, + "StartOffset": 8296, + "EndOffset": 8302 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 271, + "StartOffset": 8314, + "EndOffset": 8322 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "src/lib.rs", + "Line": 271, + "StartOffset": 8335, + "EndOffset": 8338 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 271, + "StartOffset": 8343, + "EndOffset": 8349 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 272, + "StartOffset": 8336, + "EndOffset": 8343 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 275, + "StartOffset": 8476, + "EndOffset": 8482 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 268, + "StartOffset": 8220, + "EndOffset": 8225 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 268, + "StartOffset": 8250, + "EndOffset": 8256 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 268, + "StartOffset": 8258, + "EndOffset": 8265 + } + ] + }, + "MetaInfo.insert": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 152, + "StartOffset": 4554, + "EndOffset": 4774, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a type into this `MetaInfo`.\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut 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": 4718, + "EndOffset": 4731 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4687, + "EndOffset": 4705 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "File": "src/lib.rs", + "Line": 157, + "StartOffset": 4705, + "EndOffset": 4711 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/lib.rs", + "Line": 154, + "StartOffset": 4616, + "EndOffset": 4620 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/lib.rs", + "Line": 154, + "StartOffset": 4623, + "EndOffset": 4627 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4709, + "EndOffset": 4716 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4732, + "EndOffset": 4748 + } + ] + }, + "MetaInfo.insert_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "File": "src/lib.rs", + "Line": 160, + "StartOffset": 4805, + "EndOffset": 5061, + "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\u003cT: Send + Sync + 'static\u003e(\u0026mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::\u003cT\u003e(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": 4997, + "EndOffset": 5010 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 4963, + "EndOffset": 4981 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "File": "src/lib.rs", + "Line": 165, + "StartOffset": 4989, + "EndOffset": 4995 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/lib.rs", + "Line": 162, + "StartOffset": 4886, + "EndOffset": 4890 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/lib.rs", + "Line": 162, + "StartOffset": 4893, + "EndOffset": 4897 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 162, + "StartOffset": 4925, + "EndOffset": 4932 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 4985, + "EndOffset": 4995 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 5011, + "EndOffset": 5027 + } + ] + }, + "MetaInfo.insert_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "File": "src/lib.rs", + "Line": 168, + "StartOffset": 5097, + "EndOffset": 5325, + "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(\u0026mut 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": 5269, + "EndOffset": 5282 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5237, + "EndOffset": 5255 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "File": "src/lib.rs", + "Line": 173, + "StartOffset": 5255, + "EndOffset": 5261 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 170, + "StartOffset": 5185, + "EndOffset": 5192 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5259, + "EndOffset": 5267 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5283, + "EndOffset": 5299 + } + ] + }, + "MetaInfo.remove": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 237, + "StartOffset": 7070, + "EndOffset": 7255, + "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 241, + "StartOffset": 7212, + "EndOffset": 7218 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 241, + "StartOffset": 7221, + "EndOffset": 7229 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "File": "src/lib.rs", + "Line": 241, + "StartOffset": 7242, + "EndOffset": 7248 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 240, + "StartOffset": 7224, + "EndOffset": 7230 + } + ] + }, + "MetaInfo.remove_faststr": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "File": "src/lib.rs", + "Line": 257, + "StartOffset": 7790, + "EndOffset": 8048, + "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 262, + "StartOffset": 8008, + "EndOffset": 8014 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 263, + "StartOffset": 8034, + "EndOffset": 8042 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "File": "src/lib.rs", + "Line": 263, + "StartOffset": 8071, + "EndOffset": 8077 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 260, + "StartOffset": 7963, + "EndOffset": 7969 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 260, + "StartOffset": 7970, + "EndOffset": 7977 + } + ] + }, + "MetaInfo.remove_string": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "File": "src/lib.rs", + "Line": 279, + "StartOffset": 8557, + "EndOffset": 8812, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 284, + "StartOffset": 8780, + "EndOffset": 8786 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 285, + "StartOffset": 8798, + "EndOffset": 8806 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "File": "src/lib.rs", + "Line": 285, + "StartOffset": 8819, + "EndOffset": 8825 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 285, + "StartOffset": 8830, + "EndOffset": 8836 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 282, + "StartOffset": 8701, + "EndOffset": 8706 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 282, + "StartOffset": 8735, + "EndOffset": 8741 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 282, + "StartOffset": 8742, + "EndOffset": 8749 + } + ] + }, + "MetaInfo::from": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "File": "src/lib.rs", + "Line": 86, + "StartOffset": 2322, + "EndOffset": 2959, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an `MetaInfo` with the parent given.\n ///\n /// When the info is not found in the current scope, `MetaInfo` will try to get from parent.\n ///\n /// [`derive`] is more efficient than this. It is recommended to use [`derive`] instead of this.\n #[inline]\n pub fn from(parent: Arc\u003cMetaInfo\u003e) -\u003e MetaInfo {\n let forward_node = parent.forward_node.clone();\n let backward_node = parent.backward_node.clone();\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" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "derive", + "File": "src/lib.rs", + "Line": 90, + "StartOffset": 2485, + "EndOffset": 2495 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "File": "src/lib.rs", + "Line": 93, + "StartOffset": 2647, + "EndOffset": 2652 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 92, + "StartOffset": 2610, + "EndOffset": 2613 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 92, + "StartOffset": 2614, + "EndOffset": 2622 + } + ] + }, + "MetaInfo::from_node": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 135, + "StartOffset": 4138, + "EndOffset": 4539, + "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\u003cMetaInfo\u003e,\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n ) -\u003e 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": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 137, + "StartOffset": 4213, + "EndOffset": 4216 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 137, + "StartOffset": 4217, + "EndOffset": 4225 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 138, + "StartOffset": 4237, + "EndOffset": 4243 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 138, + "StartOffset": 4248, + "EndOffset": 4252 + } + ] + }, + "MetaInfo::new": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 80, + "StartOffset": 2191, + "EndOffset": 2290, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an empty `MetaInfo`.\n #[inline]\n pub fn new() -\u003e MetaInfo {\n Default::default()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 82, + "StartOffset": 2260, + "EndOffset": 2268 + }, + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/lib.rs", + "Line": 83, + "StartOffset": 2262, + "EndOffset": 2269 + } + ] + }, + "del_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "File": "src/lib.rs", + "Line": 393, + "StartOffset": -1, + "EndOffset": 12388, + "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n if let Some(node) = self.[\u003c$node _node\u003e].as_mut() {\n node.[\u003cdel_ $func_name\u003e](key)\n } else {\n None\n }\n }\n }\n };\n}" + }, + "get_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 362, + "StartOffset": -1, + "EndOffset": 11505, + "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n match self.[\u003c$node _node\u003e].as_ref() {\n Some(node) =\u003e node.[\u003cget_ $func_name\u003e](key),\n None =\u003e None,\n }\n }\n }\n };\n}" + }, + "http_forward_test": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "File": "src/lib.rs", + "Line": 799, + "StartOffset": 24040, + "EndOffset": 24739, + "Content": "#[test]\n fn http_forward_test() {\n let mut metainfo = MetaInfo::new();\n metainfo.strip_http_prefix_and_set_persistent(\"rpc-persist-test-key\", \"persist\");\n metainfo.strip_http_prefix_and_set_upstream(\"rpc-transit-test-key\", \"transit\");\n assert_eq!(metainfo.get_persistent(\"TEST_KEY\").unwrap(), \"persist\");\n assert_eq!(metainfo.get_upstream(\"TEST_KEY\").unwrap(), \"transit\");\n let map = metainfo\n .get_all_persistents_and_transients_with_http_prefix()\n .unwrap();\n assert_eq!(map.get(\"rpc-persist-test-key\").unwrap(), \"persist\");\n // The `RPC_TRANSIT_TEST_KEY` is inserted into `upstream` and we cannot get it from\n // `transients`.\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 801, + "StartOffset": 24086, + "EndOffset": 24089 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 804, + "StartOffset": 24220, + "EndOffset": 24229 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 804, + "StartOffset": 24240, + "EndOffset": 24254 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 802, + "StartOffset": 24095, + "EndOffset": 24131 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 803, + "StartOffset": 24139, + "EndOffset": 24173 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 804, + "StartOffset": 24267, + "EndOffset": 24273 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 807, + "StartOffset": 24465, + "EndOffset": 24516 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "src/lib.rs", + "Line": 809, + "StartOffset": 24569, + "EndOffset": 24572 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 801, + "StartOffset": 24076, + "EndOffset": 24084 + } + ] + }, + "rpc_forward_test": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "File": "src/lib.rs", + "Line": 784, + "StartOffset": 23315, + "EndOffset": 24010, + "Content": "#[test]\n fn rpc_forward_test() {\n let mut metainfo = MetaInfo::new();\n metainfo.strip_rpc_prefix_and_set_persistent(\"RPC_PERSIST_TEST_KEY\", \"PERSIST\");\n metainfo.strip_rpc_prefix_and_set_upstream(\"RPC_TRANSIT_TEST_KEY\", \"TRANSIT\");\n assert_eq!(metainfo.get_persistent(\"TEST_KEY\").unwrap(), \"PERSIST\");\n assert_eq!(metainfo.get_upstream(\"TEST_KEY\").unwrap(), \"TRANSIT\");\n let map = metainfo\n .get_all_persistents_and_transients_with_rpc_prefix()\n .unwrap();\n assert_eq!(map.get(\"RPC_PERSIST_TEST_KEY\").unwrap(), \"PERSIST\");\n // The `RPC_TRANSIT_TEST_KEY` is inserted into `upstream` and we cannot get it from\n // `transients`.\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 786, + "StartOffset": 23361, + "EndOffset": 23364 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 789, + "StartOffset": 23493, + "EndOffset": 23502 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 789, + "StartOffset": 23513, + "EndOffset": 23527 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 787, + "StartOffset": 23369, + "EndOffset": 23404 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 788, + "StartOffset": 23413, + "EndOffset": 23446 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 789, + "StartOffset": 23540, + "EndOffset": 23546 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 792, + "StartOffset": 23737, + "EndOffset": 23787 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "src/lib.rs", + "Line": 794, + "StartOffset": 23840, + "EndOffset": 23843 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 786, + "StartOffset": 23351, + "EndOffset": 23359 + } + ] + }, + "set_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 375, + "StartOffset": -1, + "EndOffset": 11990, + "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n ) {\n self.[\u003censure_ $node _node\u003e]();\n self.[\u003c$node _node\u003e]\n .as_mut()\n .unwrap()\n .[\u003cset_ $func_name\u003e](key, value)\n }\n }\n };\n}" + }, + "test_clear": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "File": "src/lib.rs", + "Line": 650, + "StartOffset": 19653, + "EndOffset": 20116, + "Content": "#[test]\n fn test_clear() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(8);\n map.insert::\u003ci16\u003e(16);\n map.insert::\u003ci32\u003e(32);\n\n assert!(map.contains::\u003ci8\u003e());\n assert!(map.contains::\u003ci16\u003e());\n assert!(map.contains::\u003ci32\u003e());\n\n map.clear();\n\n assert!(!map.contains::\u003ci8\u003e());\n assert!(!map.contains::\u003ci16\u003e());\n assert!(!map.contains::\u003ci32\u003e());\n\n map.insert::\u003ci8\u003e(10);\n assert_eq!(*map.get::\u003ci8\u003e().unwrap(), 10);\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 652, + "StartOffset": 19694, + "EndOffset": 19697 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 658, + "StartOffset": 19823, + "EndOffset": 19829 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 669, + "StartOffset": 20089, + "EndOffset": 20098 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 654, + "StartOffset": 19735, + "EndOffset": 19741 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "File": "src/lib.rs", + "Line": 658, + "StartOffset": 19835, + "EndOffset": 19843 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "File": "src/lib.rs", + "Line": 662, + "StartOffset": 19947, + "EndOffset": 19952 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 669, + "StartOffset": 20105, + "EndOffset": 20108 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 669, + "StartOffset": 20117, + "EndOffset": 20123 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 652, + "StartOffset": 19684, + "EndOffset": 19692 + } + ] + }, + "test_composition": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "File": "src/lib.rs", + "Line": 710, + "StartOffset": 21505, + "EndOffset": 22087, + "Content": "#[test]\n fn test_composition() {\n struct Magi\u003cT\u003e(pub T);\n\n struct Madoka {\n pub god: bool,\n }\n\n struct Homura {\n pub attempts: usize,\n }\n\n struct Mami {\n pub guns: usize,\n }\n\n let mut map = MetaInfo::new();\n\n map.insert(Magi(Madoka { god: false }));\n map.insert(Magi(Homura { attempts: 0 }));\n map.insert(Magi(Mami { guns: 999 }));\n\n assert!(!map.get::\u003cMagi\u003cMadoka\u003e\u003e().unwrap().0.god);\n assert_eq!(0, map.get::\u003cMagi\u003cHomura\u003e\u003e().unwrap().0.attempts);\n assert_eq!(999, map.get::\u003cMagi\u003cMami\u003e\u003e().unwrap().0.guns);\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 726, + "StartOffset": 21797, + "EndOffset": 21800 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 732, + "StartOffset": 21959, + "EndOffset": 21965 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 733, + "StartOffset": 21960, + "EndOffset": 21969 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 728, + "StartOffset": 21817, + "EndOffset": 21823 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 732, + "StartOffset": 21972, + "EndOffset": 21975 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 732, + "StartOffset": 21994, + "EndOffset": 22000 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 726, + "StartOffset": 21787, + "EndOffset": 21795 + } + ] + }, + "test_extend": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "File": "src/lib.rs", + "Line": 756, + "StartOffset": 22645, + "EndOffset": 23261, + "Content": "#[test]\n fn test_extend() {\n #[derive(Debug, PartialEq)]\n struct MyType(i32);\n\n let mut metainfo = MetaInfo::new();\n\n metainfo.insert(5i32);\n metainfo.insert(MyType(10));\n\n let mut other = MetaInfo::new();\n\n other.insert(15i32);\n other.insert(20u8);\n\n metainfo.extend(other);\n\n assert_eq!(metainfo.get(), Some(\u002615i32));\n\n assert_eq!(metainfo.remove::\u003ci32\u003e(), Some(15i32));\n assert!(metainfo.get::\u003ci32\u003e().is_none());\n\n assert_eq!(metainfo.get::\u003cbool\u003e(), None);\n assert_eq!(metainfo.get(), Some(\u0026MyType(10)));\n\n assert_eq!(metainfo.get(), Some(\u002620u8));\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 761, + "StartOffset": 22778, + "EndOffset": 22781 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 773, + "StartOffset": 22996, + "EndOffset": 23005 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 776, + "StartOffset": 23048, + "EndOffset": 23054 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 763, + "StartOffset": 22803, + "EndOffset": 22809 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "File": "src/lib.rs", + "Line": 771, + "StartOffset": 22972, + "EndOffset": 22978 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 773, + "StartOffset": 23016, + "EndOffset": 23019 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 775, + "StartOffset": 23067, + "EndOffset": 23073 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 776, + "StartOffset": 23078, + "EndOffset": 23085 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 761, + "StartOffset": 22768, + "EndOffset": 22776 + } + ] + }, + "test_integers": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "File": "src/lib.rs", + "Line": 672, + "StartOffset": 20172, + "EndOffset": 21455, + "Content": "#[test]\n fn test_integers() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(8);\n map.insert::\u003ci16\u003e(16);\n map.insert::\u003ci32\u003e(32);\n map.insert::\u003ci64\u003e(64);\n map.insert::\u003ci128\u003e(128);\n map.insert::\u003cu8\u003e(8);\n map.insert::\u003cu16\u003e(16);\n map.insert::\u003cu32\u003e(32);\n map.insert::\u003cu64\u003e(64);\n map.insert::\u003cu128\u003e(128);\n assert!(map.get::\u003ci8\u003e().is_some());\n assert!(map.get::\u003ci16\u003e().is_some());\n assert!(map.get::\u003ci32\u003e().is_some());\n assert!(map.get::\u003ci64\u003e().is_some());\n assert!(map.get::\u003ci128\u003e().is_some());\n assert!(map.get::\u003cu8\u003e().is_some());\n assert!(map.get::\u003cu16\u003e().is_some());\n assert!(map.get::\u003cu32\u003e().is_some());\n assert!(map.get::\u003cu64\u003e().is_some());\n assert!(map.get::\u003cu128\u003e().is_some());\n\n let m2 = MetaInfo::from(Arc::new(map));\n assert!(m2.get::\u003ci8\u003e().is_some());\n assert!(m2.get::\u003ci16\u003e().is_some());\n assert!(m2.get::\u003ci32\u003e().is_some());\n assert!(m2.get::\u003ci64\u003e().is_some());\n assert!(m2.get::\u003ci128\u003e().is_some());\n assert!(m2.get::\u003cu8\u003e().is_some());\n assert!(m2.get::\u003cu16\u003e().is_some());\n assert!(m2.get::\u003cu32\u003e().is_some());\n assert!(m2.get::\u003cu64\u003e().is_some());\n assert!(m2.get::\u003cu128\u003e().is_some());\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 674, + "StartOffset": 20213, + "EndOffset": 20216 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 686, + "StartOffset": 20531, + "EndOffset": 20537 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "File": "src/lib.rs", + "Line": 697, + "StartOffset": 21033, + "EndOffset": 21037 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "File": "src/lib.rs", + "Line": 697, + "StartOffset": 21043, + "EndOffset": 21046 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 676, + "StartOffset": 20257, + "EndOffset": 20263 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 686, + "StartOffset": 20543, + "EndOffset": 20546 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "File": "src/lib.rs", + "Line": 686, + "StartOffset": 20555, + "EndOffset": 20562 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 674, + "StartOffset": 20203, + "EndOffset": 20211 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 697, + "StartOffset": 21038, + "EndOffset": 21041 + } + ] + }, + "test_metainfo": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "File": "src/lib.rs", + "Line": 737, + "StartOffset": 22158, + "EndOffset": 22585, + "Content": "#[test]\n fn test_metainfo() {\n #[derive(Debug, PartialEq)]\n struct MyType(i32);\n\n let mut metainfo = MetaInfo::new();\n\n metainfo.insert(5i32);\n metainfo.insert(MyType(10));\n\n assert_eq!(metainfo.get(), Some(\u00265i32));\n\n assert_eq!(metainfo.remove::\u003ci32\u003e(), Some(5i32));\n assert!(metainfo.get::\u003ci32\u003e().is_none());\n\n assert_eq!(metainfo.get::\u003cbool\u003e(), None);\n assert_eq!(metainfo.get(), Some(\u0026MyType(10)));\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 742, + "StartOffset": 22293, + "EndOffset": 22296 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/lib.rs", + "Line": 747, + "StartOffset": 22378, + "EndOffset": 22387 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 750, + "StartOffset": 22429, + "EndOffset": 22435 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 744, + "StartOffset": 22318, + "EndOffset": 22324 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 747, + "StartOffset": 22398, + "EndOffset": 22401 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 749, + "StartOffset": 22448, + "EndOffset": 22454 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 750, + "StartOffset": 22459, + "EndOffset": 22466 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 742, + "StartOffset": 22283, + "EndOffset": 22291 + } + ] + }, + "test_remove": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "File": "src/lib.rs", + "Line": 632, + "StartOffset": 19267, + "EndOffset": 19605, + "Content": "#[test]\n fn test_remove() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(123);\n assert!(map.get::\u003ci8\u003e().is_some());\n\n map.remove::\u003ci8\u003e();\n assert!(map.get::\u003ci8\u003e().is_none());\n\n map.insert::\u003ci8\u003e(123);\n\n let mut m2 = MetaInfo::from(Arc::new(map));\n\n m2.remove::\u003ci8\u003e();\n assert!(m2.get::\u003ci8\u003e().is_some());\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "File": "src/lib.rs", + "Line": 634, + "StartOffset": 19308, + "EndOffset": 19311 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "File": "src/lib.rs", + "Line": 637, + "StartOffset": 19347, + "EndOffset": 19353 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "File": "src/lib.rs", + "Line": 644, + "StartOffset": 19550, + "EndOffset": 19554 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "File": "src/lib.rs", + "Line": 644, + "StartOffset": 19560, + "EndOffset": 19563 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 636, + "StartOffset": 19350, + "EndOffset": 19356 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 637, + "StartOffset": 19359, + "EndOffset": 19362 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "File": "src/lib.rs", + "Line": 637, + "StartOffset": 19371, + "EndOffset": 19378 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 639, + "StartOffset": 19426, + "EndOffset": 19432 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 640, + "StartOffset": 19447, + "EndOffset": 19454 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 634, + "StartOffset": 19298, + "EndOffset": 19306 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 644, + "StartOffset": 19555, + "EndOffset": 19558 + } + ] + } + }, + "Types": { + "Homura": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Homura", + "File": "src/lib.rs", + "Line": 718, + "StartOffset": 21643, + "EndOffset": 21669, + "Content": "struct Homura {\n pub attempts: usize,\n }" + }, + "Madoka": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Madoka", + "File": "src/lib.rs", + "Line": 714, + "StartOffset": 21581, + "EndOffset": 21607, + "Content": "struct Madoka {\n pub god: bool,\n }" + }, + "Magi": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Magi", + "File": "src/lib.rs", + "Line": 712, + "StartOffset": 21522, + "EndOffset": 21544, + "Content": "struct Magi\u003cT\u003e(pub T);" + }, + "Mami": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Mami", + "File": "src/lib.rs", + "Line": 722, + "StartOffset": 21711, + "EndOffset": 21735, + "Content": "struct Mami {\n pub guns: usize,\n }" + }, + "MetaInfo": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 37, + "StartOffset": -1, + "EndOffset": 2148, + "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::\u003ci8\u003e(2);\n/// assert_eq!(*m1.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// m2.insert::\u003ci8\u003e(4);\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 4);\n///\n/// m2.remove::\u003ci8\u003e();\n/// assert_eq!(*m2.get::\u003ci8\u003e().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\u003cArc\u003cMetaInfo\u003e\u003e,\n tmap: Option\u003cTypeMap\u003e,\n smap: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e, // for str k-v\n faststr_tmap: Option\u003cFastStrMap\u003e, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 68, + "StartOffset": 1799, + "EndOffset": 1805 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 68, + "StartOffset": 1806, + "EndOffset": 1809 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1839, + "EndOffset": 1845 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1846, + "EndOffset": 1853 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1874, + "EndOffset": 1880 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1881, + "EndOffset": 1889 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1890, + "EndOffset": 1897 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1899, + "EndOffset": 1906 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 71, + "StartOffset": 1909, + "EndOffset": 1915 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 71, + "StartOffset": 1916, + "EndOffset": 1926 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 75, + "StartOffset": 2112, + "EndOffset": 2118 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 75, + "StartOffset": 2123, + "EndOffset": 2127 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 76, + "StartOffset": 2130, + "EndOffset": 2136 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 76, + "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": "Debug\u003cMetaInfo\u003e.fmt" + }, + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get" + }, + "get_all_backward_downstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams" + }, + "get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients" + }, + "get_all_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix" + }, + "get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.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\u003cMetaInfo\u003e.get_all_persistents" + }, + "get_all_persistents_and_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients" + }, + "get_all_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix" + }, + "get_all_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix" + }, + "get_all_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients" + }, + "get_all_upstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.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" + }, + "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\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream" + }, + "strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent" + }, + "strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream" + }, + "strip_rpc_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream" + }, + "strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent" + }, + "strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "strip_rpc_prefix_and_set_upstream" + } + } + }, + "MyType": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MyType", + "File": "src/lib.rs", + "Line": 758, + "StartOffset": 22662, + "EndOffset": 22704, + "Content": "#[derive(Debug, PartialEq)]\n struct MyType(i32);" + } + }, + "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": -1, + "EndOffset": 888, + "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": -1, + "EndOffset": 796, + "Content": "pub const HTTP_PREFIX_BACKWARD: \u0026str = \"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": -1, + "EndOffset": 685, + "Content": "pub const HTTP_PREFIX_PERSISTENT: \u0026str = \"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": -1, + "EndOffset": 739, + "Content": "pub const HTTP_PREFIX_TRANSIENT: \u0026str = \"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": -1, + "EndOffset": 628, + "Content": "pub const RPC_PREFIX_BACKWARD: \u0026str = \"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": -1, + "EndOffset": 572, + "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: \u0026str = \"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": -1, + "EndOffset": 572, + "Content": "pub const RPC_PREFIX_TRANSIENT: \u0026str = \"RPC_TRANSIT_\";" + }, + "backward_node": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "backward_node", + "File": "src/lib.rs", + "Line": 94, + "StartOffset": 2661, + "EndOffset": 2710, + "Type": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone" + }, + "Content": "let backward_node = parent.backward_node.clone();" + }, + "forward_node": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "forward_node", + "File": "src/lib.rs", + "Line": 93, + "StartOffset": 2608, + "EndOffset": 2655, + "Type": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone" + }, + "Content": "let forward_node = parent.forward_node.clone();" + }, + "key": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "key", + "File": "src/lib.rs", + "Line": 491, + "StartOffset": 14904, + "EndOffset": 14927, + "Type": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref" + }, + "Content": "let key = key.as_ref();" + }, + "m2": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "m2", + "File": "src/lib.rs", + "Line": 697, + "StartOffset": 21014, + "EndOffset": 21053, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + "Content": "let m2 = MetaInfo::from(Arc::new(map));" + }, + "map": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "map", + "File": "src/lib.rs", + "Line": 806, + "StartOffset": 24385, + "EndOffset": 24501, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test" + }, + "Content": "let map = metainfo\n .get_all_persistents_and_transients_with_http_prefix()\n .unwrap();" + }, + "mi": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mi", + "File": "src/lib.rs", + "Line": 127, + "StartOffset": 3842, + "EndOffset": 3866, + "Type": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc" + }, + "Content": "let mi = Arc::new(self);" + }, + "mut m2": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut m2", + "File": "src/lib.rs", + "Line": 644, + "StartOffset": 19527, + "EndOffset": 19570, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + "Content": "let mut m2 = MetaInfo::from(Arc::new(map));" + }, + "mut map": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut map", + "File": "src/lib.rs", + "Line": 571, + "StartOffset": 17479, + "EndOffset": 17526, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + }, + "Content": "let mut map = AHashMap::with_capacity(new_cap);" + }, + "mut metainfo": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut metainfo", + "File": "src/lib.rs", + "Line": 801, + "StartOffset": 24057, + "EndOffset": 24092, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + "Content": "let mut metainfo = MetaInfo::new();" + }, + "mut other": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut other", + "File": "src/lib.rs", + "Line": 766, + "StartOffset": 22863, + "EndOffset": 22895, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + "Content": "let mut other = MetaInfo::new();" + }, + "new": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new", + "File": "src/lib.rs", + "Line": 115, + "StartOffset": 3370, + "EndOffset": 3672, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + }, + "Content": "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 };" + }, + "new_cap": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new_cap", + "File": "src/lib.rs", + "Line": 603, + "StartOffset": 18488, + "EndOffset": 18510, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix" + }, + "Content": "let new_cap = t.len();" + }, + "persistents": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "persistents", + "File": "src/lib.rs", + "Line": 564, + "StartOffset": 17126, + "EndOffset": 17171, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients" + }, + "Content": "let persistents = node.get_all_persistents();" + }, + "transients": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "transients", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17154, + "EndOffset": 17197, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients" + }, + "Content": "let transients = node.get_all_transients();" + } + } + }, + "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": -1, + "EndOffset": 1217, + "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_backward_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_downstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_backward_transients_with_rpc_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_transients_with_http_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_backward_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_backward_downstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 97, + "EndOffset": 102 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 127, + "EndOffset": 133 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 134, + "EndOffset": 141 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 7, + "StartOffset": 153, + "EndOffset": 158 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 7, + "StartOffset": 183, + "EndOffset": 189 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 7, + "StartOffset": 190, + "EndOffset": 197 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 325, + "EndOffset": 331 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 333, + "EndOffset": 341 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 342, + "EndOffset": 349 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 351, + "EndOffset": 358 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 10, + "StartOffset": 327, + "EndOffset": 333 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 10, + "StartOffset": 335, + "EndOffset": 343 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 10, + "StartOffset": 344, + "EndOffset": 351 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 10, + "StartOffset": 353, + "EndOffset": 360 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 507, + "EndOffset": 513 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 514, + "EndOffset": 522 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 523, + "EndOffset": 530 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 532, + "EndOffset": 539 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 13, + "StartOffset": 509, + "EndOffset": 515 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 13, + "StartOffset": 516, + "EndOffset": 524 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 13, + "StartOffset": 525, + "EndOffset": 532 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 13, + "StartOffset": 534, + "EndOffset": 541 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 675, + "EndOffset": 679 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 680, + "EndOffset": 687 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 693, + "EndOffset": 697 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 698, + "EndOffset": 705 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 16, + "StartOffset": 677, + "EndOffset": 681 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 16, + "StartOffset": 682, + "EndOffset": 689 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 16, + "StartOffset": 695, + "EndOffset": 699 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 16, + "StartOffset": 700, + "EndOffset": 707 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 18, + "StartOffset": 891, + "EndOffset": 896 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 18, + "StartOffset": 906, + "EndOffset": 910 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 18, + "StartOffset": 911, + "EndOffset": 918 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 24, + "StartOffset": 1039, + "EndOffset": 1044 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 24, + "StartOffset": 1054, + "EndOffset": 1058 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 24, + "StartOffset": 1059, + "EndOffset": 1066 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1164, + "EndOffset": 1169 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1198, + "EndOffset": 1204 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1205, + "EndOffset": 1212 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 31, + "StartOffset": 1166, + "EndOffset": 1171 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 31, + "StartOffset": 1200, + "EndOffset": 1206 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 31, + "StartOffset": 1207, + "EndOffset": 1214 + } + ] + } + }, + "Vars": {} + }, + "metainfo::convert": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::convert", + "Functions": { + "Converter\u003cHttpConverter\u003e.add_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 118, + "StartOffset": 3588, + "EndOffset": 3648, + "Content": "impl Converter for HttpConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 118, + "StartOffset": 3632, + "EndOffset": 3639 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 119, + "StartOffset": 3598, + "EndOffset": 3627 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 119, + "StartOffset": 3628, + "EndOffset": 3648 + } + ] + }, + "Converter\u003cHttpConverter\u003e.add_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 110, + "StartOffset": 3278, + "EndOffset": 3374, + "Content": "impl Converter for HttpConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 111, + "StartOffset": 3322, + "EndOffset": 3351 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 110, + "StartOffset": 3324, + "EndOffset": 3331 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 111, + "StartOffset": 3352, + "EndOffset": 3374 + } + ] + }, + "Converter\u003cHttpConverter\u003e.add_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 114, + "StartOffset": 3451, + "EndOffset": 3512, + "Content": "impl Converter for HttpConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 115, + "StartOffset": 3461, + "EndOffset": 3490 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 114, + "StartOffset": 3496, + "EndOffset": 3503 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 115, + "StartOffset": 3491, + "EndOffset": 3512 + } + ] + }, + "Converter\u003cHttpConverter\u003e.remove_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 130, + "StartOffset": 4025, + "EndOffset": 4096, + "Content": "impl Converter for HttpConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 131, + "StartOffset": 4035, + "EndOffset": 4066 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 130, + "StartOffset": 4072, + "EndOffset": 4078 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 130, + "StartOffset": 4079, + "EndOffset": 4086 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 131, + "StartOffset": 4067, + "EndOffset": 4087 + } + ] + }, + "Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 122, + "StartOffset": 3723, + "EndOffset": 3796, + "Content": "impl Converter for HttpConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 123, + "StartOffset": 3733, + "EndOffset": 3764 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 122, + "StartOffset": 3772, + "EndOffset": 3778 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 122, + "StartOffset": 3779, + "EndOffset": 3786 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 123, + "StartOffset": 3765, + "EndOffset": 3787 + } + ] + }, + "Converter\u003cHttpConverter\u003e.remove_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 126, + "StartOffset": 3875, + "EndOffset": 3947, + "Content": "impl Converter for HttpConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 127, + "StartOffset": 3885, + "EndOffset": 3916 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 126, + "StartOffset": 3923, + "EndOffset": 3929 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 126, + "StartOffset": 3930, + "EndOffset": 3937 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 127, + "StartOffset": 3917, + "EndOffset": 3938 + } + ] + }, + "Converter\u003cRpcConverter\u003e.add_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 46, + "StartOffset": 1387, + "EndOffset": 1447, + "Content": "impl Converter for RpcConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 46, + "StartOffset": 1431, + "EndOffset": 1438 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 47, + "StartOffset": 1397, + "EndOffset": 1407 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 47, + "StartOffset": 1408, + "EndOffset": 1427 + } + ] + }, + "Converter\u003cRpcConverter\u003e.add_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 38, + "StartOffset": 1118, + "EndOffset": 1213, + "Content": "impl Converter for RpcConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 39, + "StartOffset": 1161, + "EndOffset": 1171 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 38, + "StartOffset": 1164, + "EndOffset": 1171 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 39, + "StartOffset": 1172, + "EndOffset": 1193 + } + ] + }, + "Converter\u003cRpcConverter\u003e.add_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 42, + "StartOffset": 1270, + "EndOffset": 1331, + "Content": "impl Converter for RpcConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 43, + "StartOffset": 1280, + "EndOffset": 1290 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 42, + "StartOffset": 1315, + "EndOffset": 1322 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 43, + "StartOffset": 1291, + "EndOffset": 1311 + } + ] + }, + "Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 58, + "StartOffset": 1766, + "EndOffset": 1837, + "Content": "impl Converter for RpcConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 59, + "StartOffset": 1776, + "EndOffset": 1789 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 58, + "StartOffset": 1813, + "EndOffset": 1819 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 58, + "StartOffset": 1820, + "EndOffset": 1827 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 59, + "StartOffset": 1790, + "EndOffset": 1809 + } + ] + }, + "Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 50, + "StartOffset": 1502, + "EndOffset": 1575, + "Content": "impl Converter for RpcConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 51, + "StartOffset": 1512, + "EndOffset": 1525 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 50, + "StartOffset": 1551, + "EndOffset": 1557 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 50, + "StartOffset": 1558, + "EndOffset": 1565 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 51, + "StartOffset": 1526, + "EndOffset": 1547 + } + ] + }, + "Converter\u003cRpcConverter\u003e.remove_transient_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1635, + "EndOffset": 1707, + "Content": "impl Converter for RpcConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 55, + "StartOffset": 1645, + "EndOffset": 1658 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1683, + "EndOffset": 1689 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1690, + "EndOffset": 1697 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 55, + "StartOffset": 1659, + "EndOffset": 1679 + } + ] + }, + "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": 92, + "StartOffset": 2680, + "EndOffset": 2931, + "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\n let mut buf = String::with_capacity(prefix.len() + key.len());\n buf.push_str(prefix);\n self.to_http_format(key, \u0026mut buf);\n FastStr::from_string(buf)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 94, + "StartOffset": 2721, + "EndOffset": 2734 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 97, + "StartOffset": 2899, + "EndOffset": 2910 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 94, + "StartOffset": 2742, + "EndOffset": 2745 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "File": "src/convert.rs", + "Line": 95, + "StartOffset": 2793, + "EndOffset": 2801 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 96, + "StartOffset": 2865, + "EndOffset": 2879 + } + ], + "Types": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 93, + "StartOffset": 2757, + "EndOffset": 2764 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 94, + "StartOffset": 2713, + "EndOffset": 2719 + } + ] + }, + "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": 100, + "StartOffset": 2970, + "EndOffset": 3230, + "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n Some(FastStr::from_string(buf))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 103, + "StartOffset": 3111, + "EndOffset": 3124 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 105, + "StartOffset": 3204, + "EndOffset": 3215 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "File": "src/convert.rs", + "Line": 102, + "StartOffset": 3003, + "EndOffset": 3015 + }, + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 103, + "StartOffset": 3129, + "EndOffset": 3132 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 104, + "StartOffset": 3139, + "EndOffset": 3152 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 101, + "StartOffset": 3049, + "EndOffset": 3055 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 101, + "StartOffset": 3056, + "EndOffset": 3063 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 103, + "StartOffset": 3103, + "EndOffset": 3109 + } + ] + }, + "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": 66, + "StartOffset": 1925, + "EndOffset": 2298, + "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' =\u003e ch.to_ascii_lowercase(),\n '_' =\u003e '-',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "File": "src/convert.rs", + "Line": 69, + "StartOffset": 2043, + "EndOffset": 2048 + }, + { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "File": "src/convert.rs", + "Line": 71, + "StartOffset": 2145, + "EndOffset": 2163 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "File": "src/convert.rs", + "Line": 75, + "StartOffset": 2268, + "EndOffset": 2272 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 68, + "StartOffset": 2057, + "EndOffset": 2063 + } + ] + }, + "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": 245, + "StartOffset": 7293, + "EndOffset": 7490, + "Content": "impl HttpConverter {\n fn to_http_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_http_format(key, \u0026mut buf);\n buf\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 246, + "StartOffset": 7344, + "EndOffset": 7357 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 246, + "StartOffset": 7362, + "EndOffset": 7365 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 247, + "StartOffset": 7390, + "EndOffset": 7404 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 245, + "StartOffset": 7339, + "EndOffset": 7345 + } + ] + }, + "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": 79, + "StartOffset": 2313, + "EndOffset": 2665, + "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "File": "src/convert.rs", + "Line": 82, + "StartOffset": 2411, + "EndOffset": 2416 + }, + { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "File": "src/convert.rs", + "Line": 84, + "StartOffset": 2512, + "EndOffset": 2530 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "File": "src/convert.rs", + "Line": 88, + "StartOffset": 2635, + "EndOffset": 2639 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 81, + "StartOffset": 2424, + "EndOffset": 2430 + } + ] + }, + "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": 251, + "StartOffset": 7515, + "EndOffset": 7686, + "Content": "impl HttpConverter {\n fn to_rpc_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n buf\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 252, + "StartOffset": 7542, + "EndOffset": 7555 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 252, + "StartOffset": 7560, + "EndOffset": 7563 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 253, + "StartOffset": 7587, + "EndOffset": 7600 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 251, + "StartOffset": 7560, + "EndOffset": 7566 + } + ] + }, + "RpcConverter.add_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 22, + "StartOffset": 643, + "EndOffset": 877, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 23, + "StartOffset": 720, + "EndOffset": 727 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 24, + "StartOffset": 703, + "EndOffset": 716 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 27, + "StartOffset": 862, + "EndOffset": 873 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 24, + "StartOffset": 724, + "EndOffset": 727 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "File": "src/convert.rs", + "Line": 25, + "StartOffset": 756, + "EndOffset": 764 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 24, + "StartOffset": 695, + "EndOffset": 701 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 27, + "StartOffset": 853, + "EndOffset": 860 + } + ] + }, + "RpcConverter.remove_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 30, + "StartOffset": 916, + "EndOffset": 1059, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::from_string(key.to_owned()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "FunctionCalls": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 33, + "StartOffset": 1031, + "EndOffset": 1042 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "File": "src/convert.rs", + "Line": 32, + "StartOffset": 949, + "EndOffset": 961 + }, + { + "ModPath": "", + "PkgPath": "alloc::str", + "Name": "to_owned", + "File": "src/convert.rs", + "Line": 33, + "StartOffset": 1047, + "EndOffset": 1055 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 31, + "StartOffset": 977, + "EndOffset": 983 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 31, + "StartOffset": 984, + "EndOffset": 991 + } + ] + }, + "add_http_prefix": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "File": "src/convert.rs", + "Line": 305, + "StartOffset": 9416, + "EndOffset": 9828, + "Content": "#[test]\n fn add_http_prefix() {\n assert_eq!(\n HttpConverter.add_persistent_prefix(\"TEST_KEY\"),\n \"rpc-persist-test-key\",\n );\n assert_eq!(\n HttpConverter.add_transient_prefix(\"TEST_KEY\"),\n \"rpc-transit-test-key\",\n );\n assert_eq!(\n HttpConverter.add_backward_prefix(\"TEST_KEY\"),\n \"rpc-backward-test-key\",\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 307, + "StartOffset": 9433, + "EndOffset": 9442 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 308, + "StartOffset": 9478, + "EndOffset": 9499 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 312, + "StartOffset": 9606, + "EndOffset": 9626 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 316, + "StartOffset": 9733, + "EndOffset": 9752 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 308, + "StartOffset": 9464, + "EndOffset": 9477 + } + ] + }, + "add_rpc_prefix": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "File": "src/convert.rs", + "Line": 139, + "StartOffset": 4275, + "EndOffset": 4683, + "Content": "#[test]\n fn add_rpc_prefix() {\n assert_eq!(\n RpcConverter.add_persistent_prefix(\"TEST_KEY\"),\n \"RPC_PERSIST_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_transient_prefix(\"TEST_KEY\"),\n \"RPC_TRANSIT_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_backward_prefix(\"TEST_KEY\"),\n \"RPC_BACKWARD_TEST_KEY\",\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 141, + "StartOffset": 4292, + "EndOffset": 4301 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 142, + "StartOffset": 4335, + "EndOffset": 4356 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 146, + "StartOffset": 4462, + "EndOffset": 4482 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 150, + "StartOffset": 4588, + "EndOffset": 4607 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/convert.rs", + "Line": 142, + "StartOffset": 4322, + "EndOffset": 4334 + } + ] + }, + "check": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "File": "src/convert.rs", + "Line": 260, + "StartOffset": 7730, + "EndOffset": 7821, + "Content": "fn check(rpc_style: \u0026str, http_style: \u0026str) {\n assert_eq!(HttpConverter.to_http_format_string(rpc_style), http_style);\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "File": "src/convert.rs", + "Line": 260, + "StartOffset": 7733, + "EndOffset": 7738 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7770, + "EndOffset": 7779 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7795, + "EndOffset": 7816 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7781, + "EndOffset": 7794 + } + ] + }, + "check_http": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "File": "src/convert.rs", + "Line": 288, + "StartOffset": 8836, + "EndOffset": 9064, + "Content": "fn check_http(http_style: \u0026str) {\n assert_eq!(\n HttpConverter\n .to_http_format_string(\u0026HttpConverter.to_rpc_format_string(http_style)),\n http_style,\n );\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "File": "src/convert.rs", + "Line": 288, + "StartOffset": 8839, + "EndOffset": 8849 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 289, + "StartOffset": 8850, + "EndOffset": 8859 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 291, + "StartOffset": 8925, + "EndOffset": 8946 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 291, + "StartOffset": 8962, + "EndOffset": 8982 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 290, + "StartOffset": 8896, + "EndOffset": 8909 + } + ] + }, + "check_rpc": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "File": "src/convert.rs", + "Line": 282, + "StartOffset": 8594, + "EndOffset": 8822, + "Content": "fn check_rpc(rpc_style: \u0026str) {\n assert_eq!(\n HttpConverter.to_rpc_format_string(\u0026HttpConverter.to_http_format_string(rpc_style)),\n rpc_style,\n );\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "File": "src/convert.rs", + "Line": 282, + "StartOffset": 8597, + "EndOffset": 8606 + }, + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 283, + "StartOffset": 8633, + "EndOffset": 8642 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8691, + "EndOffset": 8711 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8727, + "EndOffset": 8748 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8677, + "EndOffset": 8690 + } + ] + }, + "format_bidirect_convert": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "File": "src/convert.rs", + "Line": 280, + "StartOffset": 8577, + "EndOffset": 9379, + "Content": "#[test]\n fn format_bidirect_convert() {\n fn check_rpc(rpc_style: \u0026str) {\n assert_eq!(\n HttpConverter.to_rpc_format_string(\u0026HttpConverter.to_http_format_string(rpc_style)),\n rpc_style,\n );\n }\n fn check_http(http_style: \u0026str) {\n assert_eq!(\n HttpConverter\n .to_http_format_string(\u0026HttpConverter.to_rpc_format_string(http_style)),\n http_style,\n );\n }\n check_rpc(\"RPC_PERSIST_TEST_KEY\");\n check_rpc(\"RPC_TRANSIT_TEST_KEY\");\n check_rpc(\"RPC_BACKWARD_TEST_KEY\");\n check_rpc(\"TEST_KEY\");\n check_http(\"rpc-persist-test-key\");\n check_http(\"rpc-transit-test-key\");\n check_http(\"rpc-backward-test-key\");\n check_http(\"test-key\");\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 283, + "StartOffset": 8633, + "EndOffset": 8642 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8691, + "EndOffset": 8711 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8727, + "EndOffset": 8748 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 284, + "StartOffset": 8677, + "EndOffset": 8690 + } + ] + }, + "http_format_convert_test": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "File": "src/convert.rs", + "Line": 258, + "StartOffset": 7713, + "EndOffset": 8102, + "Content": "#[test]\n fn http_format_convert_test() {\n fn check(rpc_style: \u0026str, http_style: \u0026str) {\n assert_eq!(HttpConverter.to_http_format_string(rpc_style), http_style);\n }\n check(\"RPC_PERSIST_TEST_KEY\", \"rpc-persist-test-key\");\n check(\"RPC_TRANSIT_TEST_KEY\", \"rpc-transit-test-key\");\n check(\"RPC_BACKWARD_TEST_KEY\", \"rpc-backward-test-key\");\n check(\"TEST_KEY\", \"test-key\");\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7770, + "EndOffset": 7779 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7795, + "EndOffset": 7816 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 261, + "StartOffset": 7781, + "EndOffset": 7794 + } + ] + }, + "http_prefix_bidirect": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "File": "src/convert.rs", + "Line": 361, + "StartOffset": 10945, + "EndOffset": 12437, + "Content": "#[test]\n fn http_prefix_bidirect() {\n // remove after add\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\u0026HttpConverter.add_persistent_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\u0026HttpConverter.add_transient_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\u0026HttpConverter.add_backward_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n\n // add after remove\n assert_eq!(\n HttpConverter.add_persistent_prefix(\n \u0026HttpConverter\n .remove_persistent_prefix(\"rpc-persist-test-key\")\n .unwrap()\n ),\n \"rpc-persist-test-key\",\n );\n assert_eq!(\n HttpConverter.add_transient_prefix(\n \u0026HttpConverter\n .remove_transient_prefix(\"rpc-transit-test-key\")\n .unwrap()\n ),\n \"rpc-transit-test-key\",\n );\n assert_eq!(\n HttpConverter.add_backward_prefix(\n \u0026HttpConverter\n .remove_backward_prefix(\"rpc-backward-test-key\")\n .unwrap()\n ),\n \"rpc-backward-test-key\",\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 364, + "StartOffset": 10994, + "EndOffset": 11003 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 366, + "StartOffset": 11051, + "EndOffset": 11075 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 366, + "StartOffset": 11091, + "EndOffset": 11112 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "File": "src/convert.rs", + "Line": 367, + "StartOffset": 11077, + "EndOffset": 11085 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 372, + "StartOffset": 11259, + "EndOffset": 11282 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 372, + "StartOffset": 11298, + "EndOffset": 11318 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 378, + "StartOffset": 11465, + "EndOffset": 11487 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 378, + "StartOffset": 11503, + "EndOffset": 11522 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/convert.rs", + "Line": 388, + "StartOffset": 11782, + "EndOffset": 11788 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 365, + "StartOffset": 11026, + "EndOffset": 11039 + } + ] + }, + "remove_http_prefix": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "File": "src/convert.rs", + "Line": 321, + "StartOffset": 9844, + "EndOffset": 10929, + "Content": "#[test]\n fn remove_http_prefix() {\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\"rpc-persist-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\"rpc-transit-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\"rpc-backward-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\"rpc-persist_test-key\")\n .as_deref(),\n None,\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\"rpc_transit-test-key\")\n .as_deref(),\n None,\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\"rpc-bbbbdddd-test-key\")\n .as_deref(),\n None,\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 323, + "StartOffset": 9861, + "EndOffset": 9870 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 325, + "StartOffset": 9920, + "EndOffset": 9944 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "File": "src/convert.rs", + "Line": 326, + "StartOffset": 9946, + "EndOffset": 9954 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 331, + "StartOffset": 10102, + "EndOffset": 10125 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 337, + "StartOffset": 10283, + "EndOffset": 10305 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 324, + "StartOffset": 9895, + "EndOffset": 9908 + } + ] + }, + "remove_rpc_prefix": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "File": "src/convert.rs", + "Line": 155, + "StartOffset": 4699, + "EndOffset": 5777, + "Content": "#[test]\n fn remove_rpc_prefix() {\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\"RPC_TRANSIT_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\"RPC_BACKWARD_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST-TEST_KEY\")\n .as_deref(),\n None,\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\"RPC-TRANSIT_TEST_KEY\")\n .as_deref(),\n None,\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\"RPC_BBBBDDDD_TEST_KEY\")\n .as_deref(),\n None,\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 157, + "StartOffset": 4716, + "EndOffset": 4725 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 159, + "StartOffset": 4774, + "EndOffset": 4798 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "File": "src/convert.rs", + "Line": 160, + "StartOffset": 4799, + "EndOffset": 4807 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 165, + "StartOffset": 4955, + "EndOffset": 4978 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 171, + "StartOffset": 5135, + "EndOffset": 5157 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/convert.rs", + "Line": 158, + "StartOffset": 4749, + "EndOffset": 4761 + } + ] + }, + "rpc_format_convert_test": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_format_convert_test", + "File": "src/convert.rs", + "Line": 269, + "StartOffset": 8146, + "EndOffset": 8533, + "Content": "#[test]\n fn rpc_format_convert_test() {\n fn check(http_style: \u0026str, rpc_style: \u0026str) {\n assert_eq!(HttpConverter.to_rpc_format_string(http_style), rpc_style);\n }\n check(\"rpc-persist-test-key\", \"RPC_PERSIST_TEST_KEY\");\n check(\"rpc-transit-test-key\", \"RPC_TRANSIT_TEST_KEY\");\n check(\"rpc-backward-test-key\", \"RPC_BACKWARD_TEST_KEY\");\n check(\"test-key\", \"TEST_KEY\");\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 272, + "StartOffset": 8202, + "EndOffset": 8211 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 272, + "StartOffset": 8227, + "EndOffset": 8247 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 272, + "StartOffset": 8213, + "EndOffset": 8226 + } + ] + }, + "rpc_prefix_bidirect": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "File": "src/convert.rs", + "Line": 195, + "StartOffset": 5793, + "EndOffset": 7272, + "Content": "#[test]\n fn rpc_prefix_bidirect() {\n // remove after add\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\u0026RpcConverter.add_persistent_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\u0026RpcConverter.add_transient_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\u0026RpcConverter.add_backward_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n\n // add after remove\n assert_eq!(\n RpcConverter.add_persistent_prefix(\n \u0026RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_PERSIST_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_transient_prefix(\n \u0026RpcConverter\n .remove_transient_prefix(\"RPC_TRANSIT_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_TRANSIT_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_backward_prefix(\n \u0026RpcConverter\n .remove_backward_prefix(\"RPC_BACKWARD_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_BACKWARD_TEST_KEY\",\n );\n }", + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "File": "src/convert.rs", + "Line": 198, + "StartOffset": 5841, + "EndOffset": 5850 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 200, + "StartOffset": 5898, + "EndOffset": 5922 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 200, + "StartOffset": 5937, + "EndOffset": 5958 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "File": "src/convert.rs", + "Line": 201, + "StartOffset": 5923, + "EndOffset": 5931 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 206, + "StartOffset": 6104, + "EndOffset": 6127 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 206, + "StartOffset": 6142, + "EndOffset": 6162 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 212, + "StartOffset": 6308, + "EndOffset": 6330 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 212, + "StartOffset": 6345, + "EndOffset": 6364 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/convert.rs", + "Line": 222, + "StartOffset": 6621, + "EndOffset": 6627 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/convert.rs", + "Line": 199, + "StartOffset": 5873, + "EndOffset": 5885 + } + ] + } + }, + "Types": { + "Converter": { + "Exported": true, + "TypeKind": "interface", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/convert.rs", + "Line": 8, + "StartOffset": -1, + "EndOffset": 543, + "Content": "pub trait Converter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 9, + "StartOffset": 232, + "EndOffset": 239 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 10, + "StartOffset": 253, + "EndOffset": 260 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 12, + "StartOffset": 369, + "EndOffset": 376 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 14, + "StartOffset": 455, + "EndOffset": 461 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 14, + "StartOffset": 462, + "EndOffset": 469 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 15, + "StartOffset": 455, + "EndOffset": 461 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 15, + "StartOffset": 462, + "EndOffset": 469 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 16, + "StartOffset": 524, + "EndOffset": 530 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 16, + "StartOffset": 531, + "EndOffset": 538 + } + ] + }, + "HttpConverter": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 63, + "StartOffset": -1, + "EndOffset": 1918, + "Content": "pub struct HttpConverter;", + "Methods": { + "add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix" + }, + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.add_transient_prefix" + }, + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix" + }, + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.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": 19, + "StartOffset": -1, + "EndOffset": 636, + "Content": "pub struct RpcConverter;", + "Methods": { + "add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix" + }, + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix" + }, + "add_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix" + }, + "add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix" + }, + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix" + }, + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix" + }, + "remove_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix" + }, + "remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix" + } + } + } + }, + "Vars": { + "ch": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "ch", + "File": "src/convert.rs", + "Line": 83, + "StartOffset": 2460, + "EndOffset": 2608, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format" + }, + "Content": "let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };" + }, + "key": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "key", + "File": "src/convert.rs", + "Line": 32, + "StartOffset": 935, + "EndOffset": 971, + "Type": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix" + }, + "Content": "let key = key.strip_prefix(prefix)?;" + }, + "mut buf": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut buf", + "File": "src/convert.rs", + "Line": 103, + "StartOffset": 3089, + "EndOffset": 3136, + "Type": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String" + }, + "Content": "let mut buf = String::with_capacity(key.len());" + }, + "mut res": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut res", + "File": "src/convert.rs", + "Line": 24, + "StartOffset": 681, + "EndOffset": 743, + "Type": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String" + }, + "Content": "let mut res = String::with_capacity(prefix.len() + key.len());" + } + } + }, + "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": 1984, + "EndOffset": 2038, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 2014, + "EndOffset": 2022 + } + ] + }, + "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": 1360, + "EndOffset": 1406, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 1390, + "EndOffset": 1395 + } + ] + }, + "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": 1109, + "EndOffset": 1174, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 46, + "StartOffset": 1161, + "EndOffset": 1163 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/faststr_map.rs", + "Line": 46, + "StartOffset": 1139, + "EndOffset": 1151 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 46, + "StartOffset": 1153, + "EndOffset": 1159 + } + ] + }, + "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": 1680, + "EndOffset": 1768, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, FastStr\u003e {\n self.inner.entry(TypeId::of::\u003cT\u003e())\n }\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": 1720, + "EndOffset": 1725 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1730, + "EndOffset": 1736 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1738, + "EndOffset": 1745 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 71, + "StartOffset": 1724, + "EndOffset": 1726 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/faststr_map.rs", + "Line": 71, + "StartOffset": 1710, + "EndOffset": 1715 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 71, + "StartOffset": 1716, + "EndOffset": 1722 + } + ] + }, + "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": 1439, + "EndOffset": 1505, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/faststr_map.rs", + "Line": 61, + "StartOffset": 1469, + "EndOffset": 1475 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 60, + "StartOffset": 1472, + "EndOffset": 1482 + } + ] + }, + "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": 853, + "EndOffset": 925, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.inner.get(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 887, + "EndOffset": 893 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 895, + "EndOffset": 902 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 36, + "StartOffset": 896, + "EndOffset": 898 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/faststr_map.rs", + "Line": 36, + "StartOffset": 883, + "EndOffset": 886 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 36, + "StartOffset": 888, + "EndOffset": 894 + } + ] + }, + "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": 973, + "EndOffset": 1057, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut FastStr\u003e {\n self.inner.get_mut(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1015, + "EndOffset": 1021 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1027, + "EndOffset": 1034 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 41, + "StartOffset": 1020, + "EndOffset": 1022 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/faststr_map.rs", + "Line": 41, + "StartOffset": 1003, + "EndOffset": 1010 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 41, + "StartOffset": 1012, + "EndOffset": 1018 + } + ] + }, + "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": 714, + "EndOffset": 799, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: FastStr) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), t);\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 31, + "StartOffset": 759, + "EndOffset": 761 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "src/faststr_map.rs", + "Line": 31, + "StartOffset": 744, + "EndOffset": 750 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 732, + "EndOffset": 736 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 739, + "EndOffset": 743 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 769, + "EndOffset": 776 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 31, + "StartOffset": 751, + "EndOffset": 757 + } + ] + }, + "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": 1817, + "EndOffset": 1870, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 1847, + "EndOffset": 1855 + } + ] + }, + "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": 1549, + "EndOffset": 1649, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, FastStr\u003e {\n self.inner.iter()\n }\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": 1602, + "EndOffset": 1606 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 65, + "StartOffset": 1611, + "EndOffset": 1617 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 65, + "StartOffset": 1619, + "EndOffset": 1626 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/faststr_map.rs", + "Line": 66, + "StartOffset": 1579, + "EndOffset": 1583 + } + ] + }, + "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": 1905, + "EndOffset": 1954, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 1935, + "EndOffset": 1938 + } + ] + }, + "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": 1231, + "EndOffset": 1309, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.inner.remove(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1272, + "EndOffset": 1278 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1279, + "EndOffset": 1286 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 51, + "StartOffset": 1277, + "EndOffset": 1279 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/faststr_map.rs", + "Line": 51, + "StartOffset": 1261, + "EndOffset": 1267 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 51, + "StartOffset": 1269, + "EndOffset": 1275 + } + ] + }, + "FastStrMap::new": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::new", + "File": "src/faststr_map.rs", + "Line": 15, + "StartOffset": 391, + "EndOffset": 511, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn new() -\u003e Self {\n Self {\n inner: FxHashMapRand::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": "default", + "File": "src/faststr_map.rs", + "Line": 18, + "StartOffset": 480, + "EndOffset": 487 + } + ], + "Types": [ + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 18, + "StartOffset": 465, + "EndOffset": 478 + } + ] + }, + "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": 526, + "EndOffset": 699, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 623, + "EndOffset": 647 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 667, + "EndOffset": 674 + } + ], + "Types": [ + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 608, + "EndOffset": 621 + }, + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/faststr_map.rs", + "Line": 25, + "StartOffset": 658, + "EndOffset": 665 + } + ] + } + }, + "Types": { + "FastStrMap": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 6, + "StartOffset": -1, + "EndOffset": 342, + "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\u003cFastStr\u003e and Into\u003cFastStr\u003e.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand\u003cTypeId, FastStr\u003e,\n}", + "SubStruct": [ + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 11, + "StartOffset": 328, + "EndOffset": 341 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 11, + "StartOffset": 342, + "EndOffset": 348 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 11, + "StartOffset": 350, + "EndOffset": 357 + } + ], + "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": -1, + "EndOffset": 1700, + "Content": "pub trait Forward {\n fn get_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_persistent\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_upstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 69, + "EndOffset": 74 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 99, + "EndOffset": 105 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 106, + "EndOffset": 113 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 88, + "EndOffset": 93 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 118, + "EndOffset": 124 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 125, + "EndOffset": 132 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 8, + "StartOffset": 159, + "EndOffset": 164 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 8, + "StartOffset": 189, + "EndOffset": 195 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 8, + "StartOffset": 196, + "EndOffset": 203 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 314, + "EndOffset": 320 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 322, + "EndOffset": 330 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 331, + "EndOffset": 338 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 340, + "EndOffset": 347 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 314, + "EndOffset": 320 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 322, + "EndOffset": 330 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 331, + "EndOffset": 338 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 340, + "EndOffset": 347 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 12, + "StartOffset": 387, + "EndOffset": 393 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 12, + "StartOffset": 395, + "EndOffset": 403 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 12, + "StartOffset": 404, + "EndOffset": 411 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 12, + "StartOffset": 413, + "EndOffset": 420 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 16, + "StartOffset": 566, + "EndOffset": 572 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 16, + "StartOffset": 573, + "EndOffset": 581 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 16, + "StartOffset": 582, + "EndOffset": 589 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 16, + "StartOffset": 591, + "EndOffset": 598 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 19, + "StartOffset": 686, + "EndOffset": 692 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 19, + "StartOffset": 693, + "EndOffset": 701 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 19, + "StartOffset": 702, + "EndOffset": 709 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 19, + "StartOffset": 711, + "EndOffset": 718 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 762, + "EndOffset": 766 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 767, + "EndOffset": 774 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 780, + "EndOffset": 784 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 785, + "EndOffset": 792 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 762, + "EndOffset": 766 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 767, + "EndOffset": 774 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 780, + "EndOffset": 784 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 785, + "EndOffset": 792 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 23, + "StartOffset": 849, + "EndOffset": 853 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 23, + "StartOffset": 854, + "EndOffset": 861 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 23, + "StartOffset": 867, + "EndOffset": 871 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 23, + "StartOffset": 872, + "EndOffset": 879 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 25, + "StartOffset": 1045, + "EndOffset": 1050 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 25, + "StartOffset": 1060, + "EndOffset": 1064 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 25, + "StartOffset": 1065, + "EndOffset": 1072 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 30, + "StartOffset": 1174, + "EndOffset": 1179 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 30, + "StartOffset": 1189, + "EndOffset": 1193 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 30, + "StartOffset": 1194, + "EndOffset": 1201 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 36, + "StartOffset": 1319, + "EndOffset": 1324 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 36, + "StartOffset": 1334, + "EndOffset": 1338 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 36, + "StartOffset": 1339, + "EndOffset": 1346 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 41, + "StartOffset": 1449, + "EndOffset": 1454 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 41, + "StartOffset": 1464, + "EndOffset": 1468 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 41, + "StartOffset": 1469, + "EndOffset": 1476 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1572, + "EndOffset": 1577 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1606, + "EndOffset": 1612 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1613, + "EndOffset": 1620 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1572, + "EndOffset": 1577 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1606, + "EndOffset": 1612 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1613, + "EndOffset": 1620 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 49, + "StartOffset": 1647, + "EndOffset": 1652 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 49, + "StartOffset": 1681, + "EndOffset": 1687 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 49, + "StartOffset": 1688, + "EndOffset": 1695 + } + ] + } + }, + "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": 116, + "StartOffset": 2987, + "EndOffset": 3260, + "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 pub fn clear(\u0026mut 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": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/kv.rs", + "Line": 117, + "StartOffset": 3025, + "EndOffset": 3031 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/kv.rs", + "Line": 118, + "StartOffset": 3028, + "EndOffset": 3033 + } + ] + }, + "Node.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/kv.rs", + "Line": 90, + "StartOffset": 2250, + "EndOffset": 2972, + "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 pub fn extend(\u0026mut 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": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/kv.rs", + "Line": 92, + "StartOffset": 2322, + "EndOffset": 2329 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/kv.rs", + "Line": 95, + "StartOffset": 2453, + "EndOffset": 2459 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/kv.rs", + "Line": 95, + "StartOffset": 2462, + "EndOffset": 2468 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/kv.rs", + "Line": 95, + "StartOffset": 2471, + "EndOffset": 2477 + } + ] + }, + "del_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl", + "File": "src/kv.rs", + "Line": 24, + "StartOffset": -1, + "EndOffset": 988, + "Content": "macro_rules! del_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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}" + }, + "get_all_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/kv.rs", + "Line": 55, + "StartOffset": -1, + "EndOffset": 1632, + "Content": "macro_rules! get_all_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_all_ $name s\u003e](\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.$name.as_ref()\n }\n }\n };\n}" + }, + "get_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "File": "src/kv.rs", + "Line": 39, + "StartOffset": -1, + "EndOffset": 1406, + "Content": "macro_rules! get_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) =\u003e {\n v.get(key).cloned()\n }\n None =\u003e None,\n }\n }\n }\n };\n}" + }, + "set_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "File": "src/kv.rs", + "Line": 7, + "StartOffset": -1, + "EndOffset": 604, + "Content": "macro_rules! set_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}" + }, + "test_add_stale": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "test_add_stale", + "File": "src/kv.rs", + "Line": 135, + "StartOffset": 3321, + "EndOffset": 3441, + "Content": "#[test]\n fn test_add_stale() {\n let mut node = Node::default();\n node.set_stale(\"key\", \"value\");\n println!(\"{node:?}\");\n }", + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "File": "src/kv.rs", + "Line": 138, + "StartOffset": 3369, + "EndOffset": 3378 + }, + { + "ModPath": "std", + "PkgPath": "std::macros", + "Name": "println", + "File": "src/kv.rs", + "Line": 139, + "StartOffset": 3404, + "EndOffset": 3411 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/kv.rs", + "Line": 137, + "StartOffset": 3353, + "EndOffset": 3357 + } + ] + } + }, + "Types": { + "Node": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/kv.rs", + "Line": 65, + "StartOffset": -1, + "EndOffset": 1870, + "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n transient: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n // this is called stale because upstream and downstream all use this.\n stale: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1690, + "EndOffset": 1696 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1697, + "EndOffset": 1705 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1706, + "EndOffset": 1713 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1715, + "EndOffset": 1722 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 68, + "StartOffset": 1707, + "EndOffset": 1713 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 68, + "StartOffset": 1714, + "EndOffset": 1722 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 68, + "StartOffset": 1723, + "EndOffset": 1730 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 68, + "StartOffset": 1732, + "EndOffset": 1739 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 70, + "StartOffset": 1806, + "EndOffset": 1812 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 70, + "StartOffset": 1813, + "EndOffset": 1821 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 70, + "StartOffset": 1822, + "EndOffset": 1829 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 70, + "StartOffset": 1831, + "EndOffset": 1838 + } + ], + "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": -1, + "EndOffset": 95, + "Content": "const DEFAULT_CAPACITY: usize = 10;" + }, + "mut node": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "mut node", + "File": "src/kv.rs", + "Line": 137, + "StartOffset": 3338, + "EndOffset": 3369, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node" + }, + "Content": "let mut node = Node::default();" + } + } + }, + "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": 1074, + "EndOffset": 1360, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn and_modify\u003cF: FnOnce(\u0026mut V)\u003e(self, f: F) -\u003e 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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "and_modify", + "File": "src/type_map.rs", + "Line": 45, + "StartOffset": 1082, + "EndOffset": 1092 + }, + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 45, + "StartOffset": 1096, + "EndOffset": 1102 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "File": "src/type_map.rs", + "Line": 50, + "StartOffset": 1226, + "EndOffset": 1236 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 51, + "StartOffset": 1232, + "EndOffset": 1244 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 51, + "StartOffset": 1247, + "EndOffset": 1253 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 45, + "StartOffset": 1096, + "EndOffset": 1102 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 47, + "StartOffset": 1157, + "EndOffset": 1161 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 47, + "StartOffset": 1164, + "EndOffset": 1168 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 49, + "StartOffset": 1198, + "EndOffset": 1203 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 53, + "StartOffset": 1326, + "EndOffset": 1337 + } + ] + }, + "Entry.or_default": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "File": "src/type_map.rs", + "Line": 57, + "StartOffset": 1375, + "EndOffset": 1532, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -\u003e \u0026'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", + "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": 1423, + "EndOffset": 1433 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "File": "src/type_map.rs", + "Line": 63, + "StartOffset": 1552, + "EndOffset": 1559 + } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "File": "src/type_map.rs", + "Line": 63, + "StartOffset": 1534, + "EndOffset": 1548 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/type_map.rs", + "Line": 61, + "StartOffset": 1478, + "EndOffset": 1485 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 61, + "StartOffset": 1488, + "EndOffset": 1492 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 61, + "StartOffset": 1495, + "EndOffset": 1499 + } + ] + }, + "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": 310, + "EndOffset": 525, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -\u003e \u0026'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" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 499, + "EndOffset": 502 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 476, + "EndOffset": 490 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 23, + "StartOffset": 465, + "EndOffset": 477 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 23, + "StartOffset": 480, + "EndOffset": 486 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 20, + "StartOffset": 416, + "EndOffset": 420 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 20, + "StartOffset": 423, + "EndOffset": 427 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 494, + "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": 564, + "EndOffset": 772, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with\u003cF: FnOnce() -\u003e V\u003e(self, default: F) -\u003e \u0026'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" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 31, + "StartOffset": 744, + "EndOffset": 747 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "src/type_map.rs", + "Line": 31, + "StartOffset": 721, + "EndOffset": 735 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 32, + "StartOffset": 710, + "EndOffset": 722 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 32, + "StartOffset": 725, + "EndOffset": 731 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 27, + "StartOffset": 590, + "EndOffset": 596 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 29, + "StartOffset": 661, + "EndOffset": 665 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 29, + "StartOffset": 668, + "EndOffset": 672 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 31, + "StartOffset": 739, + "EndOffset": 742 + } + ] + }, + "Entry.or_insert_with_key": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "File": "src/type_map.rs", + "Line": 35, + "StartOffset": 811, + "EndOffset": 1035, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with_key\u003cF: FnOnce(\u0026K) -\u003e V\u003e(self, default: F) -\u003e \u0026'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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 1004, + "EndOffset": 1007 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 974, + "EndOffset": 992 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 41, + "StartOffset": 963, + "EndOffset": 975 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 41, + "StartOffset": 978, + "EndOffset": 984 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 36, + "StartOffset": 841, + "EndOffset": 847 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 38, + "StartOffset": 914, + "EndOffset": 918 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 38, + "StartOffset": 921, + "EndOffset": 925 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 999, + "EndOffset": 1002 + } + ] + }, + "TypeMap.capacity": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", + "File": "src/type_map.rs", + "Line": 151, + "StartOffset": 3538, + "EndOffset": 3592, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 3568, + "EndOffset": 3576 + } + ] + }, + "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": 2849, + "EndOffset": 2895, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 2879, + "EndOffset": 2884 + } + ] + }, + "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": 2518, + "EndOffset": 2583, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 108, + "StartOffset": 2570, + "EndOffset": 2572 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/type_map.rs", + "Line": 108, + "StartOffset": 2548, + "EndOffset": 2560 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 108, + "StartOffset": 2562, + "EndOffset": 2568 + } + ] + }, + "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": 3168, + "EndOffset": 3356, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, T\u003e {\n Entry {\n inner: self.inner.entry(TypeId::of::\u003cT\u003e()),\n _marker: PhantomData,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 136, + "StartOffset": 3289, + "EndOffset": 3291 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/type_map.rs", + "Line": 136, + "StartOffset": 3275, + "EndOffset": 3280 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 134, + "StartOffset": 3208, + "EndOffset": 3213 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 134, + "StartOffset": 3218, + "EndOffset": 3224 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 137, + "StartOffset": 3282, + "EndOffset": 3293 + } + ] + }, + "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": 2928, + "EndOffset": 2991, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\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": 2961, + "EndOffset": 2968 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/type_map.rs", + "Line": 125, + "StartOffset": 2958, + "EndOffset": 2964 + } + ] + }, + "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": 2144, + "EndOffset": 2266, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\n self.inner\n .get(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2231, + "EndOffset": 2233 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2218, + "EndOffset": 2221 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 96, + "StartOffset": 2237, + "EndOffset": 2245 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "File": "src/type_map.rs", + "Line": 96, + "StartOffset": 2260, + "EndOffset": 2272 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 93, + "StartOffset": 2178, + "EndOffset": 2184 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2223, + "EndOffset": 2229 + } + ] + }, + "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": 2323, + "EndOffset": 2461, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut T\u003e {\n self.inner\n .get_mut(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2426, + "EndOffset": 2428 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2409, + "EndOffset": 2416 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 103, + "StartOffset": 2428, + "EndOffset": 2436 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 103, + "StartOffset": 2451, + "EndOffset": 2463 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 100, + "StartOffset": 2365, + "EndOffset": 2371 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2418, + "EndOffset": 2424 + } + ] + }, + "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": 2001, + "EndOffset": 2080, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: T) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), Box::new(t));\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 89, + "StartOffset": 2046, + "EndOffset": 2048 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 89, + "StartOffset": 2062, + "EndOffset": 2065 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "src/type_map.rs", + "Line": 89, + "StartOffset": 2031, + "EndOffset": 2037 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2019, + "EndOffset": 2023 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2026, + "EndOffset": 2030 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 89, + "StartOffset": 2038, + "EndOffset": 2044 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 89, + "StartOffset": 2057, + "EndOffset": 2060 + } + ] + }, + "TypeMap.is_empty": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", + "File": "src/type_map.rs", + "Line": 141, + "StartOffset": 3371, + "EndOffset": 3424, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 3401, + "EndOffset": 3409 + } + ] + }, + "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": 3035, + "EndOffset": 3137, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, AnyObject\u003e {\n self.inner.iter()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/type_map.rs", + "Line": 130, + "StartOffset": 3065, + "EndOffset": 3069 + } + ], + "Types": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3088, + "EndOffset": 3092 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3097, + "EndOffset": 3103 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3105, + "EndOffset": 3114 + } + ] + }, + "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": 3459, + "EndOffset": 3508, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 3489, + "EndOffset": 3492 + } + ] + }, + "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": 2640, + "EndOffset": 2771, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.inner\n .remove(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2736, + "EndOffset": 2738 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2720, + "EndOffset": 2726 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 115, + "StartOffset": 2739, + "EndOffset": 2747 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", + "File": "src/type_map.rs", + "Line": 115, + "StartOffset": 2762, + "EndOffset": 2770 + }, + { + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "File": "src/type_map.rs", + "Line": 115, + "StartOffset": 2773, + "EndOffset": 2775 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/type_map.rs", + "Line": 115, + "StartOffset": 2778, + "EndOffset": 2781 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 112, + "StartOffset": 2681, + "EndOffset": 2687 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2728, + "EndOffset": 2734 + } + ] + }, + "TypeMap::new": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::new", + "File": "src/type_map.rs", + "Line": 73, + "StartOffset": 1675, + "EndOffset": 1795, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn new() -\u003e Self {\n TypeMap {\n inner: FxHashMapRand::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": "default", + "File": "src/type_map.rs", + "Line": 76, + "StartOffset": 1761, + "EndOffset": 1768 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 75, + "StartOffset": 1708, + "EndOffset": 1715 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 76, + "StartOffset": 1746, + "EndOffset": 1759 + } + ] + }, + "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": 1810, + "EndOffset": 1986, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 1907, + "EndOffset": 1931 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1951, + "EndOffset": 1958 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1829, + "EndOffset": 1836 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1892, + "EndOffset": 1905 + }, + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/type_map.rs", + "Line": 83, + "StartOffset": 1942, + "EndOffset": 1949 + } + ] + } + }, + "Types": { + "AnyObject": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": -1, + "EndOffset": 195, + "Content": "pub(crate) type AnyObject = Box\u003cdyn Any + Send + Sync\u003e;", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": 168, + "EndOffset": 171 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "Any", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": 176, + "EndOffset": 179 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": 182, + "EndOffset": 186 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 9, + "StartOffset": 189, + "EndOffset": 193 + } + ] + }, + "Entry": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 11, + "StartOffset": -1, + "EndOffset": 275, + "Content": "pub struct Entry\u003c'a, K: 'a, V: 'a\u003e {\n inner: MapEntry\u003c'a, K, AnyObject\u003e,\n _marker: PhantomData\u003cV\u003e,\n}", + "SubStruct": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 12, + "StartOffset": 209, + "EndOffset": 217 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 12, + "StartOffset": 225, + "EndOffset": 234 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 13, + "StartOffset": 248, + "EndOffset": 259 + } + ], + "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": -1, + "EndOffset": 1624, + "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand\u003cTypeId, AnyObject\u003e,\n}", + "SubStruct": [ + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 69, + "StartOffset": 1613, + "EndOffset": 1626 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 69, + "StartOffset": 1627, + "EndOffset": 1633 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 69, + "StartOffset": 1635, + "EndOffset": 1644 + } + ], + "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": { + "v": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "v", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 955, + "EndOffset": 1023, + "Type": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key" + }, + "Content": "let v = self.inner.or_insert_with_key(|key| Box::new(default(key)));" + } + } + } + }, + "Dependencies": {}, + "Files": { + ".github/CODEOWNERS": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/CODEOWNERS" + }, + ".github/ISSUE_TEMPLATE/bug_report.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/bug_report.md" + }, + ".github/ISSUE_TEMPLATE/feature_request.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/feature_request.md" + }, + ".github/PULL_REQUEST_TEMPLATE.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/PULL_REQUEST_TEMPLATE.md" + }, + ".github/assets/volo-feishu-dev-group.png": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-dev-group.png" + }, + ".github/assets/volo-feishu-user-group.png": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-user-group.png" + }, + ".github/workflows/ci.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/ci.yaml" + }, + ".github/workflows/dependency-review.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/dependency-review.yaml" + }, + ".github/workflows/security.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/security.yaml" + }, + ".gitignore": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.gitignore" + }, + "CHANGELOG.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CHANGELOG.md" + }, + "CODE_OF_CONDUCT.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CODE_OF_CONDUCT.md" + }, + "CONTRIBUTING.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CONTRIBUTING.md" + }, + "CREDITS.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CREDITS.md" + }, + "Cargo.lock": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.lock" + }, + "Cargo.toml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.toml" + }, + "LICENSE-APACHE": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-APACHE" + }, + "LICENSE-MIT": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-MIT" + }, + "README.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/README.md" + }, + "ROADMAP.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/ROADMAP.md" + }, + "SECURITY.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SECURITY.md" + }, + "SUPPORT.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SUPPORT.md" + }, + "rustfmt.toml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/rustfmt.toml" + }, + "src/backward.rs": { + "Path": "src/backward.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + } + ] + }, + "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};" + } + ] + }, + "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;" + } + ] + }, + "src/forward.rs": { + "Path": "src/forward.rs", + "Imports": [ + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use crate::AHashMap;" + } + ] + }, + "src/kv.rs": { + "Path": "src/kv.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use paste::paste;" + }, + { + "Path": "use super::*;" + } + ] + }, + "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::*;" + } + ] + }, + "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;" + } + ] + } + } + }, + "rustc-hash@2.0.0": { + "Language": "rust", + "Version": "2.0.0", + "Name": "rustc-hash", + "Dir": "", + "Packages": { + "rustc-hash::random_state": { + "IsMain": false, + "IsTest": false, + "PkgPath": "rustc-hash::random_state", + "Functions": { + "BuildHasher\u003cFxRandomState\u003e.build_hasher": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher", + "File": "random_state.rs", + "Line": 48, + "StartOffset": 1624, + "EndOffset": 1671, + "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(\u0026self) -\u003e Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" + } + } + }, + "Default\u003cFxRandomState\u003e::default": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "random_state.rs", + "Line": 54, + "StartOffset": 1718, + "EndOffset": 1779, + "Content": "impl Default for FxRandomState {\n fn default() -\u003e Self {\n Self::new()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" + } + } + }, + "FxRandomState::new": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState::new", + "File": "random_state.rs", + "Line": 21, + "StartOffset": 692, + "EndOffset": 1528, + "Content": "impl FxRandomState {\n /// Constructs a new `FxRandomState` that is initialized with random seed.\n /// Constructs a new `FxRandomState` that is initialized with random seed.\n pub fn new() -\u003e FxRandomState {\n use rand::Rng;\n use std::{cell::Cell, thread_local};\n\n // This mirrors what `std::collections::hash_map::RandomState` does, as of 2024-01-14.\n //\n // Basically\n // 1. Cache result of the rng in a thread local, so repeatedly\n // creating maps is cheaper\n // 2. Change the cached result on every creation, so maps created\n // on the same thread don't have the same iteration order\n thread_local!(static SEED: Cell\u003cusize\u003e = {\n Cell::new(rand::thread_rng().gen())\n });\n\n SEED.with(|seed| {\n let s = seed.get();\n seed.set(s.wrapping_add(1));\n FxRandomState { seed: s }\n })\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" + } + } + }, + "random_states_are_different": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "random_states_are_different", + "File": "random_state.rs", + "Line": 65, + "StartOffset": 1884, + "EndOffset": 2278, + "Content": "#[test]\n fn random_states_are_different() {\n let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n let b = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n\n // That's the whole point of them being random!\n //\n // N.B.: `FxRandomState` uses a thread-local set to a random value and then incremented,\n // which means that this is *guaranteed* to pass :\u003e\n assert_ne!(a.hasher().seed, b.hasher().seed);\n }" + }, + "random_states_are_different_cross_thread": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "random_states_are_different_cross_thread", + "File": "random_state.rs", + "Line": 77, + "StartOffset": 2337, + "EndOffset": 2984, + "Content": "#[test]\n fn random_states_are_different_cross_thread() {\n // This is similar to the test above, but uses two different threads, so they both get\n // completely random, unrelated values.\n //\n // This means that this test is technically flaky, but the probability of it failing is\n // `1 / 2.pow(bit_size_of::\u003cusize\u003e())`. Or 1/1.7e19 for 64 bit platforms or 1/4294967295\n // for 32 bit platforms. I suppose this is acceptable.\n let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n let b = thread::spawn(|| FxHashMapRand::\u003c\u0026str, u32\u003e::default())\n .join()\n .unwrap();\n\n assert_ne!(a.hasher().seed, b.hasher().seed);\n }" + } + }, + "Types": { + "FxHashMapRand": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "random_state.rs", + "Line": 5, + "StartOffset": -1, + "EndOffset": 124, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand\u003cK, V\u003e = HashMap\u003cK, V, FxRandomState\u003e;" + }, + "FxHashSetRand": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashSetRand", + "File": "random_state.rs", + "Line": 8, + "StartOffset": -1, + "EndOffset": 263, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand\u003cV\u003e = HashSet\u003cV, FxRandomState\u003e;" + }, + "FxRandomState": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState", + "File": "random_state.rs", + "Line": 11, + "StartOffset": -1, + "EndOffset": 669, + "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.\npub struct FxRandomState {\n seed: usize,\n}", + "Methods": { + "build_hasher": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher" + } + } + }, + "Hasher": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Hasher", + "File": "random_state.rs", + "Line": 46, + "StartOffset": 1547, + "EndOffset": 1570, + "Content": "type Hasher = FxHasher;" + } + }, + "Vars": { + "a": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "a", + "File": "random_state.rs", + "Line": 85, + "StartOffset": 2753, + "EndOffset": 2799, + "Content": "let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();" + }, + "b": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "b", + "File": "random_state.rs", + "Line": 86, + "StartOffset": 2816, + "EndOffset": 2957, + "Content": "let b = thread::spawn(|| FxHashMapRand::\u003c\u0026str, u32\u003e::default())\n .join()\n .unwrap();" + }, + "s": { + "IsExported": false, + "IsConst": false, + "IsPointer": false, + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "s", + "File": "random_state.rs", + "Line": 38, + "StartOffset": 1397, + "EndOffset": 1416, + "Content": "let s = seed.get();" + } + } + } + }, + "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": 89035, + "EndOffset": 89045, + "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": 13061, + "EndOffset": 13069, + "Content": "capacity" + }, + "clear": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "map.rs", + "Line": 727, + "StartOffset": 24375, + "EndOffset": 24380, + "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": 37028, + "EndOffset": 37040, + "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": 46179, + "EndOffset": 46186, + "Content": "default" + }, + "entry": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "map.rs", + "Line": 872, + "StartOffset": 29067, + "EndOffset": 29072, + "Content": "entry" + }, + "extend": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "map.rs", + "Line": 3246, + "StartOffset": 98942, + "EndOffset": 98948, + "Content": "extend" + }, + "get": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "map.rs", + "Line": 894, + "StartOffset": 29770, + "EndOffset": 29773, + "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": 37801, + "EndOffset": 37808, + "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": 38976, + "EndOffset": 38982, + "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": 20327, + "EndOffset": 20335, + "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": 18496, + "EndOffset": 18500, + "Content": "iter" + }, + "len": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "map.rs", + "Line": 587, + "StartOffset": 19912, + "EndOffset": 19915, + "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": 86535, + "EndOffset": 86549, + "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": 87569, + "EndOffset": 87587, + "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": 40814, + "EndOffset": 40820, + "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": 12364, + "EndOffset": 12388, + "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": 70485, + "EndOffset": 70490, + "Content": "Entry" + }, + "Iter": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "map.rs", + "Line": 1486, + "StartOffset": 48579, + "EndOffset": 48583, + "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": 4259, + "EndOffset": 4266, + "Content": "println" + } + }, + "Types": {}, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + ".github/CODEOWNERS": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/CODEOWNERS" + }, + ".github/ISSUE_TEMPLATE/bug_report.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/bug_report.md" + }, + ".github/ISSUE_TEMPLATE/feature_request.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/feature_request.md" + }, + ".github/PULL_REQUEST_TEMPLATE.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/PULL_REQUEST_TEMPLATE.md" + }, + ".github/assets/volo-feishu-dev-group.png": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-dev-group.png" + }, + ".github/assets/volo-feishu-user-group.png": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-user-group.png" + }, + ".github/workflows/ci.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/ci.yaml" + }, + ".github/workflows/dependency-review.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/dependency-review.yaml" + }, + ".github/workflows/security.yaml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/security.yaml" + }, + ".gitignore": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.gitignore" + }, + "CHANGELOG.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CHANGELOG.md" + }, + "CODE_OF_CONDUCT.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CODE_OF_CONDUCT.md" + }, + "CONTRIBUTING.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CONTRIBUTING.md" + }, + "CREDITS.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CREDITS.md" + }, + "Cargo.lock": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.lock" + }, + "Cargo.toml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.toml" + }, + "LICENSE-APACHE": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-APACHE" + }, + "LICENSE-MIT": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-MIT" + }, + "README.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/README.md" + }, + "ROADMAP.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/ROADMAP.md" + }, + "SECURITY.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SECURITY.md" + }, + "SUPPORT.md": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SUPPORT.md" + }, + "macros.rs": { + "Path": "macros.rs" + }, + "map.rs": { + "Path": "map.rs" + }, + "rustfmt.toml": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/rustfmt.toml" + }, + "src/backward.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/backward.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + } + ] + }, + "src/convert.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/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};" + } + ] + }, + "src/faststr_map.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/faststr_map.rs", + "Imports": [ + { + "Path": "use std::{any::TypeId, collections::hash_map::Entry};" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use rustc_hash::FxHashMapRand;" + } + ] + }, + "src/forward.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/forward.rs", + "Imports": [ + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use crate::AHashMap;" + } + ] + }, + "src/kv.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/kv.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use paste::paste;" + }, + { + "Path": "use super::*;" + } + ] + }, + "src/lib.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/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::*;" + } + ] + }, + "src/type_map.rs": { + "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/type_map.rs", + "Imports": [ + { + "Path": "use std::{any::{Any, TypeId},collections::hash_map::Entry as MapEntry,marker::PhantomData,};" + }, + { + "Path": "use rustc_hash::FxHashMapRand;" + } + ] + } + } + } + }, + "Graph": { + "?alloc::boxed#Box": { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 + } + ] + }, + "?alloc::boxed#new": { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + } + ] + }, + "?alloc::boxed::convert#downcast": { + "ModPath": "", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + } + ] + }, + "?alloc::str#to_owned": { + "ModPath": "", + "PkgPath": "alloc::str", + "Name": "to_owned", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 3 + } + ] + }, + "?alloc::string#String": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut buf", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut res", + "Line": 0 + } + ] + }, + "?alloc::string#push": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 9 + } + ] + }, + "?alloc::string#push_str": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 3 + } + ] + }, + "?alloc::string#with_capacity": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + } + ] + }, + "?alloc::sync#Arc": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 25 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 21 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 31 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mi", + "Line": 0 + } + ] + }, + "?alloc::sync#as_ref": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 6 + } + ] + }, + "?alloc::sync#clone": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 23 + } + ] + }, + "?alloc::sync#new": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 25 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 21 + } + ] + }, + "?core::any#Any": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "Any", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 + } + ] + }, + "?core::any#TypeId": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + } + ] + }, + "?core::any#downcast_mut": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 4 + } + ] + }, + "?core::any#downcast_ref": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 4 + } + ] + }, + "?core::any#of": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 + } + ] + }, + "?core::char::methods#to_ascii_lowercase": { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 5 + } + ] + }, + "?core::char::methods#to_ascii_uppercase": { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 5 + } + ] + }, + "?core::convert#AsRef": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 25 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 31 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 36 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 42 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 43 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 44 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 0 + } + ] + }, + "?core::convert#Into": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 25 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 31 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 36 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 0 + } + ] + }, + "?core::convert#as_ref": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "key", + "Line": 0 + } + ] + }, + "?core::default#Default": { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + } + ] + }, + "?core::default#default": { + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 6 + } + ] + }, + "?core::fmt#Formatter": { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Formatter", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Line": 0 + } + ] + }, + "?core::fmt#Result": { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Result", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Line": 0 + } + ] + }, + "?core::fmt#debug_struct": { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Line": 1 + } + ] + }, + "?core::fmt::builders#finish": { + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Line": 1 + } + ] + }, + "?core::iter::traits::iterator#map": { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 22 + } + ] + }, + "?core::macros#assert": { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 22 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 20 + } + ] + }, + "?core::macros#assert_eq": { + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_format_convert_test", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 19 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 23 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 17 + } + ] + }, + "?core::marker#PhantomData": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 2 + } + ] + }, + "?core::marker#Send": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 + } + ] + }, + "?core::marker#Sync": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 + } + ] + }, + "?core::ops::function#FnOnce": { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 1 + } + ] + }, + "?core::option#Option": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 42 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 43 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 44 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 31 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 32 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 34 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 38 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 39 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 1 + } + ] + }, + "?core::option#and_then": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 4 + } + ] + }, + "?core::option#as_deref": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 5 + } + ] + }, + "?core::option#as_mut": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 26 + } + ] + }, + "?core::option#as_ref": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 1 + } + ] + }, + "?core::option#clone": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "forward_node", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "backward_node", + "Line": 0 + } + ] + }, + "?core::option#get_or_insert_with": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + } + ] + }, + "?core::option#is_none": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 23 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 20 + } + ] + }, + "?core::option#is_some": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 14 + } + ] + }, + "?core::option#map": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + } + ] + }, + "?core::option#or_else": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 + } + ] + }, + "?core::option#take": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 19 + } + ] + }, + "?core::option#unwrap": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 27 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 27 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 26 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 19 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 22 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 7 + } + ] + }, + "?core::option#unwrap_or": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 12 + } + ] + }, + "?core::result#ok": { + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + } + ] + }, + "?core::str#chars": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 3 + } + ] + }, + "?core::str#len": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 + } + ] + }, + "?core::str#strip_prefix": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "key", + "Line": 0 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut map", + "Line": 0 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.get": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 10 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.insert": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 5 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 15 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 17 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#Extend\u003cAHashMap\u003e.extend": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 13 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 19 + } + ] + }, + "faststr@0.2.19?faststr#FastStr": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 20 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 25 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 31 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 36 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 42 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 43 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 44 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 8 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 22 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + } + ] + }, + "faststr@0.2.19?faststr#FastStr::from_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 5 + } + ] + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "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 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "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 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 + } + ], + "References": null + }, + "metainfo?metainfo#DEFAULT_MAP_SIZE": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + } + ] + }, + "metainfo?metainfo#Debug\u003cMetaInfo\u003e.fmt": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Formatter", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Result", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 8 + } + ] + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 8 + } + ] + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_upstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 3 + } + ] + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 4 + } + ] + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 3 + } + ] + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 4 + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#Homura": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Homura", + "Type": "TYPE", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#Madoka": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Madoka", + "Type": "TYPE", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#Magi": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Magi", + "Type": "TYPE", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#Mami": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Mami", + "Type": "TYPE", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#MetaInfo": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 31 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 31 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 32 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 32 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 34 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 34 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 38 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 38 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 39 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 39 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut other", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut m2", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "m2", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut metainfo", + "Line": 0 + } + ] + }, + "metainfo?metainfo#MetaInfo.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 + }, + { + "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 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 12 + } + ] + }, + "metainfo?metainfo#MetaInfo.contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 8 + } + ] + }, + "metainfo?metainfo#MetaInfo.contains_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.contains_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.derive": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "Line": 21 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 23 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "Line": 23 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 21 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.ensure_backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.ensure_forward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + } + ], + "References": null + }, + "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": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 6 + }, + { + "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": "Extend\u003cAHashMap\u003e.extend", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 23 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 26 + }, + { + "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 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 15 + } + ] + }, + "metainfo?metainfo#MetaInfo.get": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 19 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 22 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 14 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 17 + } + ] + }, + "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::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": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 8 + }, + { + "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": "Extend\u003cAHashMap\u003e.extend", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new_cap", + "Line": 0 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Type": "FUNC", + "Dependencies": [ + { + "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": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 21 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "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": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 22 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "transients", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "persistents", + "Line": 0 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.get_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + } + ], + "References": null + }, + "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": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 7 + } + ] + }, + "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": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "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": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ], + "References": null + }, + "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": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "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": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 19 + } + ] + }, + "metainfo?metainfo#MetaInfo.remove_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.remove_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo::from": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 25 + } + ] + }, + "metainfo?metainfo#MetaInfo::from_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "Line": 23 + } + ] + }, + "metainfo?metainfo#MetaInfo::new": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Line": 5 + } + ] + }, + "metainfo?metainfo#MyType": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MyType", + "Type": "TYPE", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#RPC_PREFIX_BACKWARD": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Type": "VAR", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "backward_node", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#del_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "Type": "FUNC", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#forward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "forward_node", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#get_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 5 + } + ] + }, + "metainfo?metainfo#http_forward_test": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "map", + "Line": 0 + } + ] + }, + "metainfo?metainfo#key": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "key", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#m2": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "m2", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#map": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "map", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "http_forward_test", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#mi": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mi", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#mut m2": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut m2", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#mut map": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut map", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#mut metainfo": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut metainfo", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#mut other": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "mut other", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#new": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#new_cap": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "new_cap", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#persistents": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "persistents", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo#rpc_forward_test": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "rpc_forward_test", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo#set_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 7 + } + ] + }, + "metainfo?metainfo#test_clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo#test_composition": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_composition", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 22 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 23 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 22 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 22 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 16 + } + ], + "References": null + }, + "metainfo?metainfo#test_extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 15 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 19 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 5 + } + ], + "References": null + }, + "metainfo?metainfo#test_integers": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_integers", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Line": 25 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "Line": 25 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 25 + } + ], + "References": null + }, + "metainfo?metainfo#test_metainfo": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_metainfo", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 13 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 5 + } + ], + "References": null + }, + "metainfo?metainfo#test_remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "test_remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_some", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 12 + } + ], + "References": null + }, + "metainfo?metainfo#transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "transients", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::backward#Backward": { + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 27 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 27 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 27 + } + ], + "References": null + }, + "metainfo?metainfo::convert#Converter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 8 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 17 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 5 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 11 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 17 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 5 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 11 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 16 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_format_convert_test", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 6 + } + ] + }, + "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": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 1 + } + ] + }, + "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": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 4 + } + ] + }, + "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": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 0 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "Line": 3 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "Line": 9 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "ch", + "Line": 0 + } + ] + }, + "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": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 0 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_format_convert_test", + "Line": 3 + } + ] + }, + "metainfo?metainfo::convert#RpcConverter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 6 + } + ] + }, + "metainfo?metainfo::convert#RpcConverter.add_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo::convert#RpcConverter.remove_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::str", + "Name": "to_owned", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo::convert#add_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::convert#add_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::convert#add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 29 + } + ] + }, + "metainfo?metainfo::convert#ch": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "ch", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::convert#check": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo::convert#check_http": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo::convert#check_rpc": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo::convert#format_bidirect_convert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "format_bidirect_convert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 4 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_rpc", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check_http", + "Line": 0 + } + ] + }, + "metainfo?metainfo::convert#http_format_convert_test": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_format_convert_test", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "check", + "Line": 0 + } + ] + }, + "metainfo?metainfo::convert#http_prefix_bidirect": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "http_prefix_bidirect", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 27 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 4 + } + ], + "References": null + }, + "metainfo?metainfo::convert#key": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "key", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::convert#mut buf": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut buf", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::convert#mut res": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "mut res", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::convert#remove_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_http_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::convert#remove_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "remove_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 10 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::convert#rpc_format_convert_test": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_format_convert_test", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::convert#rpc_prefix_bidirect": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "rpc_prefix_bidirect", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::macros", + "Name": "assert_eq", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_deref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 27 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 4 + } + ], + "References": null + }, + "metainfo?metainfo::faststr_map#FastStrMap": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 18 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 34 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 1 + } + ] + }, + "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 + } + ], + "References": null + }, + "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 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo::faststr_map#FastStrMap.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo::faststr_map#FastStrMap.insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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 + } + ], + "References": null + }, + "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": 2 + } + ], + "References": null + }, + "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 + } + ], + "References": null + }, + "metainfo?metainfo::faststr_map#FastStrMap.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 6 + } + ] + }, + "metainfo?metainfo::faststr_map#FastStrMap::new": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::new", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + } + ], + "References": null + }, + "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.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 18 + }, + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 11 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 14 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 17 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 18 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 25 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 25 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 25 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 31 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 31 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 31 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 36 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 36 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 36 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 42 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 42 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 42 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 43 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 43 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 43 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 44 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 44 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 44 + } + ], + "References": null + }, + "metainfo?metainfo::kv#DEFAULT_CAPACITY": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "DEFAULT_CAPACITY", + "Type": "VAR", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo::kv#Node": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "test_add_stale", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "mut node", + "Line": 0 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 38 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 39 + } + ] + }, + "metainfo?metainfo::kv#Node.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::option", + "Name": "is_none", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "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": null, + "References": null + }, + "metainfo?metainfo::kv#get_all_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 10 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 2 + } + ] + }, + "metainfo?metainfo::kv#get_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "Type": "FUNC", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo::kv#mut node": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "mut node", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::kv#set_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "test_add_stale", + "Line": 3 + } + ] + }, + "metainfo?metainfo::kv#test_add_stale": { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "test_add_stale", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::macros", + "Name": "println", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#AnyObject": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "Any", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 0 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Reference", + "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 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 5 + } + ] + }, + "metainfo?metainfo::type_map#Entry.and_modify": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "Line": 9 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#Entry.or_default": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 4 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#Entry.or_insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Line": 5 + } + ], + "References": null + }, + "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": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Line": 5 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#TypeMap": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Type": "TYPE", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 32 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::new", + "Line": 2 + } + ] + }, + "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 + } + ], + "References": null + }, + "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 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "Line": 4 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#TypeMap.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "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": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 3 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#TypeMap.insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", + "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 + } + ], + "References": null + }, + "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": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 1 + } + ], + "References": null + }, + "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 + } + ], + "References": null + }, + "metainfo?metainfo::type_map#TypeMap.remove": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 + } + ] + }, + "metainfo?metainfo::type_map#TypeMap::new": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::new", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + } + ], + "References": null + }, + "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.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 6 + } + ] + }, + "metainfo?metainfo::type_map#v": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "v", + "Type": "VAR", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "Line": 0 + } + ], + "References": null + }, + "rustc-hash@2.0.0?rustc-hash::random_state#Default\u003cFxRandomState\u003e::default": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + } + ] + }, + "rustc-hash@2.0.0?rustc-hash::random_state#FxHashMapRand": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::new", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::new", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + } + ] + }, + "std?std::collections::hash::map#Entry": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#clear": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 9 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#contains_key": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 6 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#default": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "default", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::new", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::new", + "Line": 3 + } + ] + }, + "std?std::collections::hash::map#entry": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#extend": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#get": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#get_mut": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#insert": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#is_empty": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#iter": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 17 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 21 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#len": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 11 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 12 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", + "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#or_insert_with": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "v", + "Line": 0 + } + ] + }, + "std?std::collections::hash::map#remove": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 + } + ] + }, + "std?std::collections::hash::map#with_capacity_and_hasher": { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 3 + } + ] + }, + "std?std::macros#println": { + "ModPath": "std", + "PkgPath": "std::macros", + "Name": "println", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "test_add_stale", + "Line": 4 + } + ] + } + } +} \ No newline at end of file diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index 39ae6394..148f062c 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -1442,7 +1442,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json { - "Name": "github.com/cloudwego/localsession" + "Name": "github.com/cloudwego/localsession", "Language": "go", "Version": "", "Name": "github.com/cloudwego/localsession", @@ -1450,7 +1450,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "Packages": { "github.com/cloudwego/localsession": {}, "github.com/cloudwego/localsession/backup": {} - } + }, "Dependencies": { "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" }, @@ -1991,16 +1991,16 @@ const ( - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` - - 输出 + - 输出 [localsession.json](localsession.json) - https://github.com/cloudwego/metainfo - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` - - 输出 + - 输出 [metainfo.json](metainfo.json) ## 扩展其它语言 Parser -当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](parser_extension-zh.md) +当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](parser-zh.md) diff --git a/out/localsession/backup/metainfo.go b/out/localsession/backup/metainfo.go deleted file mode 100644 index 7beb9e69..00000000 --- a/out/localsession/backup/metainfo.go +++ /dev/null @@ -1,97 +0,0 @@ -package backup - -import ( - "context" - "github.com/bytedance/gopkg/cloud/metainfo" - "github.com/cloudwego/localsession" -) -// BackupHandler is used to decide and recover prev context to cur context -type BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool) - -// Options -type Options struct { - Enable bool - localsession.ManagerOptions -} - -// Default Options -func DefaultOptions() Options { - return Options{ - Enable: false, - ManagerOptions: localsession.DefaultManagerOptions(), - } -} - -// Init gloabal session manager -// It uses env config first, the key is localsession.SESSION_CONFIG_KEY -func Init(opts Options) { - if opts.Enable { - localsession.InitDefaultManager(opts.ManagerOptions) - } -} - -// If handler != nil, this func will try to merge metainfo -// and pre-defined key-values (through Options.BackupHanlder) -// from backup context into given context -func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context { - if handler == nil { - return ctx - } - s, ok := localsession.CurSession() - if !ok { - return ctx - } - c, ok := s.(localsession.SessionCtx) - if !ok { - return ctx - } - pre := c.Export() - - // trigger user-defined handler if any - nctx, backup := handler(pre, ctx) - if !backup { - return ctx - } - ctx = nctx - - // two-way merge all persistent metainfo if pre context has - if n := metainfo.CountPersistentValues(pre); n > 0 { - // persistent kvs - kvs := make([]string, 0, n*2) - mkvs := metainfo.GetAllPersistentValues(ctx) - - // incoming ctx is prior to session - if len(mkvs) == 0 { - // merge all kvs from pre - metainfo.RangePersistentValues(pre, func(k, v string) bool { - kvs = append(kvs, k, v) - return true - }) - } else { - metainfo.RangePersistentValues(pre, func(k, v string) bool { - // filter kvs which exists in cur - if _, ok := mkvs[k]; !ok { - kvs = append(kvs, k, v) - } - return true - }) - } - ctx = metainfo.WithPersistentValues(ctx, kvs...) - } - - return ctx -} - -// Set current Sessioin -func BackupCtx(ctx context.Context) { - if localsession.GetDefaultManager() == nil { - return - } - localsession.BindSession(localsession.NewSessionCtx(ctx)) -} - -// Unset current Session -func ClearCtx() { - localsession.UnbindSession() -} - diff --git a/out/localsession/gls.go b/out/localsession/gls.go deleted file mode 100644 index d167a1c3..00000000 --- a/out/localsession/gls.go +++ /dev/null @@ -1,145 +0,0 @@ -package localsession - -import ( - "fmt" - "os" - "strconv" - "strings" - "sync" - "time" -) -// SESSION_CONFIG_KEY is the env key for configuring default session manager. -// -// Value format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval] -// - EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled -// - ShardNumber: integer > 0 -// - GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC -// -// Once the key is set, default option values will be set if the option value doesn't exist. -const SESSION_CONFIG_KEY = "CLOUDWEGO_SESSION_CONFIG_KEY" - -var defaultManagerObj *SessionManager - -var defaultManagerOnce sync.Once - -// DefaultManagerOptions returns default options for the default manager -func DefaultManagerOptions() ManagerOptions { - return ManagerOptions{ - ShardNumber: 100, - GCInterval: time.Minute * 10, - EnableImplicitlyTransmitAsync: false, - } -} - -// GetDefaultManager returns the default manager -func GetDefaultManager() *SessionManager { - return defaultManagerObj -} - -// InitDefaultManager update and restart default manager. -// It accept argument opts and env config both. -// -// NOTICE: -// - It use env SESSION_CONFIG_KEY prior to argument opts; -// - If both env and opts are empty, it won't reset manager; -// - For concurrent safety, you can only successfully reset manager ONCE. -// -//go:nocheckptr -func InitDefaultManager(opts ManagerOptions) { - defaultManagerOnce.Do(func() { - // env config has high priority - checkEnvOptions(&opts) - - if defaultManagerObj != nil { - defaultManagerObj.Close() - } - obj := NewSessionManager(opts) - defaultManagerObj = &obj - }) -} - -func checkEnvOptions(opts *ManagerOptions) { - if env := os.Getenv(SESSION_CONFIG_KEY); env != "" { - envs := strings.Split(env, ",") - // parse first option as EnableTransparentTransmitAsync - if strings.ToLower(envs[0]) == "true" { - opts.EnableImplicitlyTransmitAsync = true - } - - // parse first option as ShardNumber - if len(envs) > 1 { - if opt, err := strconv.Atoi(envs[1]); err == nil { - opts.ShardNumber = opt - } - } - - // parse third option as EnableTransparentTransmitAsync - if len(envs) > 2 { - if d, err := time.ParseDuration(envs[2]); err == nil && d > time.Second { - opts.GCInterval = d - } - } - } -} - -// CurSession gets the session for current goroutine -// -// NOTICE: MUST call `InitDefaultManager()` once before using this API -func CurSession() (Session, bool) { - if defaultManagerObj == nil { - return nil, false - } - s, ok := defaultManagerObj.GetSession(SessionID(goID())) - return s, ok -} - -// BindSession binds the session with current goroutine -// -// NOTICE: MUST call `InitDefaultManager()` once before using this API -func BindSession(s Session) { - if defaultManagerObj == nil { - return - } - defaultManagerObj.BindSession(SessionID(goID()), s) -} - -// UnbindSession unbind a session (if any) with current goroutine -// -// NOTICE: If you want to end the session, -// please call `Disable()` (or whatever make the session invalid) -// on your session's implementation -// -// NOTICE: MUST call `InitDefaultManager()` once before using this API -func UnbindSession() { - if defaultManagerObj == nil { - return - } - defaultManagerObj.UnbindSession(SessionID(goID())) -} - -// Go calls f asynchronously and pass caller's session to the new goroutine -func Go(f func()) { - s, ok := CurSession() - if !ok { - GoSession(nil, f) - } else { - GoSession(s, f) - } -} - -// SessionGo calls f asynchronously and pass s session to the new goroutine -func GoSession(s Session, f func()) { - go func() { - defer func() { - if v := recover(); v != nil { - println(fmt.Sprintf("GoSession recover: %v", v)) - } - UnbindSession() - }() - if s != nil { - BindSession(s) - } - f() - }() -} - diff --git a/out/localsession/go.mod b/out/localsession/go.mod deleted file mode 100644 index 0e8e5d5d..00000000 --- a/out/localsession/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module github.com/cloudwego/localsession - -go 1.24.1 - -require ( - github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b - github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5 -) - -require ( - github.com/modern-go/reflect2 v1.0.2 // indirect - golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect - golang.org/x/text v0.3.7 // indirect -) diff --git a/out/localsession/go.sum b/out/localsession/go.sum deleted file mode 100644 index 76f8e2ad..00000000 --- a/out/localsession/go.sum +++ /dev/null @@ -1,21 +0,0 @@ -github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b h1:R6PWoQtxEMpWJPHnpci+9LgFxCS7iJCfOGBvCgZeTKI= -github.com/bytedance/gopkg v0.0.0-20230728082804-614d0af6619b/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5 h1:uiS4zKYKJVj5F3ID+5iylfKPsEQmBEOucSD9Vgmn0i0= -github.com/modern-go/gls v0.0.0-20220109145502-612d0167dce5/go.mod h1:I8AX+yW//L8Hshx6+a1m3bYkwXkpsVjA2795vP4f4oQ= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b h1:tvrvnPFcdzp294diPnrdZZZ8XUt2Tyj7svb7X52iDuU= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/out/localsession/manager.go b/out/localsession/manager.go deleted file mode 100644 index ab23f5ba..00000000 --- a/out/localsession/manager.go +++ /dev/null @@ -1,190 +0,0 @@ -package localsession - -import ( - "sync" - "sync/atomic" - "time" -) -// ManagerOptions for SessionManager -type ManagerOptions struct { - // EnableImplicitlyTransmitAsync enables transparently transmit - // current session to children goroutines - // - // WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`, - // otherwise transmitting will be disfunctional - EnableImplicitlyTransmitAsync bool - - // ShardNumber is used to shard session id, it must be larger than zero - ShardNumber int - - // GCInterval decides the GC interval for SessionManager, - // it must be larger than 1s or zero means disable GC - GCInterval time.Duration -} - -type shard struct { - lock sync.RWMutex - m map[SessionID]Session -} - -// SessionManager maintain and manage sessions -type SessionManager struct { - shards []*shard - inGC uint32 - tik *time.Ticker - opts ManagerOptions -} - -var defaultShardCap int = 10 - -func newShard() *shard { - ret := new(shard) - ret.m = make(map[SessionID]Session, defaultShardCap) - return ret -} - -// NewSessionManager creates a SessionManager with default containers -// If opts.GCInterval > 0, it will start scheduled GC() loop automatically -func NewSessionManager(opts ManagerOptions) SessionManager { - if opts.ShardNumber <= 0 { - panic("ShardNumber must be larger than zero") - } - shards := make([]*shard, opts.ShardNumber) - for i := range shards { - shards[i] = newShard() - } - ret := SessionManager{ - shards: shards, - opts: opts, - } - - if opts.GCInterval > 0 { - ret.startGC() - } - return ret -} - -// Options shows the manager's Options -func (self SessionManager) Options() ManagerOptions { - return self.opts -} - -// SessionID is the identity of a session -type SessionID uint64 - -func (s *shard) Load(id SessionID) (Session, bool) { - s.lock.RLock() - - // p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&s.m))) - // m := *(*map[SessionID]Session)(unsafe.Pointer(p)) - - session, ok := s.m[id] - s.lock.RUnlock() - return session, ok -} - -func (s *shard) Store(id SessionID, se Session) { - s.lock.Lock() - s.m[id] = se - s.lock.Unlock() -} - -func (s *shard) Delete(id SessionID) { - s.lock.Lock() - delete(s.m, id) - s.lock.Unlock() -} - -// Get gets specific session -// or get inherited session if option EnableImplicitlyTransmitAsync is true -func (self *SessionManager) GetSession(id SessionID) (Session, bool) { - shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] - session, ok := shard.Load(id) - if ok { - return session, ok - } - if !self.opts.EnableImplicitlyTransmitAsync { - return nil, false - } - - id, ok = getSessionID() - if !ok { - return nil, false - } - shard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)] - return shard.Load(id) -} - -// BindSession binds the session with current goroutine -func (self *SessionManager) BindSession(id SessionID, s Session) { - shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] - - shard.Store(id, s) - - if self.opts.EnableImplicitlyTransmitAsync { - transmitSessionID(id) - } -} - -// UnbindSession clears current session -// -// Notice: If you want to end the session, -// please call `Disable()` (or whatever make the session invalid) -// on your session's implementation -func (self *SessionManager) UnbindSession(id SessionID) { - shard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)] - - _, ok := shard.Load(id) - if ok { - shard.Delete(id) - } - - if self.opts.EnableImplicitlyTransmitAsync { - clearSessionID() - } -} - -// GC sweep invalid sessions and release unused memory -func (self SessionManager) GC() { - if !atomic.CompareAndSwapUint32(&self.inGC, 0, 1) { - return - } - - for _, shard := range self.shards { - shard.lock.Lock() - n := shard.m - m := make(map[SessionID]Session, len(n)) - for id, s := range n { - // Warning: may panic here? - if s.IsValid() { - m[id] = s - } - } - // atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&shard.m)), unsafe.Pointer(&m)) - shard.m = m - shard.lock.Unlock() - } - - atomic.StoreUint32(&self.inGC, 0) -} - -// startGC start a scheduled goroutine to call GC() according to GCInterval -func (self *SessionManager) startGC() { - if self.opts.GCInterval < time.Second { - panic("GCInterval must be larger than 1 second") - } - self.tik = time.NewTicker(self.opts.GCInterval) - go func() { - for range self.tik.C { - self.GC() - } - }() -} - -// Close stop persistent work for the manager, like GC -func (self SessionManager) Close() { - if self.tik != nil { - self.tik.Stop() - } -} - diff --git a/out/localsession/session.go b/out/localsession/session.go deleted file mode 100644 index bcff3a3a..00000000 --- a/out/localsession/session.go +++ /dev/null @@ -1,158 +0,0 @@ -package localsession - -import ( - "context" - "sync" - "sync/atomic" - "time" -) -// Session represents a local storage for one session -type Session interface { - // IsValid tells if the session is valid at present - IsValid() bool - - // Get returns value for specific key - Get(key interface{}) interface{} - - // WithValue sets value for specific key,and return newly effective session - WithValue(key interface{}, val interface{}) Session -} - -// SessionCtx implements Session with context, -// which means children session WON'T affect parent and sibling sessions -type SessionCtx struct { - enabled *atomic.Value - storage context.Context -} - -// NewSessionCtx creates and enables a SessionCtx -func NewSessionCtx(ctx context.Context) SessionCtx { - var enabled atomic.Value - enabled.Store(true) - return SessionCtx{ - enabled: &enabled, - storage: ctx, - } -} - -// NewSessionCtx creates and enables a SessionCtx, -// and disable the session after timeout -func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx { - ret := NewSessionCtx(ctx) - go func() { - <-time.NewTimer(timeout).C - ret.Disable() - }() - return ret -} - -// Disable ends the session -func (self SessionCtx) Disable() { - self.enabled.Store(false) -} - -// Export exports underlying context -func (self SessionCtx) Export() context.Context { - return self.storage -} - -// IsValid tells if the session is valid at present -func (self SessionCtx) IsValid() bool { - return self.enabled.Load().(bool) -} - -// Get value for specific key -func (self SessionCtx) Get(key interface{}) interface{} { - return self.storage.Value(key) -} - -// Set value for specific key,and return newly effective session -func (self SessionCtx) WithValue(key interface{}, val interface{}) Session { - ctx := context.WithValue(self.storage, key, val) - return SessionCtx{ - enabled: self.enabled, - storage: ctx, - } -} - -// NewSessionMap implements Session with map, -// which means children session WILL affect parent session and sibling sessions -type SessionMap struct { - enabled *atomic.Value - storage map[interface{}]interface{} - lock sync.RWMutex -} - -// NewSessionMap creates and enables a SessionMap -func NewSessionMap(m map[interface{}]interface{}) *SessionMap { - var enabled atomic.Value - enabled.Store(true) - return &SessionMap{ - enabled: &enabled, - storage: m, - } -} - -// NewSessionCtx creates and enables a SessionCtx, -// and disable the session after timeout -func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap { - ret := NewSessionMap(m) - go func() { - <-time.NewTimer(timeout).C - ret.Disable() - }() - return ret -} - -// IsValid tells if the session is valid at present -func (self *SessionMap) IsValid() bool { - if self == nil { - return false - } - return self.enabled.Load().(bool) -} - -// Disable ends the session -func (self *SessionMap) Disable() { - if self == nil { - return - } - self.enabled.Store(false) -} - -// Export COPIES and exports underlying map -func (self *SessionMap) Export() map[interface{}]interface{} { - if self == nil { - return nil - } - m := make(map[interface{}]interface{}, len(self.storage)) - self.lock.RLock() - for k, v := range self.storage { - m[k] = v - } - self.lock.RUnlock() - return m -} - -// Get value for specific key -func (self *SessionMap) Get(key interface{}) interface{} { - if self == nil { - return nil - } - self.lock.RLock() - val := self.storage[key] - self.lock.RUnlock() - return val -} - -// Set value for specific key,and return itself -func (self *SessionMap) WithValue(key, val interface{}) Session { - if self == nil { - return nil - } - self.lock.Lock() - self.storage[key] = val - self.lock.Unlock() - return self -} - diff --git a/out/localsession/stubs.go b/out/localsession/stubs.go deleted file mode 100644 index 8af7932b..00000000 --- a/out/localsession/stubs.go +++ /dev/null @@ -1,74 +0,0 @@ -package localsession - -import ( - "strconv" - _ "unsafe" - "github.com/modern-go/gls" -) -//go:nocheckptr -func goID() uint64 { - return uint64(gls.GoID()) -} - -type labelMap map[string]string - -//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel -func setPprofLabel(m *labelMap) - -//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel -func getPproLabel() *labelMap - -const Pprof_Label_Session_ID = "go_session_id" - -func transmitSessionID(id SessionID) { - m := getPproLabel() - - var n labelMap - if m == nil { - n = make(labelMap) - } else { - n = make(labelMap, len(*m)) - for k, v := range *m { - if k != Pprof_Label_Session_ID { - n[k] = v - } - } - } - - n[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10) - setPprofLabel(&n) -} - -func getSessionID() (SessionID, bool) { - m := getPproLabel() - if m == nil { - return 0, false - } - if v, ok := (*m)[Pprof_Label_Session_ID]; !ok { - return 0, false - } else { - id, err := strconv.ParseInt(v, 10, 64) - if err != nil { - return 0, false - } - return SessionID(id), true - } -} - -func clearSessionID() { - m := getPproLabel() - if m == nil { - return - } - if _, ok := (*m)[Pprof_Label_Session_ID]; !ok { - return - } - n := make(labelMap, len(*m)) - for k, v := range *m { - if k != Pprof_Label_Session_ID { - n[k] = v - } - } - setPprofLabel(&n) -} - From c52fb5a2cc9472b755badfede2c8dcb8165733ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Sat, 19 Apr 2025 16:02:51 +0800 Subject: [PATCH 08/15] opt doc --- README.md | 34 +- docs/localsession.json | 466 +- docs/metainfo.json | 35024 +++++++++++++++------------------------ docs/parser-zh.md | 13 +- docs/uniast-zh.md | 148 +- 5 files changed, 13660 insertions(+), 22025 deletions(-) diff --git a/README.md b/README.md index 9bd52e92..1b801b7f 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,31 @@ ![ABCoder](images/ABCoder.png) -ABCoder, an AI-oriented code-processing SDK, is designed to enhance coding context for Large-Language-Model (LLM), and boost developing AI-assisted-coding workflow. +# Overview +ABCoder, an AI-oriented code-processing SDK, is designed to enhance coding context for Large-Language-Model (LLM), and boost developing AI-assisted-coding applications. + ## Features -- Universal Abstract Syntax Tree (UniAST), an language-independent, AI-friendly code-struct specfication, providing flexible and structrual coding-context for both AI and hunman. +- Universal Abstract Syntax Tree (UniAST), an language-independent, AI-friendly specification of code information, providing a flexible and structrual coding context for both AI and hunman. -- Universal Parser, parses abitary languages to UniAST. +- General Parser Interface, parses abitary-language codes to UniAST. -- Univeral Writer, transforms UniAST back to codes. +- General Writer Interface, transforms UniAST back to codes. -- (Comming Soon) Univeral Iterator, provides a set of interfaces and tools to help developers to implement their agents without deep knowledge of the UniAST structure. +- (Comming Soon) General Iterator Interface, provides a set of functions or tools to help developers to implement their agents without deep knowledge of the UniAST structure. - (Comming Soon) Code RAG, provides a set of tools to help the LLM understand your codes much deeper than ever. -Based on these features, developers can easily implement or enhance their AI-assisted-coding workflows (or agents), such as reviewing, optimizing, translating... +Based on these features, developers can easily implement or enhance their AI-assisted-coding applications, such as reviewing, optimizing, translating... + + +## Universal-Abstract-Syntax-Tree Specification + +see [UniAST Specification](docs/uniast-zh.md) + -## Getting Started +# Getting Started 1. Install ABCoder: ```bash @@ -34,12 +42,8 @@ abcoder parse {language} {repo-path} > ast.json abcoder write {language} ast.json ``` -## Universal-Abstract-Syntax-Tree Specification - -see [UniAST Specification](docs/uniast-zh.md) - -## Supported Languages +# Supported Languages ABCoder currently supports the following languages: @@ -47,11 +51,11 @@ ABCoder currently supports the following languages: | -------- | ----------- | ----------- | | Go | ✅ | ✅ | | Rust | ✅ | Coming Soon | -| Kotlin | Coming Soon | ❌ | -| C | WIP | ❌ | +| C | Coming Soon | ❌ | + -## Getting Involved +# Getting Involved We encourage developers to contribute and make this tool more powerful. If you are interested in contributing to ABCoder project, kindly check out our Getting Involved Guide: diff --git a/docs/localsession.json b/docs/localsession.json index fc1cb293..d5536d25 100644 --- a/docs/localsession.json +++ b/docs/localsession.json @@ -20,7 +20,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "CountPersistentValues", "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 215, + "Line": 214, "StartOffset": 0, "EndOffset": 0, "Content": "// CountPersistentValues counts the length of persisten KV pairs\nfunc CountPersistentValues(ctx context.Context) int {\n\tif n := getNode(ctx); n == nil {\n\t\treturn 0\n\t} else {\n\t\treturn len(n.persistent)\n\t}\n}" @@ -33,7 +33,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "GetAllPersistentValues", "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 147, + "Line": 146, "StartOffset": 0, "EndOffset": 0, "Content": "// GetAllPersistentValues retrieves all persistent values.\nfunc GetAllPersistentValues(ctx context.Context) (m map[string]string) {\n\tif n := getNode(ctx); n != nil {\n\t\tif cnt := len(n.persistent); cnt \u003e 0 {\n\t\t\tm = make(map[string]string, cnt)\n\t\t\tfor _, kv := range n.persistent {\n\t\t\t\tm[kv.key] = kv.val\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}" @@ -46,7 +46,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "RangePersistentValues", "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 161, + "Line": 160, "StartOffset": 0, "EndOffset": 0, "Content": "// RangePersistentValues calls f sequentially for each persistent kv.\n// If f returns false, range stops the iteration.\nfunc RangePersistentValues(ctx context.Context, f func(k, v string) bool) {\n\tn := getNode(ctx)\n\tif n == nil {\n\t\treturn\n\t}\n\n\tfor _, kv := range n.persistent {\n\t\tif !f(kv.key, kv.val) {\n\t\t\tbreak\n\t\t}\n\t}\n}" @@ -59,7 +59,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "WithPersistentValues", "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 234, + "Line": 233, "StartOffset": 0, "EndOffset": 0, "Content": "// WithPersistentValues sets the values into the context by the given keys.\n// This value will be propagated to the services along the RPC call chain.\nfunc WithPersistentValues(ctx context.Context, kvs ...string) context.Context {\n\tif len(kvs)%2 != 0 {\n\t\tpanic(\"len(kvs) must be even\")\n\t}\n\n\tkvLen := len(kvs) / 2\n\n\tif ctx == nil || len(kvs) == 0 {\n\t\treturn ctx\n\t}\n\n\tvar n *node\n\tif m := getNode(ctx); m != nil {\n\t\tnn := *m\n\t\tn = \u0026nn\n\t\tn.persistent = make([]kv, len(m.persistent), len(m.persistent)+kvLen)\n\t\tcopy(n.persistent, m.persistent)\n\t} else {\n\t\tn = \u0026node{\n\t\t\tpersistent: make([]kv, 0, kvLen),\n\t\t}\n\t}\n\n\tfor i := 0; i \u003c kvLen; i++ {\n\t\tkey := getKey(kvs, i)\n\t\tval := getValue(kvs, i)\n\n\t\tif len(key) == 0 || len(val) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif idx, ok := search(n.persistent, key); ok {\n\t\t\tif n.persistent[idx].val != val {\n\t\t\t\tn.persistent[idx].val = val\n\t\t\t}\n\t\t} else {\n\t\t\tn.persistent = append(n.persistent, kv{key: key, val: val})\n\t\t}\n\t}\n\n\treturn withNode(ctx, n)\n}" @@ -91,7 +91,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "BindSession", "File": "gls.go", - "Line": 115, + "Line": 114, "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}", @@ -101,7 +101,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "gls.go", - "Line": 115, + "Line": 114, "StartOffset": 3347, "EndOffset": 3356 } @@ -112,7 +112,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "goID", "File": "gls.go", - "Line": 119, + "Line": 118, "StartOffset": 3444, "EndOffset": 3448 } @@ -123,7 +123,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.BindSession", "File": "gls.go", - "Line": 119, + "Line": 118, "StartOffset": 3422, "EndOffset": 3433 } @@ -134,7 +134,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "gls.go", - "Line": 119, + "Line": 118, "StartOffset": 3434, "EndOffset": 3443 } @@ -145,7 +145,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 116, + "Line": 115, "StartOffset": 3364, "EndOffset": 3381 } @@ -159,7 +159,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "CurSession", "File": "gls.go", - "Line": 104, + "Line": 103, "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}", @@ -169,7 +169,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "gls.go", - "Line": 104, + "Line": 103, "StartOffset": 3054, "EndOffset": 3061 } @@ -180,7 +180,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "goID", "File": "gls.go", - "Line": 108, + "Line": 107, "StartOffset": 3174, "EndOffset": 3178 } @@ -191,7 +191,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.GetSession", "File": "gls.go", - "Line": 108, + "Line": 107, "StartOffset": 3153, "EndOffset": 3163 } @@ -202,7 +202,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "gls.go", - "Line": 108, + "Line": 107, "StartOffset": 3164, "EndOffset": 3173 } @@ -213,7 +213,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 105, + "Line": 104, "StartOffset": 3075, "EndOffset": 3092 } @@ -227,7 +227,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "DefaultManagerOptions", "File": "gls.go", - "Line": 42, + "Line": 41, "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}", @@ -237,7 +237,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "gls.go", - "Line": 42, + "Line": 41, "StartOffset": 1372, "EndOffset": 1386 } @@ -248,7 +248,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "gls.go", - "Line": 43, + "Line": 42, "StartOffset": 1397, "EndOffset": 1411 } @@ -262,7 +262,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "GetDefaultManager", "File": "gls.go", - "Line": 51, + "Line": 50, "StartOffset": 1548, "EndOffset": 1667, "Content": "// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}", @@ -272,7 +272,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager", "File": "gls.go", - "Line": 51, + "Line": 50, "StartOffset": 1622, "EndOffset": 1637 } @@ -283,7 +283,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 52, + "Line": 51, "StartOffset": 1648, "EndOffset": 1665 } @@ -297,7 +297,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Go", "File": "gls.go", - "Line": 137, + "Line": 136, "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}", @@ -307,7 +307,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "CurSession", "File": "gls.go", - "Line": 138, + "Line": 137, "StartOffset": 3974, "EndOffset": 3984 }, @@ -316,7 +316,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "GoSession", "File": "gls.go", - "Line": 140, + "Line": 139, "StartOffset": 3999, "EndOffset": 4008 } @@ -330,7 +330,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "GoSession", "File": "gls.go", - "Line": 147, + "Line": 146, "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}", @@ -340,7 +340,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "gls.go", - "Line": 147, + "Line": 146, "StartOffset": 4142, "EndOffset": 4151 } @@ -351,7 +351,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "UnbindSession", "File": "gls.go", - "Line": 153, + "Line": 152, "StartOffset": 4289, "EndOffset": 4302 }, @@ -360,7 +360,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "BindSession", "File": "gls.go", - "Line": 156, + "Line": 155, "StartOffset": 4330, "EndOffset": 4341 } @@ -374,7 +374,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "InitDefaultManager", "File": "gls.go", - "Line": 64, + "Line": 63, "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}", @@ -384,7 +384,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "gls.go", - "Line": 64, + "Line": 63, "StartOffset": 2032, "EndOffset": 2051 } @@ -395,7 +395,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "checkEnvOptions", "File": "gls.go", - "Line": 67, + "Line": 66, "StartOffset": 2123, "EndOffset": 2138 }, @@ -404,7 +404,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionManager", "File": "gls.go", - "Line": 72, + "Line": 71, "StartOffset": 2221, "EndOffset": 2238 } @@ -415,7 +415,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Close", "File": "gls.go", - "Line": 70, + "Line": 69, "StartOffset": 2200, "EndOffset": 2205 } @@ -426,7 +426,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 69, + "Line": 68, "StartOffset": 2152, "EndOffset": 2169 } @@ -440,7 +440,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionCtx", "File": "session.go", - "Line": 44, + "Line": 43, "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}", @@ -450,7 +450,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "session.go", - "Line": 44, + "Line": 43, "StartOffset": 1315, "EndOffset": 1325 } @@ -461,7 +461,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "session.go", - "Line": 47, + "Line": 46, "StartOffset": 1383, "EndOffset": 1393 } @@ -475,7 +475,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionCtxWithTimeout", "File": "session.go", - "Line": 55, + "Line": 54, "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}", @@ -485,7 +485,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "session.go", - "Line": 55, + "Line": 54, "StartOffset": 1604, "EndOffset": 1614 } @@ -496,7 +496,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionCtx", "File": "session.go", - "Line": 56, + "Line": 55, "StartOffset": 1625, "EndOffset": 1638 } @@ -507,7 +507,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.Disable", "File": "session.go", - "Line": 59, + "Line": 58, "StartOffset": 1692, "EndOffset": 1699 } @@ -521,7 +521,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionManager", "File": "manager.go", - "Line": 63, + "Line": 62, "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}", @@ -531,7 +531,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "manager.go", - "Line": 63, + "Line": 62, "StartOffset": 1804, "EndOffset": 1823 } @@ -542,7 +542,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager", "File": "manager.go", - "Line": 63, + "Line": 62, "StartOffset": 1825, "EndOffset": 1839 } @@ -553,7 +553,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "newShard", "File": "manager.go", - "Line": 69, + "Line": 68, "StartOffset": 2004, "EndOffset": 2012 } @@ -564,7 +564,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.startGC", "File": "manager.go", - "Line": 77, + "Line": 76, "StartOffset": 2112, "EndOffset": 2119 } @@ -575,7 +575,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard", "File": "manager.go", - "Line": 67, + "Line": 66, "StartOffset": 1940, "EndOffset": 1945 }, @@ -584,7 +584,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager", "File": "manager.go", - "Line": 71, + "Line": 70, "StartOffset": 2026, "EndOffset": 2040 } @@ -598,7 +598,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionMap", "File": "session.go", - "Line": 102, + "Line": 101, "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}", @@ -608,7 +608,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap", "File": "session.go", - "Line": 102, + "Line": 101, "StartOffset": 2776, "EndOffset": 2787 } @@ -619,7 +619,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap", "File": "session.go", - "Line": 105, + "Line": 104, "StartOffset": 2846, "EndOffset": 2856 } @@ -633,7 +633,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionMapWithTimeout", "File": "session.go", - "Line": 113, + "Line": 112, "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}", @@ -643,7 +643,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap", "File": "session.go", - "Line": 113, + "Line": 112, "StartOffset": 3075, "EndOffset": 3086 } @@ -654,7 +654,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionMap", "File": "session.go", - "Line": 114, + "Line": 113, "StartOffset": 3097, "EndOffset": 3110 } @@ -665,7 +665,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Disable", "File": "session.go", - "Line": 117, + "Line": 116, "StartOffset": 3162, "EndOffset": 3169 } @@ -679,7 +679,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session.Get", "File": "session.go", - "Line": 30, + "Line": 29, "StartOffset": 821, "EndOffset": 892, "Content": "// Get returns value for specific key\nGet(key interface{}) interface{}" @@ -692,7 +692,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session.IsValid", "File": "session.go", - "Line": 27, + "Line": 26, "StartOffset": 751, "EndOffset": 818, "Content": "// IsValid tells if the session is valid at present\nIsValid() bool" @@ -705,7 +705,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session.WithValue", "File": "session.go", - "Line": 33, + "Line": 32, "StartOffset": 895, "EndOffset": 1025, "Content": "// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session" @@ -718,7 +718,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.Disable", "File": "session.go", - "Line": 65, + "Line": 64, "StartOffset": 1722, "EndOffset": 1813, "Content": "// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}", @@ -739,7 +739,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.Export", "File": "session.go", - "Line": 70, + "Line": 69, "StartOffset": 1815, "EndOffset": 1924, "Content": "// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}", @@ -760,7 +760,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.Get", "File": "session.go", - "Line": 80, + "Line": 79, "StartOffset": 2056, "EndOffset": 2177, "Content": "// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}", @@ -781,7 +781,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.IsValid", "File": "session.go", - "Line": 75, + "Line": 74, "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}", @@ -802,7 +802,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.WithValue", "File": "session.go", - "Line": 85, + "Line": 84, "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}", @@ -820,7 +820,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "session.go", - "Line": 85, + "Line": 84, "StartOffset": 2313, "EndOffset": 2320 } @@ -831,7 +831,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "session.go", - "Line": 87, + "Line": 86, "StartOffset": 2381, "EndOffset": 2391 } @@ -845,7 +845,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.BindSession", "File": "manager.go", - "Line": 134, + "Line": 133, "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}", @@ -863,7 +863,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3386, "EndOffset": 3398 }, @@ -872,7 +872,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3400, "EndOffset": 3409 } @@ -883,7 +883,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "transmitSessionID", "File": "manager.go", - "Line": 140, + "Line": 139, "StartOffset": 3547, "EndOffset": 3564 } @@ -894,7 +894,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Store", "File": "manager.go", - "Line": 137, + "Line": 136, "StartOffset": 3485, "EndOffset": 3490 } @@ -908,7 +908,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.Close", "File": "manager.go", - "Line": 200, + "Line": 199, "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}", @@ -929,7 +929,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.GC", "File": "manager.go", - "Line": 163, + "Line": 162, "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}", @@ -947,7 +947,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session.IsValid", "File": "manager.go", - "Line": 174, + "Line": 173, "StartOffset": 4348, "EndOffset": 4355 } @@ -958,7 +958,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 171, + "Line": 170, "StartOffset": 4257, "EndOffset": 4266 }, @@ -967,7 +967,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 171, + "Line": 170, "StartOffset": 4267, "EndOffset": 4274 } @@ -981,7 +981,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.GetSession", "File": "manager.go", - "Line": 115, + "Line": 114, "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}", @@ -999,7 +999,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 115, + "Line": 114, "StartOffset": 2912, "EndOffset": 2924 } @@ -1010,7 +1010,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 115, + "Line": 114, "StartOffset": 2927, "EndOffset": 2934 } @@ -1021,7 +1021,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getSessionID", "File": "manager.go", - "Line": 125, + "Line": 124, "StartOffset": 3153, "EndOffset": 3165 } @@ -1032,7 +1032,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Load", "File": "manager.go", - "Line": 117, + "Line": 116, "StartOffset": 3030, "EndOffset": 3034 } @@ -1046,7 +1046,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.Options", "File": "manager.go", - "Line": 83, + "Line": 82, "StartOffset": 2140, "EndOffset": 2252, "Content": "// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}", @@ -1064,7 +1064,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "manager.go", - "Line": 83, + "Line": 82, "StartOffset": 2216, "EndOffset": 2230 } @@ -1078,7 +1078,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.UnbindSession", "File": "manager.go", - "Line": 149, + "Line": 148, "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}", @@ -1096,7 +1096,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 149, + "Line": 148, "StartOffset": 3805, "EndOffset": 3817 } @@ -1107,7 +1107,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "clearSessionID", "File": "manager.go", - "Line": 158, + "Line": 157, "StartOffset": 3991, "EndOffset": 4005 } @@ -1118,7 +1118,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Load", "File": "manager.go", - "Line": 152, + "Line": 151, "StartOffset": 3902, "EndOffset": 3906 }, @@ -1127,7 +1127,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Delete", "File": "manager.go", - "Line": 154, + "Line": 153, "StartOffset": 3928, "EndOffset": 3934 } @@ -1141,7 +1141,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.startGC", "File": "manager.go", - "Line": 187, + "Line": 186, "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}", @@ -1159,7 +1159,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.GC", "File": "manager.go", - "Line": 194, + "Line": 193, "StartOffset": 4857, "EndOffset": 4859 } @@ -1173,7 +1173,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap.Disable", "File": "session.go", - "Line": 131, + "Line": 130, "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}", @@ -1194,7 +1194,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap.Export", "File": "session.go", - "Line": 139, + "Line": 138, "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}", @@ -1215,7 +1215,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap.Get", "File": "session.go", - "Line": 153, + "Line": 152, "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}", @@ -1236,7 +1236,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap.IsValid", "File": "session.go", - "Line": 123, + "Line": 122, "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}", @@ -1257,7 +1257,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap.WithValue", "File": "session.go", - "Line": 164, + "Line": 163, "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}", @@ -1275,7 +1275,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "session.go", - "Line": 164, + "Line": 163, "StartOffset": 4094, "EndOffset": 4101 } @@ -1289,7 +1289,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "UnbindSession", "File": "gls.go", - "Line": 129, + "Line": 128, "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}", @@ -1299,7 +1299,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "goID", "File": "gls.go", - "Line": 133, + "Line": 132, "StartOffset": 3856, "EndOffset": 3860 } @@ -1310,7 +1310,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.UnbindSession", "File": "gls.go", - "Line": 133, + "Line": 132, "StartOffset": 3832, "EndOffset": 3845 } @@ -1321,7 +1321,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "gls.go", - "Line": 133, + "Line": 132, "StartOffset": 3846, "EndOffset": 3855 } @@ -1332,7 +1332,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 130, + "Line": 129, "StartOffset": 3774, "EndOffset": 3791 } @@ -1346,7 +1346,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "checkEnvOptions", "File": "gls.go", - "Line": 77, + "Line": 76, "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}", @@ -1356,7 +1356,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "gls.go", - "Line": 77, + "Line": 76, "StartOffset": 2300, "EndOffset": 2320 } @@ -1367,7 +1367,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SESSION_CONFIG_KEY", "File": "gls.go", - "Line": 78, + "Line": 77, "StartOffset": 2345, "EndOffset": 2363 } @@ -1381,7 +1381,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "clearSessionID", "File": "stubs.go", - "Line": 73, + "Line": 72, "StartOffset": 1629, "EndOffset": 1891, "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}", @@ -1391,7 +1391,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getPproLabel", "File": "stubs.go", - "Line": 74, + "Line": 73, "StartOffset": 1659, "EndOffset": 1671 }, @@ -1400,7 +1400,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "setPprofLabel", "File": "stubs.go", - "Line": 87, + "Line": 86, "StartOffset": 1872, "EndOffset": 1885 } @@ -1411,7 +1411,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "labelMap", "File": "stubs.go", - "Line": 81, + "Line": 80, "StartOffset": 1774, "EndOffset": 1782 } @@ -1422,7 +1422,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Pprof_Label_Session_ID", "File": "stubs.go", - "Line": 78, + "Line": 77, "StartOffset": 1720, "EndOffset": 1742 } @@ -1436,7 +1436,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getPproLabel", "File": "stubs.go", - "Line": 34, + "Line": 33, "StartOffset": 872, "EndOffset": 963, "Content": "//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap", @@ -1446,7 +1446,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "labelMap", "File": "stubs.go", - "Line": 34, + "Line": 33, "StartOffset": 954, "EndOffset": 963 } @@ -1460,7 +1460,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getSessionID", "File": "stubs.go", - "Line": 57, + "Line": 56, "StartOffset": 1338, "EndOffset": 1627, "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}", @@ -1470,7 +1470,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "stubs.go", - "Line": 57, + "Line": 56, "StartOffset": 1359, "EndOffset": 1368 } @@ -1481,7 +1481,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getPproLabel", "File": "stubs.go", - "Line": 58, + "Line": 57, "StartOffset": 1384, "EndOffset": 1396 } @@ -1492,7 +1492,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "stubs.go", - "Line": 69, + "Line": 68, "StartOffset": 1603, "EndOffset": 1612 } @@ -1503,7 +1503,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Pprof_Label_Session_ID", "File": "stubs.go", - "Line": 62, + "Line": 61, "StartOffset": 1453, "EndOffset": 1475 } @@ -1517,7 +1517,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "goID", "File": "stubs.go", - "Line": 24, + "Line": 23, "StartOffset": 676, "EndOffset": 741, "Content": "//go:nocheckptr\nfunc goID() uint64 {\n\treturn uint64(gls.GoID())\n}", @@ -1527,7 +1527,7 @@ "PkgPath": "github.com/modern-go/gls", "Name": "GoID", "File": "stubs.go", - "Line": 25, + "Line": 24, "StartOffset": 732, "EndOffset": 736 } @@ -1541,7 +1541,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "newShard", "File": "manager.go", - "Line": 55, + "Line": 54, "StartOffset": 1523, "EndOffset": 1634, "Content": "func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}", @@ -1551,7 +1551,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard", "File": "manager.go", - "Line": 55, + "Line": 54, "StartOffset": 1539, "EndOffset": 1545 } @@ -1562,7 +1562,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard", "File": "manager.go", - "Line": 56, + "Line": 55, "StartOffset": 1560, "EndOffset": 1565 }, @@ -1571,7 +1571,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 57, + "Line": 56, "StartOffset": 1585, "EndOffset": 1594 }, @@ -1580,7 +1580,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 57, + "Line": 56, "StartOffset": 1595, "EndOffset": 1602 } @@ -1591,7 +1591,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultShardCap", "File": "manager.go", - "Line": 57, + "Line": 56, "StartOffset": 1604, "EndOffset": 1619 } @@ -1605,7 +1605,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "setPprofLabel", "File": "stubs.go", - "Line": 31, + "Line": 30, "StartOffset": 776, "EndOffset": 870, "Content": "//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)", @@ -1615,7 +1615,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "labelMap", "File": "stubs.go", - "Line": 31, + "Line": 30, "StartOffset": 858, "EndOffset": 869 } @@ -1629,7 +1629,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard.Delete", "File": "manager.go", - "Line": 107, + "Line": 106, "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}", @@ -1647,7 +1647,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 107, + "Line": 106, "StartOffset": 2700, "EndOffset": 2712 } @@ -1661,7 +1661,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard.Load", "File": "manager.go", - "Line": 90, + "Line": 89, "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}", @@ -1679,7 +1679,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 90, + "Line": 89, "StartOffset": 2340, "EndOffset": 2352 } @@ -1690,7 +1690,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 90, + "Line": 89, "StartOffset": 2355, "EndOffset": 2362 } @@ -1704,7 +1704,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard.Store", "File": "manager.go", - "Line": 101, + "Line": 100, "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}", @@ -1722,7 +1722,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 101, + "Line": 100, "StartOffset": 2600, "EndOffset": 2612 }, @@ -1731,7 +1731,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 101, + "Line": 100, "StartOffset": 2614, "EndOffset": 2624 } @@ -1745,7 +1745,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "transmitSessionID", "File": "stubs.go", - "Line": 38, + "Line": 37, "StartOffset": 1013, "EndOffset": 1336, "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\t\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}", @@ -1755,7 +1755,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "stubs.go", - "Line": 38, + "Line": 37, "StartOffset": 1036, "EndOffset": 1048 } @@ -1766,7 +1766,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "getPproLabel", "File": "stubs.go", - "Line": 39, + "Line": 38, "StartOffset": 1058, "EndOffset": 1070 }, @@ -1775,7 +1775,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "setPprofLabel", "File": "stubs.go", - "Line": 54, + "Line": 53, "StartOffset": 1317, "EndOffset": 1330 } @@ -1786,7 +1786,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "labelMap", "File": "stubs.go", - "Line": 41, + "Line": 40, "StartOffset": 1081, "EndOffset": 1089 } @@ -1797,7 +1797,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Pprof_Label_Session_ID", "File": "stubs.go", - "Line": 47, + "Line": 46, "StartOffset": 1202, "EndOffset": 1224 } @@ -1812,7 +1812,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "manager.go", - "Line": 24, + "Line": 23, "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}" @@ -1824,7 +1824,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "session.go", - "Line": 25, + "Line": 24, "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}", @@ -1853,7 +1853,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "session.go", - "Line": 38, + "Line": 37, "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}", @@ -1904,7 +1904,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionID", "File": "manager.go", - "Line": 88, + "Line": 87, "StartOffset": 2296, "EndOffset": 2317, "Content": "// SessionID is the identity of a session\ntype SessionID uint64" @@ -1916,7 +1916,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager", "File": "manager.go", - "Line": 46, + "Line": 45, "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}", @@ -1926,7 +1926,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "manager.go", - "Line": 50, + "Line": 49, "StartOffset": 1479, "EndOffset": 1493 } @@ -1976,7 +1976,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionMap", "File": "session.go", - "Line": 95, + "Line": 94, "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}", @@ -2022,7 +2022,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "labelMap", "File": "stubs.go", - "Line": 28, + "Line": 27, "StartOffset": 743, "EndOffset": 774, "Content": "type labelMap map[string]string" @@ -2034,7 +2034,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "shard", "File": "manager.go", - "Line": 40, + "Line": 39, "StartOffset": 1272, "EndOffset": 1340, "Content": "type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}", @@ -2066,7 +2066,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "Pprof_Label_Session_ID", "File": "stubs.go", - "Line": 36, + "Line": 35, "StartOffset": 971, "EndOffset": 1011, "Content": "const Pprof_Label_Session_ID = \"go_session_id\"" @@ -2079,7 +2079,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SESSION_CONFIG_KEY", "File": "gls.go", - "Line": 34, + "Line": 33, "StartOffset": 1142, "EndOffset": 1193, "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 = \"CLOUDWEGO_SESSION_CONFIG_KEY\"" @@ -2092,7 +2092,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerObj", "File": "gls.go", - "Line": 37, + "Line": 36, "StartOffset": 1202, "EndOffset": 1236, "Type": { @@ -2110,7 +2110,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultManagerOnce", "File": "gls.go", - "Line": 38, + "Line": 37, "StartOffset": 1238, "EndOffset": 1266, "Type": { @@ -2128,7 +2128,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultShardCap", "File": "manager.go", - "Line": 53, + "Line": 52, "StartOffset": 1501, "EndOffset": 1521, "Type": { @@ -2153,7 +2153,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "BackupCtx", "File": "backup/metainfo.go", - "Line": 104, + "Line": 103, "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}", @@ -2163,7 +2163,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "GetDefaultManager", "File": "backup/metainfo.go", - "Line": 105, + "Line": 104, "StartOffset": 2652, "EndOffset": 2669 }, @@ -2172,7 +2172,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "BindSession", "File": "backup/metainfo.go", - "Line": 108, + "Line": 107, "StartOffset": 2707, "EndOffset": 2718 }, @@ -2181,7 +2181,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "NewSessionCtx", "File": "backup/metainfo.go", - "Line": 108, + "Line": 107, "StartOffset": 2732, "EndOffset": 2745 } @@ -2195,7 +2195,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "ClearCtx", "File": "backup/metainfo.go", - "Line": 112, + "Line": 111, "StartOffset": 2755, "EndOffset": 2829, "Content": "// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}", @@ -2205,7 +2205,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "UnbindSession", "File": "backup/metainfo.go", - "Line": 113, + "Line": 112, "StartOffset": 2812, "EndOffset": 2825 } @@ -2219,7 +2219,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "DefaultOptions", "File": "backup/metainfo.go", - "Line": 36, + "Line": 35, "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}", @@ -2229,7 +2229,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "Options", "File": "backup/metainfo.go", - "Line": 36, + "Line": 35, "StartOffset": 1006, "EndOffset": 1013 } @@ -2240,7 +2240,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "DefaultManagerOptions", "File": "backup/metainfo.go", - "Line": 39, + "Line": 38, "StartOffset": 1089, "EndOffset": 1110 } @@ -2251,7 +2251,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "Options", "File": "backup/metainfo.go", - "Line": 37, + "Line": 36, "StartOffset": 1024, "EndOffset": 1031 } @@ -2265,7 +2265,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "Init", "File": "backup/metainfo.go", - "Line": 45, + "Line": 44, "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}", @@ -2275,7 +2275,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "Options", "File": "backup/metainfo.go", - "Line": 45, + "Line": 44, "StartOffset": 1234, "EndOffset": 1246 } @@ -2286,7 +2286,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "InitDefaultManager", "File": "backup/metainfo.go", - "Line": 47, + "Line": 46, "StartOffset": 1283, "EndOffset": 1301 } @@ -2300,7 +2300,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "RecoverCtxOnDemands", "File": "backup/metainfo.go", - "Line": 54, + "Line": 53, "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}", @@ -2310,7 +2310,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "BackupHandler", "File": "backup/metainfo.go", - "Line": 54, + "Line": 53, "StartOffset": 1538, "EndOffset": 1559 } @@ -2321,7 +2321,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "CurSession", "File": "backup/metainfo.go", - "Line": 58, + "Line": 57, "StartOffset": 1639, "EndOffset": 1649 }, @@ -2330,7 +2330,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "CountPersistentValues", "File": "backup/metainfo.go", - "Line": 76, + "Line": 75, "StartOffset": 1959, "EndOffset": 1980 }, @@ -2339,7 +2339,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "GetAllPersistentValues", "File": "backup/metainfo.go", - "Line": 79, + "Line": 78, "StartOffset": 2066, "EndOffset": 2088 }, @@ -2348,7 +2348,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "RangePersistentValues", "File": "backup/metainfo.go", - "Line": 84, + "Line": 83, "StartOffset": 2196, "EndOffset": 2217 }, @@ -2357,7 +2357,7 @@ "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", "Name": "WithPersistentValues", "File": "backup/metainfo.go", - "Line": 97, + "Line": 96, "StartOffset": 2520, "EndOffset": 2540 } @@ -2368,7 +2368,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx.Export", "File": "backup/metainfo.go", - "Line": 66, + "Line": 65, "StartOffset": 1752, "EndOffset": 1758 } @@ -2379,7 +2379,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionCtx", "File": "backup/metainfo.go", - "Line": 62, + "Line": 61, "StartOffset": 1704, "EndOffset": 1714 } @@ -2394,7 +2394,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "BackupHandler", "File": "backup/metainfo.go", - "Line": 27, + "Line": 26, "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)" @@ -2406,7 +2406,7 @@ "PkgPath": "github.com/cloudwego/localsession/backup", "Name": "Options", "File": "backup/metainfo.go", - "Line": 30, + "Line": 29, "StartOffset": 898, "EndOffset": 963, "Content": "// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}", @@ -2416,7 +2416,7 @@ "PkgPath": "github.com/cloudwego/localsession", "Name": "ManagerOptions", "File": "backup/metainfo.go", - "Line": 32, + "Line": 31, "StartOffset": 934, "EndOffset": 961 } @@ -2433,63 +2433,48 @@ }, "Files": { ".github/ISSUE_TEMPLATE/bug_report.md": { - "Name": "bug_report.md", "Path": ".github/ISSUE_TEMPLATE/bug_report.md" }, ".github/ISSUE_TEMPLATE/feature_request.md": { - "Name": "feature_request.md", "Path": ".github/ISSUE_TEMPLATE/feature_request.md" }, ".github/PULL_REQUEST_TEMPLATE.md": { - "Name": "PULL_REQUEST_TEMPLATE.md", "Path": ".github/PULL_REQUEST_TEMPLATE.md" }, ".github/workflows/release-check.yml": { - "Name": "release-check.yml", "Path": ".github/workflows/release-check.yml" }, ".github/workflows/tests.yml": { - "Name": "tests.yml", "Path": ".github/workflows/tests.yml" }, ".gitignore": { - "Name": ".gitignore", "Path": ".gitignore" }, ".golangci.yaml": { - "Name": ".golangci.yaml", "Path": ".golangci.yaml" }, ".licenserc.yaml": { - "Name": ".licenserc.yaml", "Path": ".licenserc.yaml" }, "CODE_OF_CONDUCT.md": { - "Name": "CODE_OF_CONDUCT.md", "Path": "CODE_OF_CONDUCT.md" }, "CONTRIBUTING.md": { - "Name": "CONTRIBUTING.md", "Path": "CONTRIBUTING.md" }, "LICENSE-APACHE": { - "Name": "LICENSE-APACHE", "Path": "LICENSE-APACHE" }, "README.md": { - "Name": "README.md", "Path": "README.md" }, "_typos.toml": { - "Name": "_typos.toml", "Path": "_typos.toml" }, "api_test.go": { - "Name": "api_test.go", "Path": "api_test.go" }, "backup/metainfo.go": { - "Name": "metainfo.go", "Path": "backup/metainfo.go", "Imports": [ { @@ -2505,19 +2490,15 @@ "Package": "github.com/cloudwego/localsession/backup" }, "backup/metainfo_test.go": { - "Name": "metainfo_test.go", "Path": "backup/metainfo_test.go" }, "check_branch_name.sh": { - "Name": "check_branch_name.sh", "Path": "check_branch_name.sh" }, "example_test.go": { - "Name": "example_test.go", "Path": "example_test.go" }, "gls.go": { - "Name": "gls.go", "Path": "gls.go", "Imports": [ { @@ -2542,15 +2523,12 @@ "Package": "github.com/cloudwego/localsession" }, "go.mod": { - "Name": "go.mod", "Path": "go.mod" }, "go.sum": { - "Name": "go.sum", "Path": "go.sum" }, "manager.go": { - "Name": "manager.go", "Path": "manager.go", "Imports": [ { @@ -2566,7 +2544,6 @@ "Package": "github.com/cloudwego/localsession" }, "session.go": { - "Name": "session.go", "Path": "session.go", "Imports": [ { @@ -2585,7 +2562,6 @@ "Package": "github.com/cloudwego/localsession" }, "stubs.go": { - "Name": "stubs.go", "Path": "stubs.go", "Imports": [ { @@ -2622,7 +2598,7 @@ "PkgPath": "github.com/modern-go/gls", "Name": "GoID", "File": "../../../../pkg/mod/github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5/goid.go", - "Line": 21, + "Line": 20, "StartOffset": 0, "EndOffset": 0, "Content": "// GoID returns the goroutine id of current goroutine\nfunc GoID() int64 {\n\tg := getg()\n\tp_goid := (*int64)(unsafe.Pointer(g + goidOffset))\n\treturn *p_goid\n}" @@ -3171,15 +3147,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 5 + "Name": "transmitSessionID", + "Line": 9 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "Line": 9 + "Name": "getSessionID", + "Line": 5 }, { "Kind": "Reference", @@ -3217,15 +3193,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 2 + "Name": "SessionManager.GC", + "Line": 8 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 + "Name": "newShard", + "Line": 2 } ] }, @@ -3272,15 +3248,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtx", - "Line": 3 + "Name": "SessionCtx.WithValue", + "Line": 2 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.WithValue", - "Line": 2 + "Name": "NewSessionCtx", + "Line": 3 }, { "Kind": "Reference", @@ -3366,42 +3342,42 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 2 + "Name": "getSessionID", + "Line": 12 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 + "Name": "CurSession", + "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 12 + "Name": "SessionManager.GC", + "Line": 8 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", + "Name": "BindSession", "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 4 + "Name": "newShard", + "Line": 2 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", + "Name": "UnbindSession", "Line": 4 } ] @@ -3867,15 +3843,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.UnbindSession", - "Line": 3 + "Name": "SessionManager.GetSession", + "Line": 2 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GetSession", - "Line": 2 + "Name": "SessionManager.UnbindSession", + "Line": 3 } ] }, @@ -3930,35 +3906,35 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", + "Name": "GetDefaultManager", "Line": 1 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", + "Name": "CurSession", "Line": 1 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 5 + "Name": "BindSession", + "Line": 1 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 1 + "Name": "InitDefaultManager", + "Line": 5 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "GetDefaultManager", + "Name": "UnbindSession", "Line": 1 } ] @@ -4014,14 +3990,14 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", + "Name": "transmitSessionID", "Line": 1 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", + "Name": "getSessionID", "Line": 1 }, { @@ -4090,7 +4066,7 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", + "Name": "CurSession", "Line": 4 }, { @@ -4104,7 +4080,7 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", + "Name": "UnbindSession", "Line": 4 } ] @@ -4211,15 +4187,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 1 + "Name": "NewSessionManager", + "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionManager", - "Line": 4 + "Name": "newShard", + "Line": 1 } ] }, diff --git a/docs/metainfo.json b/docs/metainfo.json index 2df96fcd..8e0888ec 100644 --- a/docs/metainfo.json +++ b/docs/metainfo.json @@ -20,9 +20,9 @@ "PkgPath": "alloc::boxed", "Name": "new", "File": "boxed.rs", - "Line": 273, - "StartOffset": 10171, - "EndOffset": 10174, + "Line": 272, + "StartOffset": 10263, + "EndOffset": 10266, "Content": "new" } }, @@ -34,9 +34,9 @@ "PkgPath": "alloc::boxed", "Name": "Box", "File": "boxed.rs", - "Line": 231, - "StartOffset": 8929, - "EndOffset": 8932, + "Line": 230, + "StartOffset": 8963, + "EndOffset": 8966, "Content": "Box" } }, @@ -55,9 +55,9 @@ "PkgPath": "alloc::boxed::convert", "Name": "downcast", "File": "convert.rs", - "Line": 482, - "StartOffset": 14426, - "EndOffset": 14434, + "Line": 481, + "StartOffset": 14499, + "EndOffset": 14507, "Content": "downcast" } }, @@ -77,9 +77,9 @@ "PkgPath": "alloc::str", "Name": "to_owned", "File": "str.rs", - "Line": 210, - "StartOffset": 7690, - "EndOffset": 7698, + "Line": 209, + "StartOffset": 7705, + "EndOffset": 7713, "Content": "to_owned" } }, @@ -99,9 +99,9 @@ "PkgPath": "alloc::string", "Name": "push", "File": "string.rs", - "Line": 1419, - "StartOffset": 48369, - "EndOffset": 48373, + "Line": 1418, + "StartOffset": 48420, + "EndOffset": 48424, "Content": "push" }, "push_str": { @@ -112,9 +112,9 @@ "PkgPath": "alloc::string", "Name": "push_str", "File": "string.rs", - "Line": 1126, - "StartOffset": 39142, - "EndOffset": 39150, + "Line": 1125, + "StartOffset": 39213, + "EndOffset": 39221, "Content": "push_str" }, "with_capacity": { @@ -125,9 +125,9 @@ "PkgPath": "alloc::string", "Name": "with_capacity", "File": "string.rs", - "Line": 489, - "StartOffset": 15651, - "EndOffset": 15664, + "Line": 488, + "StartOffset": 15668, + "EndOffset": 15681, "Content": "with_capacity" } }, @@ -139,9 +139,9 @@ "PkgPath": "alloc::string", "Name": "String", "File": "string.rs", - "Line": 362, - "StartOffset": 11508, - "EndOffset": 11514, + "Line": 361, + "StartOffset": 11549, + "EndOffset": 11555, "Content": "String", "Methods": { "eq": { @@ -167,9 +167,9 @@ "PkgPath": "alloc::sync", "Name": "as_ref", "File": "sync.rs", - "Line": 3917, - "StartOffset": 139295, - "EndOffset": 139301, + "Line": 3916, + "StartOffset": 139351, + "EndOffset": 139357, "Content": "as_ref" }, "clone": { @@ -180,9 +180,9 @@ "PkgPath": "alloc::sync", "Name": "clone", "File": "sync.rs", - "Line": 2163, - "StartOffset": 77402, - "EndOffset": 77407, + "Line": 2162, + "StartOffset": 77417, + "EndOffset": 77422, "Content": "clone" }, "new": { @@ -193,9 +193,9 @@ "PkgPath": "alloc::sync", "Name": "new", "File": "sync.rs", - "Line": 386, - "StartOffset": 14609, - "EndOffset": 14612, + "Line": 385, + "StartOffset": 14660, + "EndOffset": 14663, "Content": "new" } }, @@ -207,9 +207,9 @@ "PkgPath": "alloc::sync", "Name": "Arc", "File": "sync.rs", - "Line": 240, - "StartOffset": 8930, - "EndOffset": 8933, + "Line": 239, + "StartOffset": 8959, + "EndOffset": 8962, "Content": "Arc" } }, @@ -228,9 +228,9 @@ "PkgPath": "core::any", "Name": "downcast_mut", "File": "any.rs", - "Line": 538, - "StartOffset": 16683, - "EndOffset": 16695, + "Line": 537, + "StartOffset": 16698, + "EndOffset": 16710, "Content": "downcast_mut" }, "downcast_ref": { @@ -241,9 +241,9 @@ "PkgPath": "core::any", "Name": "downcast_ref", "File": "any.rs", - "Line": 510, - "StartOffset": 15957, - "EndOffset": 15969, + "Line": 509, + "StartOffset": 15972, + "EndOffset": 15984, "Content": "downcast_ref" }, "of": { @@ -254,9 +254,9 @@ "PkgPath": "core::any", "Name": "of", "File": "any.rs", - "Line": 742, - "StartOffset": 24064, - "EndOffset": 24066, + "Line": 741, + "StartOffset": 24137, + "EndOffset": 24139, "Content": "of" } }, @@ -268,9 +268,9 @@ "PkgPath": "core::any", "Name": "Any", "File": "any.rs", - "Line": 113, - "StartOffset": 4391, - "EndOffset": 4394, + "Line": 112, + "StartOffset": 4446, + "EndOffset": 4449, "Content": "Any" }, "TypeId": { @@ -280,9 +280,9 @@ "PkgPath": "core::any", "Name": "TypeId", "File": "any.rs", - "Line": 710, - "StartOffset": 23176, - "EndOffset": 23182, + "Line": 709, + "StartOffset": 23223, + "EndOffset": 23229, "Content": "TypeId" } }, @@ -301,9 +301,9 @@ "PkgPath": "core::borrow", "Name": "Borrow", "File": "borrow.rs", - "Line": 157, - "StartOffset": 6609, - "EndOffset": 6615, + "Line": 156, + "StartOffset": 6646, + "EndOffset": 6652, "Content": "Borrow" } }, @@ -322,9 +322,9 @@ "PkgPath": "core::char::methods", "Name": "to_ascii_lowercase", "File": "methods.rs", - "Line": 1254, - "StartOffset": 41973, - "EndOffset": 41991, + "Line": 1253, + "StartOffset": 41988, + "EndOffset": 42006, "Content": "to_ascii_lowercase" }, "to_ascii_uppercase": { @@ -335,9 +335,9 @@ "PkgPath": "core::char::methods", "Name": "to_ascii_uppercase", "File": "methods.rs", - "Line": 1220, - "StartOffset": 40770, - "EndOffset": 40788, + "Line": 1219, + "StartOffset": 40785, + "EndOffset": 40803, "Content": "to_ascii_uppercase" } }, @@ -357,10 +357,22 @@ "PkgPath": "core::cmp", "Name": "Eq", "File": "cmp.rs", - "Line": 334, - "StartOffset": 12091, - "EndOffset": 12093, - "Content": "Eq" + "Line": 333, + "StartOffset": 12124, + "EndOffset": 12126, + "Content": "Eq", + "Methods": { + "expecting": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Eq.expecting" + }, + "visit_map": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Eq.visit_map" + } + } }, "Ord": { "Exported": false, @@ -369,9 +381,9 @@ "PkgPath": "core::cmp", "Name": "Ord", "File": "cmp.rs", - "Line": 946, - "StartOffset": 31300, - "EndOffset": 31303, + "Line": 945, + "StartOffset": 31334, + "EndOffset": 31337, "Content": "Ord" }, "PartialEq": { @@ -381,9 +393,9 @@ "PkgPath": "core::cmp", "Name": "PartialEq", "File": "cmp.rs", - "Line": 248, - "StartOffset": 9080, - "EndOffset": 9089, + "Line": 247, + "StartOffset": 9120, + "EndOffset": 9129, "Content": "PartialEq" }, "PartialOrd": { @@ -393,9 +405,9 @@ "PkgPath": "core::cmp", "Name": "PartialOrd", "File": "cmp.rs", - "Line": 1329, - "StartOffset": 43927, - "EndOffset": 43937, + "Line": 1328, + "StartOffset": 43968, + "EndOffset": 43978, "Content": "PartialOrd" } }, @@ -414,9 +426,9 @@ "PkgPath": "core::convert", "Name": "as_ref", "File": "mod.rs", - "Line": 221, - "StartOffset": 8200, - "EndOffset": 8206, + "Line": 220, + "StartOffset": 8251, + "EndOffset": 8257, "Content": "as_ref" } }, @@ -428,9 +440,9 @@ "PkgPath": "core::convert", "Name": "AsRef", "File": "mod.rs", - "Line": 218, - "StartOffset": 8029, - "EndOffset": 8034, + "Line": 217, + "StartOffset": 8086, + "EndOffset": 8091, "Content": "AsRef" }, "From": { @@ -440,9 +452,9 @@ "PkgPath": "core::convert", "Name": "From", "File": "mod.rs", - "Line": 582, - "StartOffset": 22549, - "EndOffset": 22553, + "Line": 581, + "StartOffset": 22571, + "EndOffset": 22575, "Content": "From" }, "Into": { @@ -452,9 +464,9 @@ "PkgPath": "core::convert", "Name": "Into", "File": "mod.rs", - "Line": 447, - "StartOffset": 16452, - "EndOffset": 16456, + "Line": 446, + "StartOffset": 16474, + "EndOffset": 16478, "Content": "Into" } }, @@ -473,9 +485,9 @@ "PkgPath": "core::default", "Name": "default", "File": "default.rs", - "Line": 139, - "StartOffset": 3341, - "EndOffset": 3348, + "Line": 138, + "StartOffset": 3386, + "EndOffset": 3393, "Content": "default" } }, @@ -487,9 +499,9 @@ "PkgPath": "core::default", "Name": "Default", "File": "default.rs", - "Line": 107, - "StartOffset": 2496, - "EndOffset": 2503, + "Line": 106, + "StartOffset": 2526, + "EndOffset": 2533, "Content": "Default" } }, @@ -508,9 +520,9 @@ "PkgPath": "core::fmt", "Name": "debug_struct", "File": "mod.rs", - "Line": 2228, - "StartOffset": 75498, - "EndOffset": 75510, + "Line": 2227, + "StartOffset": 75558, + "EndOffset": 75570, "Content": "debug_struct" } }, @@ -522,9 +534,9 @@ "PkgPath": "core::fmt", "Name": "Debug", "File": "mod.rs", - "Line": 870, - "StartOffset": 31512, - "EndOffset": 31517, + "Line": 869, + "StartOffset": 31542, + "EndOffset": 31547, "Content": "Debug" }, "Display": { @@ -534,9 +546,9 @@ "PkgPath": "core::fmt", "Name": "Display", "File": "mod.rs", - "Line": 987, - "StartOffset": 35722, - "EndOffset": 35729, + "Line": 986, + "StartOffset": 35769, + "EndOffset": 35776, "Content": "Display" }, "Formatter": { @@ -546,9 +558,9 @@ "PkgPath": "core::fmt", "Name": "Formatter", "File": "mod.rs", - "Line": 532, - "StartOffset": 20036, - "EndOffset": 20045, + "Line": 531, + "StartOffset": 20076, + "EndOffset": 20085, "Content": "Formatter" }, "Result": { @@ -558,9 +570,9 @@ "PkgPath": "core::fmt", "Name": "Result", "File": "mod.rs", - "Line": 79, - "StartOffset": 2322, - "EndOffset": 2328, + "Line": 78, + "StartOffset": 2369, + "EndOffset": 2375, "Content": "Result" } }, @@ -579,9 +591,9 @@ "PkgPath": "core::fmt::builders", "Name": "finish", "File": "builders.rs", - "Line": 244, - "StartOffset": 7364, - "EndOffset": 7370, + "Line": 243, + "StartOffset": 7424, + "EndOffset": 7430, "Content": "finish" } }, @@ -601,9 +613,9 @@ "PkgPath": "core::hash", "Name": "BuildHasher", "File": "mod.rs", - "Line": 637, - "StartOffset": 20860, - "EndOffset": 20871, + "Line": 636, + "StartOffset": 20914, + "EndOffset": 20925, "Content": "BuildHasher" }, "Hash": { @@ -613,9 +625,9 @@ "PkgPath": "core::hash", "Name": "Hash", "File": "mod.rs", - "Line": 186, - "StartOffset": 5394, - "EndOffset": 5398, + "Line": 185, + "StartOffset": 5429, + "EndOffset": 5433, "Content": "Hash" } }, @@ -634,9 +646,9 @@ "PkgPath": "core::iter::traits::collect", "Name": "Extend", "File": "collect.rs", - "Line": 397, - "StartOffset": 12174, - "EndOffset": 12180, + "Line": 396, + "StartOffset": 12221, + "EndOffset": 12227, "Content": "Extend" }, "FromIterator": { @@ -646,9 +658,9 @@ "PkgPath": "core::iter::traits::collect", "Name": "FromIterator", "File": "collect.rs", - "Line": 134, - "StartOffset": 4174, - "EndOffset": 4186, + "Line": 133, + "StartOffset": 4217, + "EndOffset": 4229, "Content": "FromIterator" }, "IntoIterator": { @@ -658,9 +670,9 @@ "PkgPath": "core::iter::traits::collect", "Name": "IntoIterator", "File": "collect.rs", - "Line": 285, - "StartOffset": 8896, - "EndOffset": 8908, + "Line": 284, + "StartOffset": 8943, + "EndOffset": 8955, "Content": "IntoIterator" } }, @@ -679,9 +691,9 @@ "PkgPath": "core::iter::traits::iterator", "Name": "map", "File": "iterator.rs", - "Line": 745, - "StartOffset": 25852, - "EndOffset": 25855, + "Line": 744, + "StartOffset": 25903, + "EndOffset": 25906, "Content": "map" } }, @@ -693,32 +705,6 @@ "IsTest": false, "PkgPath": "core::macros", "Functions": { - "alloc_error_handler": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "alloc_error_handler", - "File": "mod.rs", - "Line": 1806, - "StartOffset": 63853, - "EndOffset": 64246, - "Content": "/// Attribute macro applied to a function to register it as a handler for allocation failure.\n ///\n /// See also [`std::alloc::handle_alloc_error`](../../../std/alloc/fn.handle_alloc_error.html).\n #[unstable(feature = \"alloc_error_handler\", issue = \"51540\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro alloc_error_handler($item:item) {\n /* compiler built-in */\n }" - }, - "assert": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "mod.rs", - "Line": 1624, - "StartOffset": 57604, - "EndOffset": 59588, - "Content": "/// Asserts that a boolean expression is `true` at runtime.\n ///\n /// This will invoke the [`panic!`] macro if the provided expression cannot be\n /// evaluated to `true` at runtime.\n ///\n /// # Uses\n ///\n /// Assertions are always checked in both debug and release builds, and cannot\n /// be disabled. See [`debug_assert!`] for assertions that are not enabled in\n /// release builds by default.\n ///\n /// Unsafe code may rely on `assert!` to enforce run-time invariants that, if\n /// violated could lead to unsafety.\n ///\n /// Other use-cases of `assert!` include testing and enforcing run-time\n /// invariants in safe code (whose violation cannot result in unsafety).\n ///\n /// # Custom Messages\n ///\n /// This macro has a second form, where a custom panic message can\n /// be provided with or without arguments for formatting. See [`std::fmt`]\n /// for syntax for this form. Expressions used as format arguments will only\n /// be evaluated if the assertion fails.\n ///\n /// [`std::fmt`]: ../std/fmt/index.html\n ///\n /// # Examples\n ///\n /// ```\n /// // the panic message for these assertions is the stringified value of the\n /// // expression given.\n /// assert!(true);\n ///\n /// fn some_computation() -\u003e bool { true } // a very simple function\n ///\n /// assert!(some_computation());\n ///\n /// // assert with a custom message\n /// let x = true;\n /// assert!(x, \"x wasn't true!\");\n ///\n /// let a = 3; let b = 27;\n /// assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"assert_macro\"]\n #[allow_internal_unstable(\n core_intrinsics,\n panic_internals,\n edition_panic,\n generic_assert_internals\n )]\n macro_rules! assert {\n ($cond:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n ($cond:expr, $($arg:tt)+) =\u003e {{ /* compiler built-in */ }};\n }" - }, "assert_eq": { "Exported": false, "IsMethod": false, @@ -727,9 +713,9 @@ "PkgPath": "core::macros", "Name": "assert_eq", "File": "mod.rs", - "Line": 15, - "StartOffset": -1, - "EndOffset": 2630, + "Line": 14, + "StartOffset": 435, + "EndOffset": 2638, "Content": "/// Asserts that two expressions are equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_eq!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_eq!`]: crate::debug_assert_eq\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// assert_eq!(a, b);\n///\n/// assert_eq!(a, b, \"we are testing addition with {} and {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_eq_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_eq {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" }, "assert_matches": { @@ -740,9 +726,9 @@ "PkgPath": "core::macros", "Name": "assert_matches", "File": "mod.rs", - "Line": 127, - "StartOffset": -1, - "EndOffset": 7572, + "Line": 126, + "StartOffset": 4848, + "EndOffset": 7580, "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `assert!(matches!(value, pattern))`, because it can print\n/// the debug representation of the actual value shape that did not meet expectations. In contrast,\n/// using [`assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_matches!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_matches!`]: crate::assert_matches::debug_assert_matches\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// assert_matches!(a, Some(_));\n/// assert_matches!(b, Some(_));\n///\n/// assert_matches!(a, Some(345));\n/// assert_matches!(a, Some(345) | None);\n///\n/// // assert_matches!(a, None); // panics\n/// // assert_matches!(b, Some(345)); // panics\n/// // assert_matches!(b, Some(345) | None); // panics\n///\n/// assert_matches!(a, Some(x) if x \u003e 100);\n/// // assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(panic_internals)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro assert_matches {\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::None\n );\n }\n }\n },\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $($arg:tt)+) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::Some($crate::format_args!($($arg)+))\n );\n }\n }\n },\n}" }, "assert_ne": { @@ -753,1139 +739,983 @@ "PkgPath": "core::macros", "Name": "assert_ne", "File": "mod.rs", - "Line": 71, - "StartOffset": -1, - "EndOffset": 4838, + "Line": 70, + "StartOffset": 2640, + "EndOffset": 4846, "Content": "/// Asserts that two expressions are not equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_ne!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_ne!`]: crate::debug_assert_ne\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// assert_ne!(a, b);\n///\n/// assert_ne!(a, b, \"we are testing that the values are not equal\");\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_ne_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_ne {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026($left), \u0026($right)) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" }, - "autodiff": { + "cfg_match": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "autodiff", + "Name": "cfg_match", "File": "mod.rs", - "Line": 1607, - "StartOffset": 56722, - "EndOffset": 57567, - "Content": "/// Automatic Differentiation macro which allows generating a new function to compute\n /// the derivative of a given function. It may only be applied to a function.\n /// The expected usage syntax is\n /// `#[autodiff(NAME, MODE, INPUT_ACTIVITIES, OUTPUT_ACTIVITY)]`\n /// where:\n /// NAME is a string that represents a valid function name.\n /// MODE is any of Forward, Reverse, ForwardFirst, ReverseFirst.\n /// INPUT_ACTIVITIES consists of one valid activity for each input parameter.\n /// OUTPUT_ACTIVITY must not be set if we implicitly return nothing (or explicitly return\n /// `-\u003e ()`). Otherwise it must be set to one of the allowed activities.\n #[unstable(feature = \"autodiff\", issue = \"124509\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro autodiff($item:item) {\n /* compiler built-in */\n }" + "Line": 198, + "StartOffset": 7582, + "EndOffset": 10377, + "Content": "/// A macro for defining `#[cfg]` match-like statements.\n///\n/// It is similar to the `if/elif` C preprocessor macro by allowing definition of a cascade of\n/// `#[cfg]` cases, emitting the implementation which matches first.\n///\n/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code\n/// without having to rewrite each clause multiple times.\n///\n/// Trailing `_` wildcard match arms are **optional** and they indicate a fallback branch when\n/// all previous declarations do not evaluate to true.\n///\n/// # Example\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// cfg_match! {\n/// cfg(unix) =\u003e {\n/// fn foo() { /* unix specific functionality */ }\n/// }\n/// cfg(target_pointer_width = \"32\") =\u003e {\n/// fn foo() { /* non-unix, 32-bit functionality */ }\n/// }\n/// _ =\u003e {\n/// fn foo() { /* fallback implementation */ }\n/// }\n/// }\n/// ```\n#[cfg(bootstrap)]\n#[unstable(feature = \"cfg_match\", issue = \"115585\")]\n#[rustc_diagnostic_item = \"cfg_match\"]\npub macro cfg_match {\n // with a final wildcard\n (\n $(cfg($initial_meta:meta) =\u003e { $($initial_tokens:tt)* })+\n _ =\u003e { $($extra_tokens:tt)* }\n ) =\u003e {\n cfg_match! {\n @__items ();\n $((($initial_meta) ($($initial_tokens)*)),)+\n (() ($($extra_tokens)*)),\n }\n },\n\n // without a final wildcard\n (\n $(cfg($extra_meta:meta) =\u003e { $($extra_tokens:tt)* })*\n ) =\u003e {\n cfg_match! {\n @__items ();\n $((($extra_meta) ($($extra_tokens)*)),)*\n }\n },\n\n // Internal and recursive macro to emit all the items\n //\n // Collects all the previous cfgs in a list at the beginning, so they can be\n // negated. After the semicolon is all the remaining items.\n (@__items ($($_:meta,)*);) =\u003e {},\n (\n @__items ($($no:meta,)*);\n (($($yes:meta)?) ($($tokens:tt)*)),\n $($rest:tt,)*\n ) =\u003e {\n // Emit all items within one block, applying an appropriate #[cfg]. The\n // #[cfg] will require all `$yes` matchers specified and must also negate\n // all previous matchers.\n #[cfg(all(\n $($yes,)?\n not(any($($no),*))\n ))]\n cfg_match! { @__identity $($tokens)* }\n\n // Recurse to emit all other items in `$rest`, and when we do so add all\n // our `$yes` matchers to the list of `$no` matchers as future emissions\n // will have to negate everything we just matched as well.\n cfg_match! {\n @__items ($($no,)* $($yes,)?);\n $($rest,)*\n }\n },\n\n // Internal macro to make __apply work out right for different match types,\n // because of how macros match/expand stuff.\n (@__identity $($tokens:tt)*) =\u003e {\n $($tokens)*\n }\n}" }, - "bench": { + "debug_assert": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "bench", + "Name": "debug_assert", "File": "mod.rs", - "Line": 1745, - "StartOffset": 61644, - "EndOffset": 62027, - "Content": "/// Attribute macro applied to a function to turn it into a benchmark test.\n #[unstable(\n feature = \"test\",\n issue = \"50297\",\n soft,\n reason = \"`bench` is a part of custom test frameworks which are unstable\"\n )]\n #[allow_internal_unstable(test, rustc_attrs, coverage_attribute)]\n #[rustc_builtin_macro]\n pub macro bench($item:item) {\n /* compiler built-in */\n }" + "Line": 349, + "StartOffset": 12102, + "EndOffset": 14084, + "Content": "/// Asserts that a boolean expression is `true` at runtime.\n///\n/// This will invoke the [`panic!`] macro if the provided expression cannot be\n/// evaluated to `true` at runtime.\n///\n/// Like [`assert!`], this macro also has a second version, where a custom panic\n/// message can be provided.\n///\n/// # Uses\n///\n/// Unlike [`assert!`], `debug_assert!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert!` is always type checked.\n///\n/// An unchecked assertion allows a program in an inconsistent state to keep\n/// running, which might have unexpected consequences but does not introduce\n/// unsafety as long as this only happens in safe code. The performance cost\n/// of assertions, however, is not measurable in general. Replacing [`assert!`]\n/// with `debug_assert!` is thus only encouraged after thorough profiling, and\n/// more importantly, only in safe code!\n///\n/// # Examples\n///\n/// ```\n/// // the panic message for these assertions is the stringified value of the\n/// // expression given.\n/// debug_assert!(true);\n///\n/// fn some_expensive_computation() -\u003e bool { true } // a very simple function\n/// debug_assert!(some_expensive_computation());\n///\n/// // assert with a custom message\n/// let x = true;\n/// debug_assert!(x, \"x wasn't true!\");\n///\n/// let a = 3; let b = 27;\n/// debug_assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_diagnostic_item = \"debug_assert_macro\"]\n#[allow_internal_unstable(edition_panic)]\nmacro_rules! debug_assert {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert!($($arg)*);\n }\n };\n}" }, - "cfg": { + "debug_assert_eq": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "cfg", + "Name": "debug_assert_eq", "File": "mod.rs", - "Line": 1506, - "StartOffset": 52412, - "EndOffset": 53533, - "Content": "/// Evaluates boolean combinations of configuration flags at compile-time.\n ///\n /// In addition to the `#[cfg]` attribute, this macro is provided to allow\n /// boolean expression evaluation of configuration flags. This frequently\n /// leads to less duplicated code.\n ///\n /// The syntax given to this macro is the same syntax as the [`cfg`]\n /// attribute.\n ///\n /// `cfg!`, unlike `#[cfg]`, does not remove any code and only evaluates to true or false. For\n /// example, all blocks in an if/else expression need to be valid when `cfg!` is used for\n /// the condition, regardless of what `cfg!` is evaluating.\n ///\n /// [`cfg`]: ../reference/conditional-compilation.html#the-cfg-attribute\n ///\n /// # Examples\n ///\n /// ```\n /// let my_directory = if cfg!(windows) {\n /// \"windows-specific-directory\"\n /// } else {\n /// \"unix-directory\"\n /// };\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! cfg {\n ($($cfg:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" + "Line": 402, + "StartOffset": 14086, + "EndOffset": 15111, + "Content": "/// Asserts that two expressions are equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_eq!`], `debug_assert_eq!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_eq!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_eq!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// debug_assert_eq!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_eq_macro\")]\nmacro_rules! debug_assert_eq {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_eq!($($arg)*);\n }\n };\n}" }, - "cfg_accessible": { + "debug_assert_matches": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "cfg_accessible", + "Name": "debug_assert_matches", "File": "mod.rs", - "Line": 1816, - "StartOffset": 64283, - "EndOffset": 64599, - "Content": "/// Keeps the item it's applied to if the passed path is accessible, and removes it otherwise.\n #[unstable(\n feature = \"cfg_accessible\",\n issue = \"64797\",\n reason = \"`cfg_accessible` is not fully implemented\"\n )]\n #[rustc_builtin_macro]\n pub macro cfg_accessible($item:item) {\n /* compiler built-in */\n }" + "Line": 462, + "StartOffset": 16145, + "EndOffset": 18362, + "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `debug_assert!(matches!(value, pattern))`, because it can\n/// print the debug representation of the actual value shape that did not meet expectations. In\n/// contrast, using [`debug_assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// Unlike [`assert_matches!`], `debug_assert_matches!` statements are only enabled in non optimized\n/// builds by default. An optimized build will not execute `debug_assert_matches!` statements unless\n/// `-C debug-assertions` is passed to the compiler. This makes `debug_assert_matches!` useful for\n/// checks that are too expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_matches!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::debug_assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// debug_assert_matches!(a, Some(_));\n/// debug_assert_matches!(b, Some(_));\n///\n/// debug_assert_matches!(a, Some(345));\n/// debug_assert_matches!(a, Some(345) | None);\n///\n/// // debug_assert_matches!(a, None); // panics\n/// // debug_assert_matches!(b, Some(345)); // panics\n/// // debug_assert_matches!(b, Some(345) | None); // panics\n///\n/// debug_assert_matches!(a, Some(x) if x \u003e 100);\n/// // debug_assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(assert_matches)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro debug_assert_matches($($arg:tt)*) {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_matches::assert_matches!($($arg)*);\n }\n}" }, - "cfg_eval": { + "debug_assert_ne": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "cfg_eval", + "Name": "debug_assert_ne", "File": "mod.rs", - "Line": 1827, - "StartOffset": 64636, - "EndOffset": 64940, - "Content": "/// Expands all `#[cfg]` and `#[cfg_attr]` attributes in the code fragment it's applied to.\n #[unstable(\n feature = \"cfg_eval\",\n issue = \"82679\",\n reason = \"`cfg_eval` is a recently implemented feature\"\n )]\n #[rustc_builtin_macro]\n pub macro cfg_eval($($tt:tt)*) {\n /* compiler built-in */\n }" + "Line": 432, + "StartOffset": 15113, + "EndOffset": 16143, + "Content": "/// Asserts that two expressions are not equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_ne!`], `debug_assert_ne!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_ne!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_ne!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// debug_assert_ne!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_ne_macro\")]\nmacro_rules! debug_assert_ne {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_ne!($($arg)*);\n }\n };\n}" }, - "cfg_match": { + "matches": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "cfg_match", + "Name": "matches", "File": "mod.rs", - "Line": 288, - "StartOffset": -1, - "EndOffset": 12092, - "Content": "/// A macro for defining `#[cfg]` match-like statements.\n///\n/// It is similar to the `if/elif` C preprocessor macro by allowing definition of a cascade of\n/// `#[cfg]` cases, emitting the implementation which matches first.\n///\n/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code\n/// without having to rewrite each clause multiple times.\n///\n/// Trailing `_` wildcard match arms are **optional** and they indicate a fallback branch when\n/// all previous declarations do not evaluate to true.\n///\n/// # Example\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// cfg_match! {\n/// unix =\u003e {\n/// fn foo() { /* unix specific functionality */ }\n/// }\n/// target_pointer_width = \"32\" =\u003e {\n/// fn foo() { /* non-unix, 32-bit functionality */ }\n/// }\n/// _ =\u003e {\n/// fn foo() { /* fallback implementation */ }\n/// }\n/// }\n/// ```\n///\n/// If desired, it is possible to return expressions through the use of surrounding braces:\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// let _some_string = cfg_match! {{\n/// unix =\u003e { \"With great power comes great electricity bills\" }\n/// _ =\u003e { \"Behind every successful diet is an unwatched pizza\" }\n/// }};\n/// ```\n#[cfg(not(bootstrap))]\n#[unstable(feature = \"cfg_match\", issue = \"115585\")]\n#[rustc_diagnostic_item = \"cfg_match\"]\npub macro cfg_match {\n ({ $($tt:tt)* }) =\u003e {{\n cfg_match! { $($tt)* }\n }},\n (_ =\u003e { $($output:tt)* }) =\u003e {\n $($output)*\n },\n (\n $cfg:meta =\u003e $output:tt\n $($( $rest:tt )+)?\n ) =\u003e {\n #[cfg($cfg)]\n cfg_match! { _ =\u003e $output }\n $(\n #[cfg(not($cfg))]\n cfg_match! { $($rest)+ }\n )?\n },\n}" + "Line": 513, + "StartOffset": 18364, + "EndOffset": 19370, + "Content": "/// Returns whether the given expression matches the provided pattern.\n///\n/// The pattern syntax is exactly the same as found in a match arm. The optional if guard can be\n/// used to add additional checks that must be true for the matched value, otherwise this macro will\n/// return `false`.\n///\n/// When testing that a value matches a pattern, it's generally preferable to use\n/// [`assert_matches!`] as it will print the debug representation of the value if the assertion\n/// fails.\n///\n/// # Examples\n///\n/// ```\n/// let foo = 'f';\n/// assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));\n///\n/// let bar = Some(4);\n/// assert!(matches!(bar, Some(x) if x \u003e 2));\n/// ```\n#[macro_export]\n#[stable(feature = \"matches_macro\", since = \"1.42.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"matches_macro\")]\nmacro_rules! matches {\n ($expression:expr, $pattern:pat $(if $guard:expr)? $(,)?) =\u003e {\n match $expression {\n $pattern $(if $guard)? =\u003e true,\n _ =\u003e false\n }\n };\n}" }, - "column": { + "panic": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "column", + "Name": "panic", "File": "mod.rs", - "Line": 1312, - "StartOffset": 45983, - "EndOffset": 47407, - "Content": "/// Expands to the column number at which it was invoked.\n ///\n /// With [`line!`] and [`file!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `u32` and is 1-based, so the first column\n /// in each line evaluates to 1, the second to 2, etc. This is consistent\n /// with error messages by common compilers or popular editors.\n /// The returned column is *not necessarily* the line of the `column!` invocation itself,\n /// but rather the first macro invocation leading up to the invocation\n /// of the `column!` macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let current_col = column!();\n /// println!(\"defined on column: {current_col}\");\n /// ```\n ///\n /// `column!` counts Unicode code points, not bytes or graphemes. As a result, the first two\n /// invocations return the same value, but the third does not.\n ///\n /// ```\n /// let a = (\"foobar\", column!()).1;\n /// let b = (\"人之初性本善\", column!()).1;\n /// let c = (\"f̅o̅o̅b̅a̅r̅\", column!()).1; // Uses combining overline (U+0305)\n ///\n /// assert_eq!(a, b);\n /// assert_ne!(b, c);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! column {\n () =\u003e {\n /* compiler built-in */\n };\n }" + "Line": 0, + "StartOffset": 0, + "EndOffset": 433, + "Content": "#[doc = include_str!(\"panic.md\")]\n#[macro_export]\n#[rustc_builtin_macro(core_panic)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"core\", since = \"1.6.0\")]\n#[rustc_diagnostic_item = \"core_panic_macro\"]\nmacro_rules! panic {\n // Expands to either `$crate::panic::panic_2015` or `$crate::panic::panic_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" }, - "compile_error": { + "r#try": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "compile_error", + "Name": "r#try", "File": "mod.rs", - "Line": 994, - "StartOffset": 33546, - "EndOffset": 35065, - "Content": "/// Causes compilation to fail with the given error message when encountered.\n ///\n /// This macro should be used when a crate uses a conditional compilation strategy to provide\n /// better error messages for erroneous conditions. It's the compiler-level form of [`panic!`],\n /// but emits an error during *compilation* rather than at *runtime*.\n ///\n /// # Examples\n ///\n /// Two such examples are macros and `#[cfg]` environments.\n ///\n /// Emit a better compiler error if a macro is passed invalid values. Without the final branch,\n /// the compiler would still emit an error, but the error's message would not mention the two\n /// valid values.\n ///\n /// ```compile_fail\n /// macro_rules! give_me_foo_or_bar {\n /// (foo) =\u003e {};\n /// (bar) =\u003e {};\n /// ($x:ident) =\u003e {\n /// compile_error!(\"This macro only accepts `foo` or `bar`\");\n /// }\n /// }\n ///\n /// give_me_foo_or_bar!(neither);\n /// // ^ will fail at compile time with message \"This macro only accepts `foo` or `bar`\"\n /// ```\n ///\n /// Emit a compiler error if one of a number of features isn't available.\n ///\n /// ```compile_fail\n /// #[cfg(not(any(feature = \"foo\", feature = \"bar\")))]\n /// compile_error!(\"Either feature \\\"foo\\\" or \\\"bar\\\" must be enabled for this crate.\");\n /// ```\n #[stable(feature = \"compile_error_macro\", since = \"1.20.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! compile_error {\n ($msg:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "Line": 544, + "StartOffset": 19372, + "EndOffset": 22027, + "Content": "/// Unwraps a result or propagates its error.\n///\n/// The [`?` operator][propagating-errors] was added to replace `try!`\n/// and should be used instead. Furthermore, `try` is a reserved word\n/// in Rust 2018, so if you must use it, you will need to use the\n/// [raw-identifier syntax][ris]: `r#try`.\n///\n/// [propagating-errors]: https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#a-shortcut-for-propagating-errors-the--operator\n/// [ris]: https://doc.rust-lang.org/nightly/rust-by-example/compatibility/raw_identifiers.html\n///\n/// `try!` matches the given [`Result`]. In case of the `Ok` variant, the\n/// expression has the value of the wrapped value.\n///\n/// In case of the `Err` variant, it retrieves the inner error. `try!` then\n/// performs conversion using `From`. This provides automatic conversion\n/// between specialized errors and more general ones. The resulting\n/// error is then immediately returned.\n///\n/// Because of the early return, `try!` can only be used in functions that\n/// return [`Result`].\n///\n/// # Examples\n///\n/// ```\n/// use std::io;\n/// use std::fs::File;\n/// use std::io::prelude::*;\n///\n/// enum MyError {\n/// FileWriteError\n/// }\n///\n/// impl From\u003cio::Error\u003e for MyError {\n/// fn from(e: io::Error) -\u003e MyError {\n/// MyError::FileWriteError\n/// }\n/// }\n///\n/// // The preferred method of quick returning Errors\n/// fn write_to_file_question() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = File::create(\"my_best_friends.txt\")?;\n/// file.write_all(b\"This is a list of my best friends.\")?;\n/// Ok(())\n/// }\n///\n/// // The previous method of quick returning Errors\n/// fn write_to_file_using_try() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// r#try!(file.write_all(b\"This is a list of my best friends.\"));\n/// Ok(())\n/// }\n///\n/// // This is equivalent to:\n/// fn write_to_file_using_match() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// match file.write_all(b\"This is a list of my best friends.\") {\n/// Ok(v) =\u003e v,\n/// Err(e) =\u003e return Err(From::from(e)),\n/// }\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[deprecated(since = \"1.39.0\", note = \"use the `?` operator instead\")]\n#[doc(alias = \"?\")]\nmacro_rules! r#try {\n ($expr:expr $(,)?) =\u003e {\n match $expr {\n $crate::result::Result::Ok(val) =\u003e val,\n $crate::result::Result::Err(err) =\u003e {\n return $crate::result::Result::Err($crate::convert::From::from(err));\n }\n }\n };\n}" }, - "concat": { + "todo": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "concat", + "Name": "todo", "File": "mod.rs", - "Line": 1263, - "StartOffset": 44282, - "EndOffset": 44934, - "Content": "/// Concatenates literals into a static string slice.\n ///\n /// This macro takes any number of comma-separated literals, yielding an\n /// expression of type `\u0026'static str` which represents all of the literals\n /// concatenated left-to-right.\n ///\n /// Integer and floating point literals are [stringified](core::stringify) in order to be\n /// concatenated.\n ///\n /// # Examples\n ///\n /// ```\n /// let s = concat!(\"test\", 10, 'b', true);\n /// assert_eq!(s, \"test10btrue\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat {\n ($($e:expr),* $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "Line": 906, + "StartOffset": 30913, + "EndOffset": 33244, + "Content": "/// Indicates unfinished code.\n///\n/// This can be useful if you are prototyping and just\n/// want a placeholder to let your code pass type analysis.\n///\n/// The difference between [`unimplemented!`] and `todo!` is that while `todo!` conveys\n/// an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `todo!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Here's an example of some in-progress code. We have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` on one of our types, but we also want to work on\n/// just `bar()` first. In order for our code to compile, we need to implement\n/// `baz()` and `qux()`, so we can use `todo!`:\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // Let's not worry about implementing baz() for now\n/// todo!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We can add a message to todo! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not yet implemented: MyStruct is not yet quxable'\".\n/// todo!(\"MyStruct is not yet quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n///\n/// // We aren't even using baz() or qux(), so this is fine.\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"todo_macro\", since = \"1.40.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"todo_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! todo {\n () =\u003e {\n $crate::panicking::panic(\"not yet implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not yet implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" }, - "concat_bytes": { + "unimplemented": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "concat_bytes", + "Name": "unimplemented", "File": "mod.rs", - "Line": 1236, - "StartOffset": 43372, - "EndOffset": 44211, - "Content": "/// Concatenates literals into a byte slice.\n ///\n /// This macro takes any number of comma-separated literals, and concatenates them all into\n /// one, yielding an expression of type `\u0026[u8; _]`, which represents all of the literals\n /// concatenated left-to-right. The literals passed can be any combination of:\n ///\n /// - byte literals (`b'r'`)\n /// - byte strings (`b\"Rust\"`)\n /// - arrays of bytes/numbers (`[b'A', 66, b'C']`)\n ///\n /// # Examples\n ///\n /// ```\n /// #![feature(concat_bytes)]\n ///\n /// # fn main() {\n /// let s: \u0026[u8; 6] = concat_bytes!(b'A', b\"BC\", [68, b'E', 70]);\n /// assert_eq!(s, b\"ABCDEF\");\n /// # }\n /// ```\n #[unstable(feature = \"concat_bytes\", issue = \"87555\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat_bytes {\n ($($e:literal),+ $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "Line": 819, + "StartOffset": 28167, + "EndOffset": 30911, + "Content": "/// Indicates unimplemented code by panicking with a message of \"not implemented\".\n///\n/// This allows your code to type-check, which is useful if you are prototyping or\n/// implementing a trait that requires multiple methods which you don't plan to use all of.\n///\n/// The difference between `unimplemented!` and [`todo!`] is that while `todo!`\n/// conveys an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unimplemented!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// [`todo!`]: crate::todo\n///\n/// # Examples\n///\n/// Say we have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` for 'MyStruct', but for some reason it only makes sense\n/// to implement the `bar()` function. `baz()` and `qux()` will still need to be defined\n/// in our implementation of `Foo`, but we can use `unimplemented!` in their definitions\n/// to allow our code to compile.\n///\n/// We still want to have our program stop running if the unimplemented methods are\n/// reached.\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // It makes no sense to `baz` a `MyStruct`, so we have no logic here\n/// // at all.\n/// // This will display \"thread 'main' panicked at 'not implemented'\".\n/// unimplemented!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We have some logic here,\n/// // We can add a message to unimplemented! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not implemented: MyStruct isn't quxable'\".\n/// unimplemented!(\"MyStruct isn't quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unimplemented_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! unimplemented {\n () =\u003e {\n $crate::panicking::panic(\"not implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" }, - "concat_idents": { + "unreachable": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "concat_idents", + "Name": "unreachable", "File": "mod.rs", - "Line": 1201, - "StartOffset": 42140, - "EndOffset": 43303, - "Content": "/// Concatenates identifiers into one identifier.\n ///\n /// This macro takes any number of comma-separated identifiers, and\n /// concatenates them all into one, yielding an expression which is a new\n /// identifier. Note that hygiene makes it such that this macro cannot\n /// capture local variables. Also, as a general rule, macros are only\n /// allowed in item, statement or expression position. That means while\n /// you may use this macro for referring to existing variables, functions or\n /// modules etc, you cannot define a new one with it.\n ///\n /// # Examples\n ///\n /// ```\n /// #![feature(concat_idents)]\n ///\n /// # fn main() {\n /// fn foobar() -\u003e u32 { 23 }\n ///\n /// let f = concat_idents!(foo, bar);\n /// println!(\"{}\", f());\n ///\n /// // fn concat_idents!(new, fun, name) { } // not usable in this way!\n /// # }\n /// ```\n #[unstable(\n feature = \"concat_idents\",\n issue = \"29599\",\n reason = \"`concat_idents` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! concat_idents {\n ($($e:ident),+ $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "Line": 754, + "StartOffset": 26126, + "EndOffset": 28165, + "Content": "/// Indicates unreachable code.\n///\n/// This is useful any time that the compiler can't determine that some code is unreachable. For\n/// example:\n///\n/// * Match arms with guard conditions.\n/// * Loops that dynamically terminate.\n/// * Iterators that dynamically terminate.\n///\n/// If the determination that the code is unreachable proves incorrect, the\n/// program immediately terminates with a [`panic!`].\n///\n/// The unsafe counterpart of this macro is the [`unreachable_unchecked`] function, which\n/// will cause undefined behavior if the code is reached.\n///\n/// [`unreachable_unchecked`]: crate::hint::unreachable_unchecked\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unreachable!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Match arms:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn foo(x: Option\u003ci32\u003e) {\n/// match x {\n/// Some(n) if n \u003e= 0 =\u003e println!(\"Some(Non-negative)\"),\n/// Some(n) if n \u003c 0 =\u003e println!(\"Some(Negative)\"),\n/// Some(_) =\u003e unreachable!(), // compile error if commented out\n/// None =\u003e println!(\"None\")\n/// }\n/// }\n/// ```\n///\n/// Iterators:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn divide_by_three(x: u32) -\u003e u32 { // one of the poorest implementations of x/3\n/// for i in 0.. {\n/// if 3*i \u003c i { panic!(\"u32 overflow\"); }\n/// if x \u003c 3*i { return i-1; }\n/// }\n/// unreachable!(\"The loop should always return\");\n/// }\n/// ```\n#[macro_export]\n#[rustc_builtin_macro(unreachable)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unreachable_macro\")]\nmacro_rules! unreachable {\n // Expands to either `$crate::panic::unreachable_2015` or `$crate::panic::unreachable_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" }, - "const_format_args": { + "write": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "const_format_args", + "Name": "write", "File": "mod.rs", - "Line": 1098, - "StartOffset": 38026, - "EndOffset": 38551, - "Content": "/// Same as [`format_args`], but can be used in some const contexts.\n ///\n /// This macro is used by the panic macros for the `const_panic` feature.\n ///\n /// This macro will be removed once `format_args` is allowed in const contexts.\n #[unstable(feature = \"const_format_args\", issue = \"none\")]\n #[allow_internal_unstable(fmt_internals, const_fmt_arguments_new)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! const_format_args {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" + "Line": 621, + "StartOffset": 22029, + "EndOffset": 25045, + "Content": "/// Writes formatted data into a buffer.\n///\n/// This macro accepts a 'writer', a format string, and a list of arguments. Arguments will be\n/// formatted according to the specified format string and the result will be passed to the writer.\n/// The writer may be any value with a `write_fmt` method; generally this comes from an\n/// implementation of either the [`fmt::Write`] or the [`io::Write`] trait. The macro\n/// returns whatever the `write_fmt` method returns; commonly a [`fmt::Result`], or an\n/// [`io::Result`].\n///\n/// See [`std::fmt`] for more information on the format string syntax.\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n/// [`fmt::Write`]: crate::fmt::Write\n/// [`io::Write`]: ../std/io/trait.Write.html\n/// [`fmt::Result`]: crate::fmt::Result\n/// [`io::Result`]: ../std/io/type.Result.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::Write;\n///\n/// fn main() -\u003e std::io::Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// write!(\u0026mut w, \"test\")?;\n/// write!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(w, b\"testformatted arguments\");\n/// Ok(())\n/// }\n/// ```\n///\n/// A module can import both `std::fmt::Write` and `std::io::Write` and call `write!` on objects\n/// implementing either, as objects do not typically implement both. However, the module must\n/// avoid conflict between the trait names, such as by importing them as `_` or otherwise renaming\n/// them:\n///\n/// ```\n/// use std::fmt::Write as _;\n/// use std::io::Write as _;\n///\n/// fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n/// let mut s = String::new();\n/// let mut v = Vec::new();\n///\n/// write!(\u0026mut s, \"{} {}\", \"abc\", 123)?; // uses fmt::Write::write_fmt\n/// write!(\u0026mut v, \"s = {:?}\", s)?; // uses io::Write::write_fmt\n/// assert_eq!(v, b\"s = \\\"abc 123\\\"\");\n/// Ok(())\n/// }\n/// ```\n///\n/// If you also need the trait names themselves, such as to implement one or both on your types,\n/// import the containing module and then name them with a prefix:\n///\n/// ```\n/// # #![allow(unused_imports)]\n/// use std::fmt::{self, Write as _};\n/// use std::io::{self, Write as _};\n///\n/// struct Example;\n///\n/// impl fmt::Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n/// ```\n///\n/// Note: This macro can be used in `no_std` setups as well.\n/// In a `no_std` setup you are responsible for the implementation details of the components.\n///\n/// ```no_run\n/// use core::fmt::Write;\n///\n/// struct Example;\n///\n/// impl Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n///\n/// let mut m = Example{};\n/// write!(\u0026mut m, \"Hello World\").expect(\"Not written\");\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"write_macro\")]\nmacro_rules! write {\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args!($($arg)*))\n };\n}" }, - "contracts_ensures": { + "writeln": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", "PkgPath": "core::macros", - "Name": "contracts_ensures", + "Name": "writeln", "File": "mod.rs", - "Line": 1780, - "StartOffset": 62845, - "EndOffset": 63317, - "Content": "/// Attribute macro applied to a function to give it a post-condition.\n ///\n /// The attribute carries an argument token-tree which is\n /// eventually parsed as a unary closure expression that is\n /// invoked on a reference to the return value.\n #[cfg(not(bootstrap))]\n #[unstable(feature = \"contracts\", issue = \"128044\")]\n #[allow_internal_unstable(contracts_internals)]\n #[rustc_builtin_macro]\n pub macro contracts_ensures($item:item) {\n /* compiler built-in */\n }" - }, - "contracts_requires": { + "Line": 716, + "StartOffset": 25047, + "EndOffset": 26124, + "Content": "/// Writes formatted data into a buffer, with a newline appended.\n///\n/// On all platforms, the newline is the LINE FEED character (`\\n`/`U+000A`) alone\n/// (no additional CARRIAGE RETURN (`\\r`/`U+000D`).\n///\n/// For more information, see [`write!`]. For information on the format string syntax, see\n/// [`std::fmt`].\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::{Write, Result};\n///\n/// fn main() -\u003e Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// writeln!(\u0026mut w)?;\n/// writeln!(\u0026mut w, \"test\")?;\n/// writeln!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(\u0026w[..], \"\\ntest\\nformatted arguments\\n\".as_bytes());\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"writeln_macro\")]\n#[allow_internal_unstable(format_args_nl)]\nmacro_rules! writeln {\n ($dst:expr $(,)?) =\u003e {\n $crate::write!($dst, \"\\n\")\n };\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args_nl!($($arg)*))\n };\n}" + } + }, + "Types": {}, + "Vars": {} + }, + "core::marker": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::marker", + "Functions": {}, + "Types": { + "PhantomData": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "", - "PkgPath": "core::macros", - "Name": "contracts_requires", - "File": "mod.rs", - "Line": 1793, - "StartOffset": 63354, - "EndOffset": 63816, - "Content": "/// Attribute macro applied to a function to give it a precondition.\n ///\n /// The attribute carries an argument token-tree which is\n /// eventually parsed as an boolean expression with access to the\n /// function's formal parameters\n #[cfg(not(bootstrap))]\n #[unstable(feature = \"contracts\", issue = \"128044\")]\n #[allow_internal_unstable(contracts_internals)]\n #[rustc_builtin_macro]\n pub macro contracts_requires($item:item) {\n /* compiler built-in */\n }" + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "marker.rs", + "Line": 773, + "StartOffset": 29503, + "EndOffset": 29514, + "Content": "PhantomData" }, - "debug_assert": { + "Send": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert", - "File": "mod.rs", - "Line": 350, - "StartOffset": -1, - "EndOffset": 14076, - "Content": "/// Asserts that a boolean expression is `true` at runtime.\n///\n/// This will invoke the [`panic!`] macro if the provided expression cannot be\n/// evaluated to `true` at runtime.\n///\n/// Like [`assert!`], this macro also has a second version, where a custom panic\n/// message can be provided.\n///\n/// # Uses\n///\n/// Unlike [`assert!`], `debug_assert!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert!` is always type checked.\n///\n/// An unchecked assertion allows a program in an inconsistent state to keep\n/// running, which might have unexpected consequences but does not introduce\n/// unsafety as long as this only happens in safe code. The performance cost\n/// of assertions, however, is not measurable in general. Replacing [`assert!`]\n/// with `debug_assert!` is thus only encouraged after thorough profiling, and\n/// more importantly, only in safe code!\n///\n/// # Examples\n///\n/// ```\n/// // the panic message for these assertions is the stringified value of the\n/// // expression given.\n/// debug_assert!(true);\n///\n/// fn some_expensive_computation() -\u003e bool { true } // a very simple function\n/// debug_assert!(some_expensive_computation());\n///\n/// // assert with a custom message\n/// let x = true;\n/// debug_assert!(x, \"x wasn't true!\");\n///\n/// let a = 3; let b = 27;\n/// debug_assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_diagnostic_item = \"debug_assert_macro\"]\n#[allow_internal_unstable(edition_panic)]\nmacro_rules! debug_assert {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert!($($arg)*);\n }\n };\n}" + "PkgPath": "core::marker", + "Name": "Send", + "File": "marker.rs", + "Line": 89, + "StartOffset": 3423, + "EndOffset": 3427, + "Content": "Send" }, - "debug_assert_eq": { + "Sized": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_eq", - "File": "mod.rs", - "Line": 403, - "StartOffset": -1, - "EndOffset": 15103, - "Content": "/// Asserts that two expressions are equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_eq!`], `debug_assert_eq!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_eq!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_eq!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// debug_assert_eq!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_eq_macro\")]\nmacro_rules! debug_assert_eq {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_eq!($($arg)*);\n }\n };\n}" + "PkgPath": "core::marker", + "Name": "Sized", + "File": "marker.rs", + "Line": 153, + "StartOffset": 5644, + "EndOffset": 5649, + "Content": "Sized" }, - "debug_assert_matches": { + "Sync": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_matches", - "File": "mod.rs", - "Line": 463, - "StartOffset": -1, - "EndOffset": 18355, - "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `debug_assert!(matches!(value, pattern))`, because it can\n/// print the debug representation of the actual value shape that did not meet expectations. In\n/// contrast, using [`debug_assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// Unlike [`assert_matches!`], `debug_assert_matches!` statements are only enabled in non optimized\n/// builds by default. An optimized build will not execute `debug_assert_matches!` statements unless\n/// `-C debug-assertions` is passed to the compiler. This makes `debug_assert_matches!` useful for\n/// checks that are too expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_matches!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::debug_assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// debug_assert_matches!(a, Some(_));\n/// debug_assert_matches!(b, Some(_));\n///\n/// debug_assert_matches!(a, Some(345));\n/// debug_assert_matches!(a, Some(345) | None);\n///\n/// // debug_assert_matches!(a, None); // panics\n/// // debug_assert_matches!(b, Some(345)); // panics\n/// // debug_assert_matches!(b, Some(345) | None); // panics\n///\n/// debug_assert_matches!(a, Some(x) if x \u003e 100);\n/// // debug_assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(assert_matches)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro debug_assert_matches($($arg:tt)*) {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_matches::assert_matches!($($arg)*);\n }\n}" - }, - "debug_assert_ne": { + "PkgPath": "core::marker", + "Name": "Sync", + "File": "marker.rs", + "Line": 618, + "StartOffset": 24196, + "EndOffset": 24200, + "Content": "Sync" + } + }, + "Vars": {} + }, + "core::ops::deref": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::ops::deref", + "Functions": {}, + "Types": { + "Deref": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_ne", - "File": "mod.rs", - "Line": 433, - "StartOffset": -1, - "EndOffset": 16135, - "Content": "/// Asserts that two expressions are not equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_ne!`], `debug_assert_ne!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_ne!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_ne!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// debug_assert_ne!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_ne_macro\")]\nmacro_rules! debug_assert_ne {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_ne!($($arg)*);\n }\n };\n}" + "PkgPath": "core::ops::deref", + "Name": "Deref", + "File": "deref.rs", + "Line": 137, + "StartOffset": 6162, + "EndOffset": 6167, + "Content": "Deref" }, - "deref": { + "DerefMut": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "deref", - "File": "mod.rs", - "Line": 1850, - "StartOffset": 65337, - "EndOffset": 65608, - "Content": "/// Unstable placeholder for deref patterns.\n #[allow_internal_unstable(builtin_syntax)]\n #[unstable(\n feature = \"deref_patterns\",\n issue = \"87121\",\n reason = \"placeholder syntax for deref patterns\"\n )]\n pub macro deref($pat:pat) {\n builtin # deref($pat)\n }" - }, - "derive": { + "PkgPath": "core::ops::deref", + "Name": "DerefMut", + "File": "deref.rs", + "Line": 267, + "StartOffset": 10896, + "EndOffset": 10904, + "Content": "DerefMut" + } + }, + "Vars": {} + }, + "core::ops::function": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::ops::function", + "Functions": {}, + "Types": { + "FnOnce": { + "Exported": false, + "TypeKind": "interface", + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "function.rs", + "Line": 241, + "StartOffset": 8779, + "EndOffset": 8785, + "Content": "FnOnce" + } + }, + "Vars": {} + }, + "core::option": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::option", + "Functions": { + "and_then": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "derive", - "File": "mod.rs", - "Line": 1710, - "StartOffset": 60479, - "EndOffset": 60772, - "Content": "/// Attribute macro used to apply derive macros.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/derive.html\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n pub macro derive($item:item) {\n /* compiler built-in */\n }" + "PkgPath": "core::option", + "Name": "and_then", + "File": "option.rs", + "Line": 1446, + "StartOffset": 51579, + "EndOffset": 51587, + "Content": "and_then" }, - "derive_const": { + "as_deref": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "derive_const", - "File": "mod.rs", - "Line": 1721, - "StartOffset": 60809, - "EndOffset": 61167, - "Content": "/// Attribute macro used to apply derive macros for implementing traits\n /// in a const context.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/derive.html\n #[unstable(feature = \"derive_const\", issue = \"none\")]\n #[rustc_builtin_macro]\n pub macro derive_const($item:item) {\n /* compiler built-in */\n }" + "PkgPath": "core::option", + "Name": "as_deref", + "File": "option.rs", + "Line": 1302, + "StartOffset": 47161, + "EndOffset": 47169, + "Content": "as_deref" }, - "env": { + "as_mut": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "env", - "File": "mod.rs", - "Line": 1127, - "StartOffset": 39142, - "EndOffset": 40630, - "Content": "/// Inspects an environment variable at compile time.\n ///\n /// This macro will expand to the value of the named environment variable at\n /// compile time, yielding an expression of type `\u0026'static str`. Use\n /// [`std::env::var`] instead if you want to read the value at runtime.\n ///\n /// [`std::env::var`]: ../std/env/fn.var.html\n ///\n /// If the environment variable is not defined, then a compilation error\n /// will be emitted. To not emit a compile error, use the [`option_env!`]\n /// macro instead. A compilation error will also be emitted if the\n /// environment variable is not a valid Unicode string.\n ///\n /// # Examples\n ///\n /// ```\n /// let path: \u0026'static str = env!(\"PATH\");\n /// println!(\"the $PATH variable at the time of compiling was: {path}\");\n /// ```\n ///\n /// You can customize the error message by passing a string as the second\n /// parameter:\n ///\n /// ```compile_fail\n /// let doc: \u0026'static str = env!(\"documentation\", \"what's that?!\");\n /// ```\n ///\n /// If the `documentation` environment variable is not defined, you'll get\n /// the following error:\n ///\n /// ```text\n /// error: what's that?!\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"env_macro\"] // useful for external lints\n macro_rules! env {\n ($name:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n ($name:expr, $error_msg:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "PkgPath": "core::option", + "Name": "as_mut", + "File": "option.rs", + "Line": 727, + "StartOffset": 27669, + "EndOffset": 27675, + "Content": "as_mut" }, - "file": { + "as_ref": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "file", - "File": "mod.rs", - "Line": 1351, - "StartOffset": 47423, - "EndOffset": 48201, - "Content": "/// Expands to the file name in which it was invoked.\n ///\n /// With [`line!`] and [`column!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `\u0026'static str`, and the returned file\n /// is not the invocation of the `file!` macro itself, but rather the\n /// first macro invocation leading up to the invocation of the `file!`\n /// macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let this_file = file!();\n /// println!(\"defined in file: {this_file}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! file {\n () =\u003e {\n /* compiler built-in */\n };\n }" + "PkgPath": "core::option", + "Name": "as_ref", + "File": "option.rs", + "Line": 705, + "StartOffset": 27113, + "EndOffset": 27119, + "Content": "as_ref" }, - "format_args": { + "clone": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "format_args", - "File": "mod.rs", - "Line": 1034, - "StartOffset": 35130, - "EndOffset": 37953, - "Content": "/// Constructs parameters for the other string-formatting macros.\n ///\n /// This macro functions by taking a formatting string literal containing\n /// `{}` for each additional argument passed. `format_args!` prepares the\n /// additional parameters to ensure the output can be interpreted as a string\n /// and canonicalizes the arguments into a single type. Any value that implements\n /// the [`Display`] trait can be passed to `format_args!`, as can any\n /// [`Debug`] implementation be passed to a `{:?}` within the formatting string.\n ///\n /// This macro produces a value of type [`fmt::Arguments`]. This value can be\n /// passed to the macros within [`std::fmt`] for performing useful redirection.\n /// All other formatting macros ([`format!`], [`write!`], [`println!`], etc) are\n /// proxied through this one. `format_args!`, unlike its derived macros, avoids\n /// heap allocations.\n ///\n /// You can use the [`fmt::Arguments`] value that `format_args!` returns\n /// in `Debug` and `Display` contexts as seen below. The example also shows\n /// that `Debug` and `Display` format to the same thing: the interpolated\n /// format string in `format_args!`.\n ///\n /// ```rust\n /// let debug = format!(\"{:?}\", format_args!(\"{} foo {:?}\", 1, 2));\n /// let display = format!(\"{}\", format_args!(\"{} foo {:?}\", 1, 2));\n /// assert_eq!(\"1 foo 2\", display);\n /// assert_eq!(display, debug);\n /// ```\n ///\n /// See [the formatting documentation in `std::fmt`](../std/fmt/index.html)\n /// for details of the macro argument syntax, and further information.\n ///\n /// [`Display`]: crate::fmt::Display\n /// [`Debug`]: crate::fmt::Debug\n /// [`fmt::Arguments`]: crate::fmt::Arguments\n /// [`std::fmt`]: ../std/fmt/index.html\n /// [`format!`]: ../std/macro.format.html\n /// [`println!`]: ../std/macro.println.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// let s = fmt::format(format_args!(\"hello {}\", \"world\"));\n /// assert_eq!(s, format!(\"hello {}\", \"world\"));\n /// ```\n ///\n /// # Lifetime limitation\n ///\n /// Except when no formatting arguments are used,\n /// the produced `fmt::Arguments` value borrows temporary values,\n /// which means it can only be used within the same expression\n /// and cannot be stored for later use.\n /// This is a known limitation, see [#92698](https://github.com/rust-lang/rust/issues/92698).\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"format_args_macro\")]\n #[allow_internal_unsafe]\n #[allow_internal_unstable(fmt_internals)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! format_args {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" + "PkgPath": "core::option", + "Name": "clone", + "File": "option.rs", + "Line": 2036, + "StartOffset": 68534, + "EndOffset": 68539, + "Content": "clone" }, - "format_args_nl": { + "get_or_insert_with": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "format_args_nl", - "File": "mod.rs", - "Line": 1112, - "StartOffset": 38624, - "EndOffset": 39069, - "Content": "/// Same as [`format_args`], but adds a newline in the end.\n #[unstable(\n feature = \"format_args_nl\",\n issue = \"none\",\n reason = \"`format_args_nl` is only for internal \\\n language use and is subject to change\"\n )]\n #[allow_internal_unstable(fmt_internals)]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! format_args_nl {\n ($fmt:expr) =\u003e {{ /* compiler built-in */ }};\n ($fmt:expr, $($args:tt)*) =\u003e {{ /* compiler built-in */ }};\n }" - }, - "global_allocator": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "global_allocator", - "File": "mod.rs", - "Line": 1770, - "StartOffset": 62449, - "EndOffset": 62808, - "Content": "/// Attribute macro applied to a static to register it as a global allocator.\n ///\n /// See also [`std::alloc::GlobalAlloc`](../../../std/alloc/trait.GlobalAlloc.html).\n #[stable(feature = \"global_allocator\", since = \"1.28.0\")]\n #[allow_internal_unstable(rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro global_allocator($item:item) {\n /* compiler built-in */\n }" - }, - "include": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "include", - "File": "mod.rs", - "Line": 1539, - "StartOffset": 53549, - "EndOffset": 56656, - "Content": "/// Parses a file as an expression or an item according to the context.\n ///\n /// **Warning**: For multi-file Rust projects, the `include!` macro is probably not what you\n /// are looking for. Usually, multi-file Rust projects use\n /// [modules](https://doc.rust-lang.org/reference/items/modules.html). Multi-file projects and\n /// modules are explained in the Rust-by-Example book\n /// [here](https://doc.rust-lang.org/rust-by-example/mod/split.html) and the module system is\n /// explained in the Rust Book\n /// [here](https://doc.rust-lang.org/book/ch07-02-defining-modules-to-control-scope-and-privacy.html).\n ///\n /// The included file is placed in the surrounding code\n /// [unhygienically](https://doc.rust-lang.org/reference/macros-by-example.html#hygiene). If\n /// the included file is parsed as an expression and variables or functions share names across\n /// both files, it could result in variables or functions being different from what the\n /// included file expected.\n ///\n /// The included file is located relative to the current file (similarly to how modules are\n /// found). The provided path is interpreted in a platform-specific way at compile time. So,\n /// for instance, an invocation with a Windows path containing backslashes `\\` would not\n /// compile correctly on Unix.\n ///\n /// # Uses\n ///\n /// The `include!` macro is primarily used for two purposes. It is used to include\n /// documentation that is written in a separate file and it is used to include [build artifacts\n /// usually as a result from the `build.rs`\n /// script](https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script).\n ///\n /// When using the `include` macro to include stretches of documentation, remember that the\n /// included file still needs to be a valid Rust syntax. It is also possible to\n /// use the [`include_str`] macro as `#![doc = include_str!(\"...\")]` (at the module level) or\n /// `#[doc = include_str!(\"...\")]` (at the item level) to include documentation from a plain\n /// text or markdown file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following contents:\n ///\n /// File 'monkeys.in':\n ///\n /// ```ignore (only-for-syntax-highlight)\n /// ['🙈', '🙊', '🙉']\n /// .iter()\n /// .cycle()\n /// .take(6)\n /// .collect::\u003cString\u003e()\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let my_string = include!(\"monkeys.in\");\n /// assert_eq!(\"🙈🙊🙉🙈🙊🙉\", my_string);\n /// println!(\"{my_string}\");\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print\n /// \"🙈🙊🙉🙈🙊🙉\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"include_macro\"] // useful for external lints\n macro_rules! include {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" - }, - "include_bytes": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "include_bytes", - "File": "mod.rs", - "Line": 1440, - "StartOffset": 50320, - "EndOffset": 51633, - "Content": "/// Includes a file as a reference to a byte array.\n ///\n /// The file is located relative to the current file (similarly to how\n /// modules are found). The provided path is interpreted in a platform-specific\n /// way at compile time. So, for instance, an invocation with a Windows path\n /// containing backslashes `\\` would not compile correctly on Unix.\n ///\n /// This macro will yield an expression of type `\u0026'static [u8; N]` which is\n /// the contents of the file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following\n /// contents:\n ///\n /// File 'spanish.in':\n ///\n /// ```text\n /// adiós\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let bytes = include_bytes!(\"spanish.in\");\n /// assert_eq!(bytes, b\"adi\\xc3\\xb3s\\n\");\n /// print!(\"{}\", String::from_utf8_lossy(bytes));\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print \"adiós\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"include_bytes_macro\")]\n macro_rules! include_bytes {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" - }, - "include_str": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "include_str", - "File": "mod.rs", - "Line": 1400, - "StartOffset": 48987, - "EndOffset": 50254, - "Content": "/// Includes a UTF-8 encoded file as a string.\n ///\n /// The file is located relative to the current file (similarly to how\n /// modules are found). The provided path is interpreted in a platform-specific\n /// way at compile time. So, for instance, an invocation with a Windows path\n /// containing backslashes `\\` would not compile correctly on Unix.\n ///\n /// This macro will yield an expression of type `\u0026'static str` which is the\n /// contents of the file.\n ///\n /// # Examples\n ///\n /// Assume there are two files in the same directory with the following\n /// contents:\n ///\n /// File 'spanish.in':\n ///\n /// ```text\n /// adiós\n /// ```\n ///\n /// File 'main.rs':\n ///\n /// ```ignore (cannot-doctest-external-file-dependency)\n /// fn main() {\n /// let my_str = include_str!(\"spanish.in\");\n /// assert_eq!(my_str, \"adiós\\n\");\n /// print!(\"{my_str}\");\n /// }\n /// ```\n ///\n /// Compiling 'main.rs' and running the resulting binary will print \"adiós\".\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[cfg_attr(not(test), rustc_diagnostic_item = \"include_str_macro\")]\n macro_rules! include_str {\n ($file:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" - }, - "line": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "line", - "File": "mod.rs", - "Line": 1285, - "StartOffset": 45002, - "EndOffset": 45967, - "Content": "/// Expands to the line number on which it was invoked.\n ///\n /// With [`column!`] and [`file!`], these macros provide debugging information for\n /// developers about the location within the source.\n ///\n /// The expanded expression has type `u32` and is 1-based, so the first line\n /// in each file evaluates to 1, the second to 2, etc. This is consistent\n /// with error messages by common compilers or popular editors.\n /// The returned line is *not necessarily* the line of the `line!` invocation itself,\n /// but rather the first macro invocation leading up to the invocation\n /// of the `line!` macro.\n ///\n /// # Examples\n ///\n /// ```\n /// let current_line = line!();\n /// println!(\"defined on line: {current_line}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! line {\n () =\u003e {\n /* compiler built-in */\n };\n }" - }, - "log_syntax": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "log_syntax", - "File": "mod.rs", - "Line": 1683, - "StartOffset": 59661, - "EndOffset": 60025, - "Content": "/// Prints passed tokens into the standard output.\n #[unstable(\n feature = \"log_syntax\",\n issue = \"29598\",\n reason = \"`log_syntax!` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! log_syntax {\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" - }, - "matches": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "matches", - "File": "mod.rs", - "Line": 514, - "StartOffset": -1, - "EndOffset": 19362, - "Content": "/// Returns whether the given expression matches the provided pattern.\n///\n/// The pattern syntax is exactly the same as found in a match arm. The optional if guard can be\n/// used to add additional checks that must be true for the matched value, otherwise this macro will\n/// return `false`.\n///\n/// When testing that a value matches a pattern, it's generally preferable to use\n/// [`assert_matches!`] as it will print the debug representation of the value if the assertion\n/// fails.\n///\n/// # Examples\n///\n/// ```\n/// let foo = 'f';\n/// assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));\n///\n/// let bar = Some(4);\n/// assert!(matches!(bar, Some(x) if x \u003e 2));\n/// ```\n#[macro_export]\n#[stable(feature = \"matches_macro\", since = \"1.42.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"matches_macro\")]\nmacro_rules! matches {\n ($expression:expr, $pattern:pat $(if $guard:expr)? $(,)?) =\u003e {\n match $expression {\n $pattern $(if $guard)? =\u003e true,\n _ =\u003e false\n }\n };\n}" - }, - "module_path": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "module_path", - "File": "mod.rs", - "Line": 1480, - "StartOffset": 51699, - "EndOffset": 52396, - "Content": "/// Expands to a string that represents the current module path.\n ///\n /// The current module path can be thought of as the hierarchy of modules\n /// leading back up to the crate root. The first component of the path\n /// returned is the name of the crate currently being compiled.\n ///\n /// # Examples\n ///\n /// ```\n /// mod test {\n /// pub fn foo() {\n /// assert!(module_path!().ends_with(\"test\"));\n /// }\n /// }\n ///\n /// test::foo();\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! module_path {\n () =\u003e {\n /* compiler built-in */\n };\n }" + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "option.rs", + "Line": 1690, + "StartOffset": 58420, + "EndOffset": 58438, + "Content": "get_or_insert_with" }, - "option_env": { + "is_none": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "option_env", - "File": "mod.rs", - "Line": 1169, - "StartOffset": 40713, - "EndOffset": 42074, - "Content": "/// Optionally inspects an environment variable at compile time.\n ///\n /// If the named environment variable is present at compile time, this will\n /// expand into an expression of type `Option\u003c\u0026'static str\u003e` whose value is\n /// `Some` of the value of the environment variable (a compilation error\n /// will be emitted if the environment variable is not a valid Unicode\n /// string). If the environment variable is not present, then this will\n /// expand to `None`. See [`Option\u003cT\u003e`][Option] for more information on this\n /// type. Use [`std::env::var`] instead if you want to read the value at\n /// runtime.\n ///\n /// [`std::env::var`]: ../std/env/fn.var.html\n ///\n /// A compile time error is only emitted when using this macro if the\n /// environment variable exists and is not a valid Unicode string. To also\n /// emit a compile error if the environment variable is not present, use the\n /// [`env!`] macro instead.\n ///\n /// # Examples\n ///\n /// ```\n /// let key: Option\u003c\u0026'static str\u003e = option_env!(\"SECRET_KEY\");\n /// println!(\"the secret key might be: {key:?}\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n #[rustc_diagnostic_item = \"option_env_macro\"] // useful for external lints\n macro_rules! option_env {\n ($name:expr $(,)?) =\u003e {{ /* compiler built-in */ }};\n }" + "PkgPath": "core::option", + "Name": "is_none", + "File": "option.rs", + "Line": 650, + "StartOffset": 25048, + "EndOffset": 25055, + "Content": "is_none" }, - "panic": { + "is_some": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "panic", - "File": "mod.rs", - "Line": 1, - "StartOffset": -1, - "EndOffset": 425, - "Content": "#[doc = include_str!(\"panic.md\")]\n#[macro_export]\n#[rustc_builtin_macro(core_panic)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"core\", since = \"1.6.0\")]\n#[rustc_diagnostic_item = \"core_panic_macro\"]\nmacro_rules! panic {\n // Expands to either `$crate::panic::panic_2015` or `$crate::panic::panic_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" + "PkgPath": "core::option", + "Name": "is_some", + "File": "option.rs", + "Line": 606, + "StartOffset": 23711, + "EndOffset": 23718, + "Content": "is_some" }, - "r#try": { + "map": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "r#try", - "File": "mod.rs", - "Line": 545, - "StartOffset": -1, - "EndOffset": 22019, - "Content": "/// Unwraps a result or propagates its error.\n///\n/// The [`?` operator][propagating-errors] was added to replace `try!`\n/// and should be used instead. Furthermore, `try` is a reserved word\n/// in Rust 2018, so if you must use it, you will need to use the\n/// [raw-identifier syntax][ris]: `r#try`.\n///\n/// [propagating-errors]: https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#a-shortcut-for-propagating-errors-the--operator\n/// [ris]: https://doc.rust-lang.org/nightly/rust-by-example/compatibility/raw_identifiers.html\n///\n/// `try!` matches the given [`Result`]. In case of the `Ok` variant, the\n/// expression has the value of the wrapped value.\n///\n/// In case of the `Err` variant, it retrieves the inner error. `try!` then\n/// performs conversion using `From`. This provides automatic conversion\n/// between specialized errors and more general ones. The resulting\n/// error is then immediately returned.\n///\n/// Because of the early return, `try!` can only be used in functions that\n/// return [`Result`].\n///\n/// # Examples\n///\n/// ```\n/// use std::io;\n/// use std::fs::File;\n/// use std::io::prelude::*;\n///\n/// enum MyError {\n/// FileWriteError\n/// }\n///\n/// impl From\u003cio::Error\u003e for MyError {\n/// fn from(e: io::Error) -\u003e MyError {\n/// MyError::FileWriteError\n/// }\n/// }\n///\n/// // The preferred method of quick returning Errors\n/// fn write_to_file_question() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = File::create(\"my_best_friends.txt\")?;\n/// file.write_all(b\"This is a list of my best friends.\")?;\n/// Ok(())\n/// }\n///\n/// // The previous method of quick returning Errors\n/// fn write_to_file_using_try() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// r#try!(file.write_all(b\"This is a list of my best friends.\"));\n/// Ok(())\n/// }\n///\n/// // This is equivalent to:\n/// fn write_to_file_using_match() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// match file.write_all(b\"This is a list of my best friends.\") {\n/// Ok(v) =\u003e v,\n/// Err(e) =\u003e return Err(From::from(e)),\n/// }\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[deprecated(since = \"1.39.0\", note = \"use the `?` operator instead\")]\n#[doc(alias = \"?\")]\nmacro_rules! r#try {\n ($expr:expr $(,)?) =\u003e {\n match $expr {\n $crate::result::Result::Ok(val) =\u003e val,\n $crate::result::Result::Err(err) =\u003e {\n return $crate::result::Result::Err($crate::convert::From::from(err));\n }\n }\n };\n}" + "PkgPath": "core::option", + "Name": "map", + "File": "option.rs", + "Line": 1113, + "StartOffset": 41654, + "EndOffset": 41657, + "Content": "map" }, - "stringify": { + "or_else": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "stringify", - "File": "mod.rs", - "Line": 1376, - "StartOffset": 48217, - "EndOffset": 48971, - "Content": "/// Stringifies its arguments.\n ///\n /// This macro will yield an expression of type `\u0026'static str` which is the\n /// stringification of all the tokens passed to the macro. No restrictions\n /// are placed on the syntax of the macro invocation itself.\n ///\n /// Note that the expanded results of the input tokens may change in the\n /// future. You should be careful if you rely on the output.\n ///\n /// # Examples\n ///\n /// ```\n /// let one_plus_one = stringify!(1 + 1);\n /// assert_eq!(one_plus_one, \"1 + 1\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! stringify {\n ($($t:tt)*) =\u003e {\n /* compiler built-in */\n };\n }" + "PkgPath": "core::option", + "Name": "or_else", + "File": "option.rs", + "Line": 1545, + "StartOffset": 54412, + "EndOffset": 54419, + "Content": "or_else" }, - "test": { + "take": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "test", - "File": "mod.rs", - "Line": 1733, - "StartOffset": 61204, - "EndOffset": 61607, - "Content": "/// Attribute macro applied to a function to turn it into a unit test.\n ///\n /// See [the reference] for more info.\n ///\n /// [the reference]: ../../../reference/attributes/testing.html#the-test-attribute\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[allow_internal_unstable(test, rustc_attrs, coverage_attribute)]\n #[rustc_builtin_macro]\n pub macro test($item:item) {\n /* compiler built-in */\n }" + "PkgPath": "core::option", + "Name": "take", + "File": "option.rs", + "Line": 1725, + "StartOffset": 59465, + "EndOffset": 59469, + "Content": "take" }, - "test_case": { + "unwrap": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "test_case", - "File": "mod.rs", - "Line": 1758, - "StartOffset": 62064, - "EndOffset": 62412, - "Content": "/// An implementation detail of the `#[test]` and `#[bench]` macros.\n #[unstable(\n feature = \"custom_test_frameworks\",\n issue = \"50297\",\n reason = \"custom test frameworks are an unstable feature\"\n )]\n #[allow_internal_unstable(test, rustc_attrs)]\n #[rustc_builtin_macro]\n pub macro test_case($item:item) {\n /* compiler built-in */\n }" + "PkgPath": "core::option", + "Name": "unwrap", + "File": "option.rs", + "Line": 974, + "StartOffset": 37310, + "EndOffset": 37316, + "Content": "unwrap" }, - "todo": { + "unwrap_or": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "todo", - "File": "mod.rs", - "Line": 907, - "StartOffset": -1, - "EndOffset": 33236, - "Content": "/// Indicates unfinished code.\n///\n/// This can be useful if you are prototyping and just\n/// want a placeholder to let your code pass type analysis.\n///\n/// The difference between [`unimplemented!`] and `todo!` is that while `todo!` conveys\n/// an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `todo!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Here's an example of some in-progress code. We have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` on one of our types, but we also want to work on\n/// just `bar()` first. In order for our code to compile, we need to implement\n/// `baz()` and `qux()`, so we can use `todo!`:\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // Let's not worry about implementing baz() for now\n/// todo!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We can add a message to todo! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not yet implemented: MyStruct is not yet quxable'\".\n/// todo!(\"MyStruct is not yet quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n///\n/// // We aren't even using baz() or qux(), so this is fine.\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"todo_macro\", since = \"1.40.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"todo_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! todo {\n () =\u003e {\n $crate::panicking::panic(\"not yet implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not yet implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" - }, - "trace_macros": { + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "option.rs", + "Line": 997, + "StartOffset": 38015, + "EndOffset": 38024, + "Content": "unwrap_or" + } + }, + "Types": { + "Option": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "enum", "ModPath": "", - "PkgPath": "core::macros", - "Name": "trace_macros", - "File": "mod.rs", - "Line": 1697, - "StartOffset": 60041, - "EndOffset": 60424, - "Content": "/// Enables or disables tracing functionality used for debugging other macros.\n #[unstable(\n feature = \"trace_macros\",\n issue = \"29598\",\n reason = \"`trace_macros` is not stable enough for use and is subject to change\"\n )]\n #[rustc_builtin_macro]\n #[macro_export]\n macro_rules! trace_macros {\n (true) =\u003e {{ /* compiler built-in */ }};\n (false) =\u003e {{ /* compiler built-in */ }};\n }" - }, - "type_ascribe": { + "PkgPath": "core::option", + "Name": "Option", + "File": "option.rs", + "Line": 571, + "StartOffset": 22508, + "EndOffset": 22514, + "Content": "Option" + } + }, + "Vars": {} + }, + "core::panic::unwind_safe": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::panic::unwind_safe", + "Functions": {}, + "Types": { + "UnwindSafe": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::macros", - "Name": "type_ascribe", - "File": "mod.rs", - "Line": 1838, - "StartOffset": 64977, - "EndOffset": 65289, - "Content": "/// Unstable placeholder for type ascription.\n #[allow_internal_unstable(builtin_syntax)]\n #[unstable(\n feature = \"type_ascription\",\n issue = \"23416\",\n reason = \"placeholder syntax for type ascription\"\n )]\n #[rustfmt::skip]\n pub macro type_ascribe($expr:expr, $ty:ty) {\n builtin # type_ascribe($expr, $ty)\n }" - }, - "unimplemented": { + "PkgPath": "core::panic::unwind_safe", + "Name": "UnwindSafe", + "File": "unwind_safe.rs", + "Line": 89, + "StartOffset": 4467, + "EndOffset": 4477, + "Content": "UnwindSafe" + } + }, + "Vars": {} + }, + "core::result": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::result", + "Functions": { + "ok": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "unimplemented", - "File": "mod.rs", - "Line": 820, - "StartOffset": -1, - "EndOffset": 30903, - "Content": "/// Indicates unimplemented code by panicking with a message of \"not implemented\".\n///\n/// This allows your code to type-check, which is useful if you are prototyping or\n/// implementing a trait that requires multiple methods which you don't plan to use all of.\n///\n/// The difference between `unimplemented!` and [`todo!`] is that while `todo!`\n/// conveys an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unimplemented!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// [`todo!`]: crate::todo\n///\n/// # Examples\n///\n/// Say we have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` for 'MyStruct', but for some reason it only makes sense\n/// to implement the `bar()` function. `baz()` and `qux()` will still need to be defined\n/// in our implementation of `Foo`, but we can use `unimplemented!` in their definitions\n/// to allow our code to compile.\n///\n/// We still want to have our program stop running if the unimplemented methods are\n/// reached.\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // It makes no sense to `baz` a `MyStruct`, so we have no logic here\n/// // at all.\n/// // This will display \"thread 'main' panicked at 'not implemented'\".\n/// unimplemented!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We have some logic here,\n/// // We can add a message to unimplemented! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not implemented: MyStruct isn't quxable'\".\n/// unimplemented!(\"MyStruct isn't quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unimplemented_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! unimplemented {\n () =\u003e {\n $crate::panicking::panic(\"not implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" - }, - "unreachable": { + "PkgPath": "core::result", + "Name": "ok", + "File": "result.rs", + "Line": 657, + "StartOffset": 23908, + "EndOffset": 23910, + "Content": "ok" + } + }, + "Types": {}, + "Vars": {} + }, + "core::str": { + "IsMain": false, + "IsTest": false, + "PkgPath": "core::str", + "Functions": { + "chars": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "unreachable", + "PkgPath": "core::str", + "Name": "chars", "File": "mod.rs", - "Line": 755, - "StartOffset": -1, - "EndOffset": 28157, - "Content": "/// Indicates unreachable code.\n///\n/// This is useful any time that the compiler can't determine that some code is unreachable. For\n/// example:\n///\n/// * Match arms with guard conditions.\n/// * Loops that dynamically terminate.\n/// * Iterators that dynamically terminate.\n///\n/// If the determination that the code is unreachable proves incorrect, the\n/// program immediately terminates with a [`panic!`].\n///\n/// The unsafe counterpart of this macro is the [`unreachable_unchecked`] function, which\n/// will cause undefined behavior if the code is reached.\n///\n/// [`unreachable_unchecked`]: crate::hint::unreachable_unchecked\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unreachable!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Match arms:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn foo(x: Option\u003ci32\u003e) {\n/// match x {\n/// Some(n) if n \u003e= 0 =\u003e println!(\"Some(Non-negative)\"),\n/// Some(n) if n \u003c 0 =\u003e println!(\"Some(Negative)\"),\n/// Some(_) =\u003e unreachable!(), // compile error if commented out\n/// None =\u003e println!(\"None\")\n/// }\n/// }\n/// ```\n///\n/// Iterators:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn divide_by_three(x: u32) -\u003e u32 { // one of the poorest implementations of x/3\n/// for i in 0.. {\n/// if 3*i \u003c i { panic!(\"u32 overflow\"); }\n/// if x \u003c 3*i { return i-1; }\n/// }\n/// unreachable!(\"The loop should always return\");\n/// }\n/// ```\n#[macro_export]\n#[rustc_builtin_macro(unreachable)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unreachable_macro\")]\nmacro_rules! unreachable {\n // Expands to either `$crate::panic::unreachable_2015` or `$crate::panic::unreachable_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" + "Line": 1039, + "StartOffset": 36275, + "EndOffset": 36280, + "Content": "chars" }, - "write": { + "len": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "write", + "PkgPath": "core::str", + "Name": "len", "File": "mod.rs", - "Line": 622, - "StartOffset": -1, - "EndOffset": 25037, - "Content": "/// Writes formatted data into a buffer.\n///\n/// This macro accepts a 'writer', a format string, and a list of arguments. Arguments will be\n/// formatted according to the specified format string and the result will be passed to the writer.\n/// The writer may be any value with a `write_fmt` method; generally this comes from an\n/// implementation of either the [`fmt::Write`] or the [`io::Write`] trait. The macro\n/// returns whatever the `write_fmt` method returns; commonly a [`fmt::Result`], or an\n/// [`io::Result`].\n///\n/// See [`std::fmt`] for more information on the format string syntax.\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n/// [`fmt::Write`]: crate::fmt::Write\n/// [`io::Write`]: ../std/io/trait.Write.html\n/// [`fmt::Result`]: crate::fmt::Result\n/// [`io::Result`]: ../std/io/type.Result.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::Write;\n///\n/// fn main() -\u003e std::io::Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// write!(\u0026mut w, \"test\")?;\n/// write!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(w, b\"testformatted arguments\");\n/// Ok(())\n/// }\n/// ```\n///\n/// A module can import both `std::fmt::Write` and `std::io::Write` and call `write!` on objects\n/// implementing either, as objects do not typically implement both. However, the module must\n/// avoid conflict between the trait names, such as by importing them as `_` or otherwise renaming\n/// them:\n///\n/// ```\n/// use std::fmt::Write as _;\n/// use std::io::Write as _;\n///\n/// fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n/// let mut s = String::new();\n/// let mut v = Vec::new();\n///\n/// write!(\u0026mut s, \"{} {}\", \"abc\", 123)?; // uses fmt::Write::write_fmt\n/// write!(\u0026mut v, \"s = {:?}\", s)?; // uses io::Write::write_fmt\n/// assert_eq!(v, b\"s = \\\"abc 123\\\"\");\n/// Ok(())\n/// }\n/// ```\n///\n/// If you also need the trait names themselves, such as to implement one or both on your types,\n/// import the containing module and then name them with a prefix:\n///\n/// ```\n/// # #![allow(unused_imports)]\n/// use std::fmt::{self, Write as _};\n/// use std::io::{self, Write as _};\n///\n/// struct Example;\n///\n/// impl fmt::Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n/// ```\n///\n/// Note: This macro can be used in `no_std` setups as well.\n/// In a `no_std` setup you are responsible for the implementation details of the components.\n///\n/// ```no_run\n/// use core::fmt::Write;\n///\n/// struct Example;\n///\n/// impl Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n///\n/// let mut m = Example{};\n/// write!(\u0026mut m, \"Hello World\").expect(\"Not written\");\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"write_macro\")]\nmacro_rules! write {\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args!($($arg)*))\n };\n}" + "Line": 139, + "StartOffset": 4744, + "EndOffset": 4747, + "Content": "len" }, - "writeln": { + "strip_prefix": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "", - "PkgPath": "core::macros", - "Name": "writeln", + "PkgPath": "core::str", + "Name": "strip_prefix", "File": "mod.rs", - "Line": 717, - "StartOffset": -1, - "EndOffset": 26116, - "Content": "/// Writes formatted data into a buffer, with a newline appended.\n///\n/// On all platforms, the newline is the LINE FEED character (`\\n`/`U+000A`) alone\n/// (no additional CARRIAGE RETURN (`\\r`/`U+000D`).\n///\n/// For more information, see [`write!`]. For information on the format string syntax, see\n/// [`std::fmt`].\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::{Write, Result};\n///\n/// fn main() -\u003e Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// writeln!(\u0026mut w)?;\n/// writeln!(\u0026mut w, \"test\")?;\n/// writeln!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(\u0026w[..], \"\\ntest\\nformatted arguments\\n\".as_bytes());\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"writeln_macro\")]\n#[allow_internal_unstable(format_args_nl)]\nmacro_rules! writeln {\n ($dst:expr $(,)?) =\u003e {\n $crate::write!($dst, \"\\n\")\n };\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args_nl!($($arg)*))\n };\n}" + "Line": 2396, + "StartOffset": 83811, + "EndOffset": 83823, + "Content": "strip_prefix" } }, "Types": {}, "Vars": {} }, - "core::marker": { + "core::str::traits": { "IsMain": false, "IsTest": false, - "PkgPath": "core::marker", + "PkgPath": "core::str::traits", "Functions": {}, "Types": { - "PhantomData": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "marker.rs", - "Line": 774, - "StartOffset": 29456, - "EndOffset": 29467, - "Content": "PhantomData" - }, - "Send": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "marker.rs", - "Line": 90, - "StartOffset": 3419, - "EndOffset": 3423, - "Content": "Send" - }, - "Sized": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sized", - "File": "marker.rs", - "Line": 154, - "StartOffset": 5622, - "EndOffset": 5627, - "Content": "Sized" - }, - "Sync": { + "FromStr": { "Exported": false, "TypeKind": "interface", "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "marker.rs", - "Line": 619, - "StartOffset": 24192, - "EndOffset": 24196, - "Content": "Sync" - } - }, - "Vars": {} - }, - "core::ops::deref": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::ops::deref", - "Functions": {}, - "Types": { - "Deref": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::deref", - "Name": "Deref", - "File": "deref.rs", - "Line": 138, - "StartOffset": 6095, - "EndOffset": 6100, - "Content": "Deref" - }, - "DerefMut": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::deref", - "Name": "DerefMut", - "File": "deref.rs", - "Line": 268, - "StartOffset": 10829, - "EndOffset": 10837, - "Content": "DerefMut" + "PkgPath": "core::str::traits", + "Name": "FromStr", + "File": "traits.rs", + "Line": 797, + "StartOffset": 29100, + "EndOffset": 29107, + "Content": "FromStr" } }, "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "any.rs": { + "Path": "any.rs" }, - "core::ops::function": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::ops::function", - "Functions": {}, - "Types": { - "FnOnce": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "function.rs", - "Line": 242, - "StartOffset": 8736, - "EndOffset": 8742, - "Content": "FnOnce" - } - }, - "Vars": {} + "borrow.rs": { + "Path": "borrow.rs" }, - "core::option": { + "boxed.rs": { + "Path": "boxed.rs" + }, + "builders.rs": { + "Path": "builders.rs" + }, + "cmp.rs": { + "Path": "cmp.rs" + }, + "collect.rs": { + "Path": "collect.rs" + }, + "convert.rs": { + "Path": "convert.rs" + }, + "default.rs": { + "Path": "default.rs" + }, + "deref.rs": { + "Path": "deref.rs" + }, + "function.rs": { + "Path": "function.rs" + }, + "iterator.rs": { + "Path": "iterator.rs" + }, + "marker.rs": { + "Path": "marker.rs" + }, + "methods.rs": { + "Path": "methods.rs" + }, + "mod.rs": { + "Path": "mod.rs" + }, + "option.rs": { + "Path": "option.rs" + }, + "result.rs": { + "Path": "result.rs" + }, + "str.rs": { + "Path": "str.rs" + }, + "string.rs": { + "Path": "string.rs" + }, + "sync.rs": { + "Path": "sync.rs" + }, + "traits.rs": { + "Path": "traits.rs" + }, + "unwind_safe.rs": { + "Path": "unwind_safe.rs" + } + } + }, + "ahash@0.8.11": { + "Language": "rust", + "Version": "0.8.11", + "Name": "ahash", + "Dir": "", + "Packages": { + "ahash::hash_map": { "IsMain": false, "IsTest": false, - "PkgPath": "core::option", + "PkgPath": "ahash::hash_map", "Functions": { - "and_then": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "option.rs", - "Line": 1447, - "StartOffset": 51530, - "EndOffset": 51538, - "Content": "and_then" - }, - "as_deref": { + "AHashMap.get": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "option.rs", - "Line": 1303, - "StartOffset": 47102, - "EndOffset": 47110, - "Content": "as_deref" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "hash_map.rs", + "Line": 84, + "StartOffset": 2421, + "EndOffset": 3065, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), None);\n /// ```\n #[inline]\n pub fn get\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c\u0026V\u003e\n where\n K: Borrow\u003cQ\u003e,\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" + } + } }, - "as_mut": { + "AHashMap.get_key_value": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "option.rs", - "Line": 728, - "StartOffset": 27598, - "EndOffset": 27604, - "Content": "as_mut" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_key_value", + "File": "hash_map.rs", + "Line": 109, + "StartOffset": 3071, + "EndOffset": 3779, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some((\u00261, \u0026\"a\")));\n /// assert_eq!(map.get_key_value(\u00262), None);\n /// ```\n #[inline]\n pub fn get_key_value\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c(\u0026K, \u0026V)\u003e\n where\n K: Borrow\u003cQ\u003e,\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" + } + } }, - "as_ref": { + "AHashMap.get_mut": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "option.rs", - "Line": 706, - "StartOffset": 27062, - "EndOffset": 27068, - "Content": "as_ref" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get_mut", + "File": "hash_map.rs", + "Line": 134, + "StartOffset": 3785, + "EndOffset": 4478, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[\u00261], \"b\");\n /// ```\n #[inline]\n pub fn get_mut\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003c\u0026mut V\u003e\n where\n K: Borrow\u003cQ\u003e,\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" + } + } }, - "clone": { + "AHashMap.insert": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "File": "option.rs", - "Line": 2037, - "StartOffset": 68519, - "EndOffset": 68524, - "Content": "clone" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "File": "hash_map.rs", + "Line": 161, + "StartOffset": 4484, + "EndOffset": 5343, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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[\u002637], \"c\");\n /// ```\n #[inline]\n pub fn insert(\u0026mut self, k: K, v: V) -\u003e Option\u003cV\u003e {\n self.0.insert(k, v)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "get_or_insert_with": { + "AHashMap.into_keys": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "option.rs", - "Line": 1691, - "StartOffset": 58361, - "EndOffset": 58379, - "Content": "get_or_insert_with" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_keys", + "File": "hash_map.rs", + "Line": 188, + "StartOffset": 5349, + "EndOffset": 6305, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003c\u0026str\u003e = 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) -\u003e IntoKeys\u003cK, V\u003e {\n self.0.into_keys()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "is_none": { + "AHashMap.into_values": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "option.rs", - "Line": 651, - "StartOffset": 24970, - "EndOffset": 24977, - "Content": "is_none" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.into_values", + "File": "hash_map.rs", + "Line": 219, + "StartOffset": 6311, + "EndOffset": 7278, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003ci32\u003e = 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) -\u003e IntoValues\u003cK, V\u003e {\n self.0.into_values()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "is_some": { + "AHashMap.remove": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_some", - "File": "option.rs", - "Line": 607, - "StartOffset": 23633, - "EndOffset": 23640, - "Content": "is_some" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "File": "hash_map.rs", + "Line": 250, + "StartOffset": 7284, + "EndOffset": 7988, + "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\"a\"));\n /// assert_eq!(map.remove(\u00261), None);\n /// ```\n #[inline]\n pub fn remove\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003cV\u003e\n where\n K: Borrow\u003cQ\u003e,\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" + } + } }, - "map": { + "AHashMap.serialize": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "option.rs", - "Line": 1114, - "StartOffset": 41603, - "EndOffset": 41606, - "Content": "map" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.serialize", + "File": "hash_map.rs", + "Line": 423, + "StartOffset": 11502, + "EndOffset": 11629, + "Content": "#[cfg(feature = \"serde\")]\nimpl\u003cK, V\u003e Serialize for AHashMap\u003cK, V\u003e\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize\u003cS: Serializer\u003e(\u0026self, serializer: S) -\u003e Result\u003cS::Ok, S::Error\u003e {\n self.deref().serialize(serializer)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "or_else": { + "AHashMap::with_capacity": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "option.rs", - "Line": 1546, - "StartOffset": 54361, - "EndOffset": 54368, - "Content": "or_else" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "hash_map.rs", + "Line": 59, + "StartOffset": 1703, + "EndOffset": 2000, + "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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) -\u003e 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" + } + } }, - "take": { + "Debug\u003cAHashMap\u003e.fmt": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "File": "option.rs", - "Line": 1726, - "StartOffset": 59394, - "EndOffset": 59398, - "Content": "take" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Debug\u003cAHashMap\u003e.fmt", + "File": "hash_map.rs", + "Line": 341, + "StartOffset": 9170, + "EndOffset": 9256, + "Content": "impl\u003cK, V, S\u003e Debug for AHashMap\u003cK, V, S\u003e\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(\u0026self, fmt: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n self.0.fmt(fmt)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "unwrap": { + "Deref\u003cAHashMap\u003e.deref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "option.rs", - "Line": 975, - "StartOffset": 37239, - "EndOffset": 37245, - "Content": "unwrap" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Deref\u003cAHashMap\u003e.deref", + "File": "hash_map.rs", + "Line": 279, + "StartOffset": 8076, + "EndOffset": 8132, + "Content": "impl\u003cK, V, S\u003e Deref for AHashMap\u003cK, V, S\u003e {\n type Target = HashMap\u003cK, V, S\u003e;\n fn deref(\u0026self) -\u003e \u0026Self::Target {\n \u0026self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } }, - "unwrap_or": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "option.rs", - "Line": 998, - "StartOffset": 37964, - "EndOffset": 37973, - "Content": "unwrap_or" - } - }, - "Types": { - "Option": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "option.rs", - "Line": 572, - "StartOffset": 22411, - "EndOffset": 22417, - "Content": "Option" - } - }, - "Vars": {} - }, - "core::panic::unwind_safe": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::panic::unwind_safe", - "Functions": {}, - "Types": { - "UnwindSafe": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::panic::unwind_safe", - "Name": "UnwindSafe", - "File": "unwind_safe.rs", - "Line": 90, - "StartOffset": 4463, - "EndOffset": 4473, - "Content": "UnwindSafe" - } - }, - "Vars": {} - }, - "core::result": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::result", - "Functions": { - "ok": { + "DerefMut\u003cAHashMap\u003e.deref_mut": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "File": "result.rs", - "Line": 658, - "StartOffset": 23836, - "EndOffset": 23838, - "Content": "ok" - } - }, - "Types": {}, - "Vars": {} - }, - "core::str": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::str", - "Functions": { - "chars": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "DerefMut\u003cAHashMap\u003e.deref_mut", + "File": "hash_map.rs", + "Line": 285, + "StartOffset": 8187, + "EndOffset": 8259, + "Content": "impl\u003cK, V, S\u003e DerefMut for AHashMap\u003cK, V, S\u003e {\n fn deref_mut(\u0026mut self) -\u003e \u0026mut Self::Target {\n \u0026mut self.0\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap" + } + } + }, + "Eq.expecting": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "mod.rs", - "Line": 1040, - "StartOffset": 36210, - "EndOffset": 36215, - "Content": "chars" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Eq.expecting", + "File": "hash_map.rs", + "Line": 451, + "StartOffset": 12432, + "EndOffset": 12559, + "Content": "impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "Eq" + } + } }, - "len": { + "Eq.visit_map": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "mod.rs", - "Line": 140, - "StartOffset": 4729, - "EndOffset": 4732, - "Content": "len" + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Eq.visit_map", + "File": "hash_map.rs", + "Line": 455, + "StartOffset": 12573, + "EndOffset": 12981, + "Content": "impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "", + "PkgPath": "core::cmp", + "Name": "Eq" + } + } }, - "strip_prefix": { + "Extend\u003cAHashMap\u003e.extend": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "mod.rs", - "Line": 2397, - "StartOffset": 83755, - "EndOffset": 83767, - "Content": "strip_prefix" - } - }, - "Types": {}, - "Vars": {} - }, - "core::str::traits": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::str::traits", - "Functions": {}, - "Types": { - "FromStr": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::str::traits", - "Name": "FromStr", - "File": "traits.rs", - "Line": 798, - "StartOffset": 29053, - "EndOffset": 29060, - "Content": "FromStr" - } - }, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "any.rs": { - "Path": "any.rs" - }, - "borrow.rs": { - "Path": "borrow.rs" - }, - "boxed.rs": { - "Path": "boxed.rs" - }, - "builders.rs": { - "Path": "builders.rs" - }, - "cmp.rs": { - "Path": "cmp.rs" - }, - "collect.rs": { - "Path": "collect.rs" - }, - "convert.rs": { - "Path": "convert.rs" - }, - "default.rs": { - "Path": "default.rs" - }, - "deref.rs": { - "Path": "deref.rs" - }, - "function.rs": { - "Path": "function.rs" - }, - "iterator.rs": { - "Path": "iterator.rs" - }, - "marker.rs": { - "Path": "marker.rs" - }, - "methods.rs": { - "Path": "methods.rs" - }, - "mod.rs": { - "Path": "mod.rs" - }, - "option.rs": { - "Path": "option.rs" - }, - "result.rs": { - "Path": "result.rs" - }, - "str.rs": { - "Path": "str.rs" - }, - "string.rs": { - "Path": "string.rs" - }, - "sync.rs": { - "Path": "sync.rs" - }, - "traits.rs": { - "Path": "traits.rs" - }, - "unwind_safe.rs": { - "Path": "unwind_safe.rs" - } - } - }, - "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.expecting": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.expecting", - "File": "hash_map.rs", - "Line": 452, - "StartOffset": 12430, - "EndOffset": 12513, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.get": { - "Exported": false, - "IsMethod": true, + "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", + "Name": "Extend\u003cAHashMap\u003e.extend", "File": "hash_map.rs", - "Line": 85, - "StartOffset": 2418, - "EndOffset": 3042, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), None);\n /// ```\n #[inline]\n pub fn get\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c\u0026V\u003e\n where\n K: Borrow\u003cQ\u003e,\n Q: Hash + Eq,\n {\n self.0.get(k)\n }\n}", + "Line": 400, + "StartOffset": 10712, + "EndOffset": 10831, + "Content": "impl\u003c'a, K, V, S\u003e Extend\u003c(\u0026'a K, \u0026'a V)\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Copy + 'a,\n V: Copy + 'a,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend\u003cT: IntoIterator\u003cItem = (\u0026'a K, \u0026'a V)\u003e\u003e(\u0026mut self, iter: T) {\n self.0.extend(iter)\n }\n}", "Receiver": { "IsPointer": false, "Type": { @@ -1895,18 +1725,18 @@ } } }, - "AHashMap.get_key_value": { + "Into\u003cAHashMap\u003e.into": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_key_value", + "Name": "Into\u003cAHashMap\u003e.into", "File": "hash_map.rs", - "Line": 110, - "StartOffset": 3069, - "EndOffset": 3746, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some((\u00261, \u0026\"a\")));\n /// assert_eq!(map.get_key_value(\u00262), None);\n /// ```\n #[inline]\n pub fn get_key_value\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c(\u0026K, \u0026V)\u003e\n where\n K: Borrow\u003cQ\u003e,\n Q: Hash + Eq,\n {\n self.0.get_key_value(k)\n }\n}", + "Line": 47, + "StartOffset": 1311, + "EndOffset": 1384, + "Content": "impl\u003cK, V\u003e Into\u003cHashMap\u003cK, V, crate::RandomState\u003e\u003e for AHashMap\u003cK, V\u003e {\n fn into(self) -\u003e HashMap\u003cK, V, crate::RandomState\u003e {\n self.0\n }\n}", "Receiver": { "IsPointer": false, "Type": { @@ -1916,18 +1746,18 @@ } } }, - "AHashMap.get_mut": { + "IntoIterator\u003cAHashMap\u003e.into_iter": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get_mut", + "Name": "IntoIterator\u003cAHashMap\u003e.into_iter", "File": "hash_map.rs", - "Line": 135, - "StartOffset": 3783, - "EndOffset": 4451, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[\u00261], \"b\");\n /// ```\n #[inline]\n pub fn get_mut\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003c\u0026mut V\u003e\n where\n K: Borrow\u003cQ\u003e,\n Q: Hash + Eq,\n {\n self.0.get_mut(k)\n }\n}", + "Line": 378, + "StartOffset": 10278, + "EndOffset": 10349, + "Content": "impl\u003cK, V, S\u003e IntoIterator for AHashMap\u003cK, V, S\u003e {\n type Item = (K, V);\n type IntoIter = hash_map::IntoIter\u003cK, V\u003e;\n fn into_iter(self) -\u003e Self::IntoIter {\n self.0.into_iter()\n }\n}", "Receiver": { "IsPointer": false, "Type": { @@ -1937,18 +1767,18 @@ } } }, - "AHashMap.insert": { + "PartialEq\u003cAHashMap\u003e.eq": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", + "Name": "PartialEq\u003cAHashMap\u003e.eq", "File": "hash_map.rs", - "Line": 162, - "StartOffset": 4482, - "EndOffset": 5314, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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[\u002637], \"c\");\n /// ```\n #[inline]\n pub fn insert(\u0026mut self, k: K, v: V) -\u003e Option\u003cV\u003e {\n self.0.insert(k, v)\n }\n}", + "Line": 303, + "StartOffset": 8473, + "EndOffset": 8556, + "Content": "impl\u003cK, V, S\u003e PartialEq for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(\u0026self, other: \u0026AHashMap\u003cK, V, S\u003e) -\u003e bool {\n self.0.eq(\u0026other.0)\n }\n}", "Receiver": { "IsPointer": false, "Type": { @@ -1958,18 +1788,18 @@ } } }, - "AHashMap.into_keys": { + "Sized\u003cAHashMap\u003e.index": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_keys", + "Name": "Sized\u003cAHashMap\u003e.index", "File": "hash_map.rs", - "Line": 189, - "StartOffset": 5347, - "EndOffset": 6277, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003c\u0026str\u003e = 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) -\u003e IntoKeys\u003cK, V\u003e {\n self.0.into_keys()\n }\n}", + "Line": 324, + "StartOffset": 8818, + "EndOffset": 9064, + "Content": "impl\u003cK, Q: ?Sized, V, S\u003e Index\u003c\u0026Q\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Borrow\u003cQ\u003e,\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(\u0026self, key: \u0026Q) -\u003e \u0026V {\n self.0.index(key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { @@ -1978,4566 +1808,5430 @@ "Name": "AHashMap" } } - }, - "AHashMap.into_values": { + } + }, + "Types": { + "AHashMap": { "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap.into_values", + "Name": "AHashMap", "File": "hash_map.rs", - "Line": 220, - "StartOffset": 6309, - "EndOffset": 7248, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003ci32\u003e = 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) -\u003e IntoValues\u003cK, V\u003e {\n self.0.into_values()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Line": 17, + "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\u003cK, V, S = crate::RandomState\u003e(HashMap\u003cK, V, S\u003e);", + "Methods": { + "deref": { "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": 7282, - "EndOffset": 7962, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\"a\"));\n /// assert_eq!(map.remove(\u00261), None);\n /// ```\n #[inline]\n pub fn remove\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003cV\u003e\n where\n K: Borrow\u003cQ\u003e,\n Q: Hash + Eq,\n {\n self.0.remove(k)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "Deref\u003cAHashMap\u003e.deref" + }, + "deref_mut": { "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": 11499, - "EndOffset": 11585, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003cK, V\u003e Serialize for AHashMap\u003cK, V\u003e\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize\u003cS: Serializer\u003e(\u0026self, serializer: S) -\u003e Result\u003cS::Ok, S::Error\u003e {\n self.deref().serialize(serializer)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "DerefMut\u003cAHashMap\u003e.deref_mut" + }, + "eq": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap.visit_map": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.visit_map", - "File": "hash_map.rs", - "Line": 456, - "StartOffset": 12571, - "EndOffset": 12957, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "PartialEq\u003cAHashMap\u003e.eq" + }, + "extend": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::deserialize": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::deserialize", - "File": "hash_map.rs", - "Line": 435, - "StartOffset": 11782, - "EndOffset": 11930, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn deserialize\u003cD: Deserializer\u003c'de\u003e\u003e(deserializer: D) -\u003e Result\u003cSelf, D::Error\u003e {\n let hash_map = HashMap::deserialize(deserializer);\n hash_map.map(|hash_map| Self(hash_map))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "Extend\u003cAHashMap\u003e.extend" + }, + "fmt": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::deserialize_in_place": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::deserialize_in_place", - "File": "hash_map.rs", - "Line": 440, - "StartOffset": 11983, - "EndOffset": 12997, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003c'de, K, V\u003e Deserialize\u003c'de\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n{\n fn deserialize_in_place\u003cD: Deserializer\u003c'de\u003e\u003e(deserializer: D, place: \u0026mut Self) -\u003e Result\u003c(), D::Error\u003e {\n use serde::de::{MapAccess, Visitor};\n\n struct MapInPlaceVisitor\u003c'a, K: 'a, V: 'a\u003e(\u0026'a mut AHashMap\u003cK, V\u003e);\n\n impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\n }\n\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n }\n\n deserializer.deserialize_map(MapInPlaceVisitor(place))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "Debug\u003cAHashMap\u003e.fmt" + }, + "get": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::new": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::new", - "File": "hash_map.rs", - "Line": 54, - "StartOffset": 1391, - "EndOffset": 1637, - "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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 using [RandomState::new] which obtains its keys from [RandomSource].\n /// See the documentation in [RandomSource] for notes about key strength.\n pub fn new() -\u003e Self {\n AHashMap(HashMap::with_hasher(RandomState::new()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.get" + }, + "get_key_value": { "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": 1701, - "EndOffset": 1917, - "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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) -\u003e Self {\n AHashMap(HashMap::with_capacity_and_hasher(capacity, RandomState::new()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.get_key_value" + }, + "get_mut": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::with_capacity_and_hasher": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity_and_hasher", - "File": "hash_map.rs", - "Line": 75, - "StartOffset": 2176, - "EndOffset": 2258, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\nwhere\n S: BuildHasher,\n{\n pub fn with_capacity_and_hasher(capacity: usize, hash_builder: S) -\u003e Self {\n AHashMap(HashMap::with_capacity_and_hasher(capacity, hash_builder))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.get_mut" + }, + "index": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "AHashMap::with_hasher": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_hasher", - "File": "hash_map.rs", - "Line": 71, - "StartOffset": 2065, - "EndOffset": 2118, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\nwhere\n S: BuildHasher,\n{\n pub fn with_hasher(hash_builder: S) -\u003e Self {\n AHashMap(HashMap::with_hasher(hash_builder))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "Sized\u003cAHashMap\u003e.index" + }, + "insert": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Debug\u003cAHashMap\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Debug\u003cAHashMap\u003e.fmt", - "File": "hash_map.rs", - "Line": 342, - "StartOffset": 9167, - "EndOffset": 9231, - "Content": "impl\u003cK, V, S\u003e Debug for AHashMap\u003cK, V, S\u003e\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(\u0026self, fmt: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n self.0.fmt(fmt)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.insert" + }, + "into": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Default\u003cAHashMap\u003e::default": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Default\u003cAHashMap\u003e::default", - "File": "hash_map.rs", - "Line": 412, - "StartOffset": 11216, - "EndOffset": 11334, - "Content": "/// NOTE: For safety this trait impl is only available available if either of the flags `runtime-rng` (on by default) or\n/// `compile-time-rng` are enabled. This is to prevent weakly keyed maps from being accidentally created. Instead one of\n/// constructors for [RandomState] must be used.\n#[cfg(any(feature = \"compile-time-rng\", feature = \"runtime-rng\", feature = \"no-rng\"))]\nimpl\u003cK, V\u003e Default for AHashMap\u003cK, V, RandomState\u003e {\n #[inline]\n #[inline]\n fn default() -\u003e AHashMap\u003cK, V, RandomState\u003e {\n AHashMap(HashMap::default())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "Into\u003cAHashMap\u003e.into" + }, + "into_iter": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Deref\u003cAHashMap\u003e.deref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Deref\u003cAHashMap\u003e.deref", - "File": "hash_map.rs", - "Line": 280, - "StartOffset": 8039, - "EndOffset": 8115, - "Content": "impl\u003cK, V, S\u003e Deref for AHashMap\u003cK, V, S\u003e {\n type Target = HashMap\u003cK, V, S\u003e;\n fn deref(\u0026self) -\u003e \u0026Self::Target {\n \u0026self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "IntoIterator\u003cAHashMap\u003e.into_iter" + }, + "into_keys": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "DerefMut\u003cAHashMap\u003e.deref_mut": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "DerefMut\u003cAHashMap\u003e.deref_mut", - "File": "hash_map.rs", - "Line": 286, - "StartOffset": 8139, - "EndOffset": 8238, - "Content": "impl\u003cK, V, S\u003e DerefMut for AHashMap\u003cK, V, S\u003e {\n fn deref_mut(\u0026mut self) -\u003e \u0026mut Self::Target {\n \u0026mut self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.into_keys" + }, + "into_values": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Extend\u003cAHashMap\u003e.extend": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "hash_map.rs", - "Line": 401, - "StartOffset": 10709, - "EndOffset": 10802, - "Content": "impl\u003c'a, K, V, S\u003e Extend\u003c(\u0026'a K, \u0026'a V)\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Copy + 'a,\n V: Copy + 'a,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend\u003cT: IntoIterator\u003cItem = (\u0026'a K, \u0026'a V)\u003e\u003e(\u0026mut self, iter: T) {\n self.0.extend(iter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.into_values" + }, + "remove": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "From\u003cAHashMap\u003e::from": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "From\u003cAHashMap\u003e::from", - "File": "hash_map.rs", - "Line": 33, - "StartOffset": 925, - "EndOffset": 1201, - "Content": "impl\u003cK, V, const N: usize\u003e From\u003c[(K, V); N]\u003e for AHashMap\u003cK, V\u003e\nwhere\n K: Eq + Hash,\n{\n /// # Examples\n ///\n /// ```\n /// use ahash::AHashMap;\n ///\n /// let map1 = AHashMap::from([(1, 2), (3, 4)]);\n /// let map2: AHashMap\u003c_, _\u003e = [(1, 2), (3, 4)].into();\n /// assert_eq!(map1, map2);\n /// ```\n /// # Examples\n ///\n /// ```\n /// use ahash::AHashMap;\n ///\n /// let map1 = AHashMap::from([(1, 2), (3, 4)]);\n /// let map2: AHashMap\u003c_, _\u003e = [(1, 2), (3, 4)].into();\n /// assert_eq!(map1, map2);\n /// ```\n fn from(arr: [(K, V); N]) -\u003e Self {\n Self::from_iter(arr)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "AHashMap.remove" + }, + "serialize": { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap" + "Name": "AHashMap.serialize" } } - }, - "FromIterator\u003cAHashMap\u003e::from_iter": { + } + }, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "hash_map.rs": { + "Path": "hash_map.rs" + } + } + }, + "bytes@1.6.0": { + "Language": "rust", + "Version": "1.6.0", + "Name": "bytes", + "Dir": "", + "Packages": { + "bytes::bytes": { + "IsMain": false, + "IsTest": false, + "PkgPath": "bytes::bytes", + "Functions": { + "_split_off_must_use": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "FromIterator\u003cAHashMap\u003e::from_iter", - "File": "hash_map.rs", - "Line": 351, - "StartOffset": 9351, - "EndOffset": 9677, - "Content": "impl\u003cK, V\u003e FromIterator\u003c(K, V)\u003e for AHashMap\u003cK, V, RandomState\u003e\nwhere\n K: Eq + Hash,\n{\n /// This crates a hashmap from the provided iterator using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n /// This crates a hashmap from the provided iterator using [RandomState::new].\n /// See the documentation in [RandomSource] for notes about key strength.\n fn from_iter\u003cT: IntoIterator\u003cItem = (K, V)\u003e\u003e(iter: T) -\u003e Self {\n let mut inner = HashMap::with_hasher(RandomState::new());\n inner.extend(iter);\n AHashMap(inner)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "_split_off_must_use", + "File": "bytes.rs", + "Line": 1309, + "StartOffset": 36406, + "EndOffset": 36598, + "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() {}" }, - "Into\u003cAHashMap\u003e.into": { + "_split_to_must_use": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Into\u003cAHashMap\u003e.into", - "File": "hash_map.rs", - "Line": 48, - "StartOffset": 1238, - "EndOffset": 1368, - "Content": "impl\u003cK, V\u003e Into\u003cHashMap\u003cK, V, crate::RandomState\u003e\u003e for AHashMap\u003cK, V\u003e {\n fn into(self) -\u003e HashMap\u003cK, V, crate::RandomState\u003e {\n self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "_split_to_must_use", + "File": "bytes.rs", + "Line": 1299, + "StartOffset": 36214, + "EndOffset": 36404, + "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() {}" }, - "IntoIterator\u003cAHashMap\u003e.into_iter": { + "free_boxed_slice": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "IntoIterator\u003cAHashMap\u003e.into_iter", - "File": "hash_map.rs", - "Line": 371, - "StartOffset": 10022, - "EndOffset": 10115, - "Content": "impl\u003c'a, K, V, S\u003e IntoIterator for \u0026'a mut AHashMap\u003cK, V, S\u003e {\n type Item = (\u0026'a K, \u0026'a mut V);\n type IntoIter = hash_map::IterMut\u003c'a, K, V\u003e;\n fn into_iter(self) -\u003e Self::IntoIter {\n (\u0026mut self.0).iter_mut()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "free_boxed_slice", + "File": "bytes.rs", + "Line": 1064, + "StartOffset": 28386, + "EndOffset": 28574, + "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = (offset as usize - buf as usize) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" }, - "PartialEq\u003cAHashMap\u003e.eq": { + "promotable_even_clone": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "PartialEq\u003cAHashMap\u003e.eq", - "File": "hash_map.rs", - "Line": 304, - "StartOffset": 8470, - "EndOffset": 8527, - "Content": "impl\u003cK, V, S\u003e PartialEq for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(\u0026self, other: \u0026AHashMap\u003cK, V, S\u003e) -\u003e bool {\n self.0.eq(\u0026other.0)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_clone", + "File": "bytes.rs", + "Line": 961, + "StartOffset": 25358, + "EndOffset": 25805, + "Content": "unsafe fn promotable_even_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n shallow_clone_vec(data, shared, buf, ptr, len)\n }\n}" }, - "Sized\u003cAHashMap\u003e.index": { + "promotable_even_drop": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Sized\u003cAHashMap\u003e.index", - "File": "hash_map.rs", - "Line": 325, - "StartOffset": 8816, - "EndOffset": 9037, - "Content": "impl\u003cK, Q: ?Sized, V, S\u003e Index\u003c\u0026Q\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Borrow\u003cQ\u003e,\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(\u0026self, key: \u0026Q) -\u003e \u0026V {\n self.0.index(key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_drop", + "File": "bytes.rs", + "Line": 1006, + "StartOffset": 26643, + "EndOffset": 27110, + "Content": "unsafe fn promotable_even_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" }, - "test_borrow": { + "promotable_even_to_vec": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "test_borrow", - "File": "hash_map.rs", - "Line": 478, - "StartOffset": 13092, - "EndOffset": 13269, - "Content": "#[test]\n fn test_borrow() {\n let mut map: AHashMap\u003cString, String\u003e = AHashMap::new();\n map.insert(\"foo\".to_string(), \"Bar\".to_string());\n map.insert(\"Bar\".to_string(), map.get(\"foo\").unwrap().to_owned());\n }" + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_even_to_vec", + "File": "bytes.rs", + "Line": 1000, + "StartOffset": 26431, + "EndOffset": 26641, + "Content": "unsafe fn promotable_even_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK)\n })\n}" }, - "test_serde": { + "promotable_is_unique": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "test_serde", - "File": "hash_map.rs", - "Line": 485, - "StartOffset": 13349, - "EndOffset": 14032, - "Content": "#[cfg(feature = \"serde\")]\n #[test]\n fn test_serde() {\n let mut map = AHashMap::new();\n map.insert(\"for\".to_string(), 0);\n map.insert(\"bar\".to_string(), 1);\n let mut serialization = serde_json::to_string(\u0026map).unwrap();\n let mut deserialization: AHashMap\u003cString, u64\u003e = serde_json::from_str(\u0026serialization).unwrap();\n assert_eq!(deserialization, map);\n\n map.insert(\"baz\".to_string(), 2);\n serialization = serde_json::to_string(\u0026map).unwrap();\n let mut deserializer = serde_json::Deserializer::from_str(\u0026serialization);\n AHashMap::deserialize_in_place(\u0026mut deserializer, \u0026mut deserialization).unwrap();\n assert_eq!(deserialization, map);\n }" - } - }, - "Types": { - "AHashMap": { + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_is_unique", + "File": "bytes.rs", + "Line": 1052, + "StartOffset": 28067, + "EndOffset": 28384, + "Content": "unsafe fn promotable_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n } else {\n true\n }\n}" + }, + "promotable_odd_clone": { "Exported": false, - "TypeKind": "struct", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "hash_map.rs", - "Line": 18, - "StartOffset": -1, - "EndOffset": 647, - "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\u003cK, V, S = crate::RandomState\u003e(HashMap\u003cK, V, S\u003e);", - "Methods": { - "deref": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Deref\u003cAHashMap\u003e.deref" - }, - "deref_mut": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "DerefMut\u003cAHashMap\u003e.deref_mut" - }, - "eq": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "PartialEq\u003cAHashMap\u003e.eq" - }, - "expecting": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.expecting" - }, - "extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend" - }, - "fmt": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Debug\u003cAHashMap\u003e.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": "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": "Sized\u003cAHashMap\u003e.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": "Into\u003cAHashMap\u003e.into" - }, - "into_iter": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "IntoIterator\u003cAHashMap\u003e.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" - }, - "visit_map": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.visit_map" - } - } + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_clone", + "File": "bytes.rs", + "Line": 1021, + "StartOffset": 27112, + "EndOffset": 27498, + "Content": "unsafe fn promotable_odd_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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}" }, - "IntoIter": { + "promotable_odd_drop": { "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "IntoIter", - "File": "hash_map.rs", - "Line": 378, - "StartOffset": 10207, - "EndOffset": 10248, - "Content": "type IntoIter = hash_map::IntoIter\u003cK, V\u003e;" + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_drop", + "File": "bytes.rs", + "Line": 1037, + "StartOffset": 27660, + "EndOffset": 28065, + "Content": "unsafe fn promotable_odd_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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}" }, - "Item": { + "promotable_odd_to_vec": { "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Item", - "File": "hash_map.rs", - "Line": 361, - "StartOffset": 9709, - "EndOffset": 9736, - "Content": "type Item = (\u0026'a K, \u0026'a V);" + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_odd_to_vec", + "File": "bytes.rs", + "Line": 1033, + "StartOffset": 27500, + "EndOffset": 27658, + "Content": "unsafe fn promotable_odd_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" }, - "MapInPlaceVisitor": { + "promotable_to_vec": { "Exported": false, - "TypeKind": "struct", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "MapInPlaceVisitor", - "File": "hash_map.rs", - "Line": 443, - "StartOffset": 12144, - "EndOffset": 12211, - "Content": "struct MapInPlaceVisitor\u003c'a, K: 'a, V: 'a\u003e(\u0026'a mut AHashMap\u003cK, V\u003e);" + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "promotable_to_vec", + "File": "bytes.rs", + "Line": 974, + "StartOffset": 25807, + "EndOffset": 26429, + "Content": "unsafe fn promotable_to_vec(\n data: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -\u003e *mut u8,\n) -\u003e Vec\u003cu8\u003e {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 = (ptr as usize - buf as usize) + len;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n }\n}" }, - "Output": { + "ptr_map": { "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Output", - "File": "hash_map.rs", - "Line": 323, - "StartOffset": 8793, - "EndOffset": 8809, - "Content": "type Output = V;" + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "ptr_map", + "File": "bytes.rs", + "Line": 1287, + "StartOffset": 36002, + "EndOffset": 36194, + "Content": "#[cfg(not(miri))]\nfn ptr_map\u003cF\u003e(ptr: *mut u8, f: F) -\u003e *mut u8\nwhere\n F: FnOnce(usize) -\u003e usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n new_addr as *mut u8\n}" }, - "Target": { + "release_shared": { "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Target", - "File": "hash_map.rs", - "Line": 279, - "StartOffset": 7995, - "EndOffset": 8026, - "Content": "type Target = HashMap\u003cK, V, S\u003e;" + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "bytes@1.6.0", + "PkgPath": "bytes::bytes", + "Name": "release_shared", + "File": "bytes.rs", + "Line": 1238, + "StartOffset": 34070, + "EndOffset": 35436, + "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 // \u003e It is important to enforce any possible access to the object in one\n // \u003e thread (through an existing reference) to *happen before* deleting\n // \u003e the object in a different thread. This is achieved by a \"release\"\n // \u003e operation after dropping a reference (any access to the object\n // \u003e through this reference must obviously happened before), and an\n // \u003e \"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}" }, - "Value": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Value", - "File": "hash_map.rs", - "Line": 450, - "StartOffset": 12391, - "EndOffset": 12407, - "Content": "type Value = ();" - } - }, - "Vars": { - "hash_map": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "hash_map", - "File": "hash_map.rs", - "Line": 436, - "StartOffset": 11788, - "EndOffset": 11838, - "Content": "let hash_map = HashMap::deserialize(deserializer);" - }, - "mut deserialization": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "mut deserialization", - "File": "hash_map.rs", - "Line": 492, - "StartOffset": 13541, - "EndOffset": 13636, - "Content": "let mut deserialization: AHashMap\u003cString, u64\u003e = serde_json::from_str(\u0026serialization).unwrap();" - }, - "mut deserializer": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "mut deserializer", - "File": "hash_map.rs", - "Line": 497, - "StartOffset": 13800, - "EndOffset": 13874, - "Content": "let mut deserializer = serde_json::Deserializer::from_str(\u0026serialization);" - }, - "mut inner": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "mut inner", - "File": "hash_map.rs", - "Line": 354, - "StartOffset": 9518, - "EndOffset": 9575, - "Content": "let mut inner = HashMap::with_hasher(RandomState::new());" - }, - "mut map": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "mut map", - "File": "hash_map.rs", - "Line": 480, - "StartOffset": 13126, - "EndOffset": 13182, - "Content": "let mut map: AHashMap\u003cString, String\u003e = AHashMap::new();" - }, - "mut serialization": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "mut serialization", - "File": "hash_map.rs", - "Line": 491, - "StartOffset": 13499, - "EndOffset": 13560, - "Content": "let mut serialization = serde_json::to_string(\u0026map).unwrap();" - } - } - } - }, - "Dependencies": {}, - "Files": { - "hash_map.rs": { - "Path": "hash_map.rs" - } - } - }, - "bytes@1.6.0": { - "Language": "rust", - "Version": "1.6.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.6.0", - "PkgPath": "bytes::bytes", - "Name": "_split_off_must_use", - "File": "bytes.rs", - "Line": 1310, - "StartOffset": -1, - "EndOffset": 36589, - "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": { + "shallow_clone_arc": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "_split_to_must_use", + "Name": "shallow_clone_arc", "File": "bytes.rs", - "Line": 1300, - "StartOffset": -1, - "EndOffset": 36395, - "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() {}" + "Line": 1151, + "StartOffset": 31070, + "EndOffset": 31416, + "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size \u003e usize::MAX \u003e\u003e 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: \u0026SHARED_VTABLE,\n }\n}" }, - "advance": { + "shallow_clone_vec": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "advance", + "Name": "shallow_clone_vec", "File": "bytes.rs", - "Line": 569, - "StartOffset": 16315, - "EndOffset": 16583, - "Content": "#[inline]\n fn advance(\u0026mut self, cnt: usize) {\n assert!(\n cnt \u003c= self.len(),\n \"cannot advance past `remaining`: {:?} \u003c= {:?}\",\n cnt,\n self.len(),\n );\n\n unsafe {\n self.inc_start(cnt);\n }\n }" + "Line": 1166, + "StartOffset": 31418, + "EndOffset": 34068, + "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -\u003e Bytes {\n // If the buffer is still tracked in a `Vec\u003cu8\u003e`. 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 `\u0026mut 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 as usize - buf as usize) + 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 \u0026 KIND_MASK),\n \"internal: Box\u003cShared\u003e should have an aligned pointer\",\n );\n\n // Try compare \u0026 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) =\u003e {\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: \u0026SHARED_VTABLE,\n }\n }\n Err(actual) =\u003e {\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}" }, - "as_ref": { + "shared_clone": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "as_ref", + "Name": "shared_clone", "File": "bytes.rs", - "Line": 604, - "StartOffset": 16991, - "EndOffset": 17067, - "Content": "#[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + "Line": 1101, + "StartOffset": 29509, + "EndOffset": 29686, + "Content": "unsafe fn shared_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Relaxed);\n shallow_clone_arc(shared as _, ptr, len)\n}" }, - "as_slice": { + "shared_drop": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "as_slice", + "Name": "shared_drop", "File": "bytes.rs", - "Line": 526, - "StartOffset": 15363, - "EndOffset": 15413, - "Content": "#[inline]\n fn as_slice(\u0026self) -\u003e \u0026[u8] {\n unsafe { slice::from_raw_parts(self.ptr, self.len) }\n }" + "Line": 1145, + "StartOffset": 30911, + "EndOffset": 31068, + "Content": "unsafe fn shared_drop(data: \u0026mut AtomicPtr\u003c()\u003e, _ptr: *const u8, _len: usize) {\n data.with_mut(|shared| {\n release_shared(shared.cast());\n });\n}" }, - "borrow": { + "shared_is_unique": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "borrow", + "Name": "shared_is_unique", "File": "bytes.rs", - "Line": 620, - "StartOffset": 17251, - "EndOffset": 17314, - "Content": "fn borrow(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + "Line": 1139, + "StartOffset": 30696, + "EndOffset": 30909, + "Content": "pub(crate) unsafe fn shared_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" }, - "bytes_cloning_vec": { + "shared_to_vec": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "bytes_cloning_vec", + "Name": "shared_to_vec", "File": "bytes.rs", - "Line": 1327, - "StartOffset": 36700, - "EndOffset": 37416, - "Content": "#[test]\n fn bytes_cloning_vec() {\n loom::model(|| {\n let a = Bytes::from(b\"abcdefgh\".to_vec());\n let addr = a.as_ptr() as usize;\n\n // test the Bytes::clone is Sync by putting it in an Arc\n let a1 = Arc::new(a);\n let a2 = a1.clone();\n\n let t1 = thread::spawn(move || {\n let b: Bytes = (*a1).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });\n\n let t2 = thread::spawn(move || {\n let b: Bytes = (*a2).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });\n\n t1.join().unwrap();\n t2.join().unwrap();\n });\n }" + "Line": 1135, + "StartOffset": 30536, + "EndOffset": 30694, + "Content": "unsafe fn shared_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n shared_to_vec_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" }, - "chunk": { + "shared_to_vec_impl": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "chunk", + "Name": "shared_to_vec_impl", "File": "bytes.rs", - "Line": 564, - "StartOffset": 16239, - "EndOffset": 16286, - "Content": "#[inline]\n fn chunk(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" + "Line": 1106, + "StartOffset": 29688, + "EndOffset": 30534, + "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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 let buf = (*shared).buf;\n let cap = (*shared).cap;\n\n // Deallocate Shared\n drop(Box::from_raw(shared as *mut mem::ManuallyDrop\u003cShared\u003e));\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}" }, - "clear": { + "static_clone": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "clear", + "Name": "static_clone", "File": "bytes.rs", - "Line": 493, - "StartOffset": 14741, - "EndOffset": 15036, - "Content": "/// Clears the buffer, removing all data.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut buf = Bytes::from(\u0026b\"hello world\"[..]);\n /// buf.clear();\n /// assert!(buf.is_empty());\n /// ```\n #[inline]\n pub fn clear(\u0026mut self) {\n self.truncate(0);\n }" + "Line": 927, + "StartOffset": 24445, + "EndOffset": 24606, + "Content": "unsafe fn static_clone(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let slice = slice::from_raw_parts(ptr, len);\n Bytes::from_static(slice)\n}" }, - "clone": { + "static_drop": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "clone", + "Name": "static_drop", "File": "bytes.rs", - "Line": 552, - "StartOffset": 15996, - "EndOffset": 16065, - "Content": "#[inline]\n fn clone(\u0026self) -\u003e Bytes {\n unsafe { (self.vtable.clone)(\u0026self.data, self.ptr, self.len) }\n }" + "Line": 941, + "StartOffset": 24825, + "EndOffset": 24938, + "Content": "unsafe fn static_drop(_: \u0026mut AtomicPtr\u003c()\u003e, _: *const u8, _: usize) {\n // nothing to drop for \u0026'static [u8]\n}" }, - "cmp": { + "static_is_unique": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "cmp", + "Name": "static_is_unique", "File": "bytes.rs", - "Line": 664, - "StartOffset": 18153, - "EndOffset": 18227, - "Content": "fn cmp(\u0026self, other: \u0026Bytes) -\u003e cmp::Ordering {\n self.as_slice().cmp(other.as_slice())\n }" + "Line": 937, + "StartOffset": 24763, + "EndOffset": 24823, + "Content": "fn static_is_unique(_: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n false\n}" }, - "copy_from_slice": { + "static_to_vec": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "copy_from_slice", + "Name": "static_to_vec", "File": "bytes.rs", - "Line": 235, - "StartOffset": 7536, - "EndOffset": 7648, - "Content": "/// Creates `Bytes` instance from slice, by copying it.\n pub fn copy_from_slice(data: \u0026[u8]) -\u003e Self {\n data.to_vec().into()\n }" - }, - "copy_to_bytes": { + "Line": 932, + "StartOffset": 24608, + "EndOffset": 24761, + "Content": "unsafe fn static_to_vec(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" + } + }, + "Types": { + "Bytes": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "copy_to_bytes", + "Name": "Bytes", "File": "bytes.rs", - "Line": 583, - "StartOffset": 16598, - "EndOffset": 16847, - "Content": "fn copy_to_bytes(\u0026mut self, len: usize) -\u003e Self {\n if len == self.remaining() {\n core::mem::replace(self, Bytes::new())\n } else {\n let ret = self.slice(..len);\n self.advance(len);\n ret\n }\n }" + "Line": 18, + "StartOffset": 406, + "EndOffset": 4155, + "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\u003c[u8]\u003e`), 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\u003c()\u003e,\n vtable: \u0026'static Vtable,\n}" }, - "default": { + "Shared": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "default", + "Name": "Shared", "File": "bytes.rs", - "Line": 812, - "StartOffset": 21508, - "EndOffset": 21576, - "Content": "#[inline]\n fn default() -\u003e Bytes {\n Bytes::new()\n }" + "Line": 1071, + "StartOffset": 28610, + "EndOffset": 28763, + "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}" }, - "deref": { + "Vtable": { "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "deref", + "Name": "Vtable", "File": "bytes.rs", - "Line": 597, - "StartOffset": 16912, - "EndOffset": 16959, - "Content": "#[inline]\n fn deref(\u0026self) -\u003e \u0026[u8] {\n self.as_slice()\n }" - }, - "drop": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "Line": 107, + "StartOffset": 4157, + "EndOffset": 4580, + "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Vec\u003cu8\u003e,\n /// fn(data)\n pub is_unique: unsafe fn(\u0026AtomicPtr\u003c()\u003e) -\u003e bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(\u0026mut AtomicPtr\u003c()\u003e, *const u8, usize),\n}" + } + }, + "Vars": { + "KIND_ARC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "drop", + "Name": "KIND_ARC", "File": "bytes.rs", - "Line": 1080, - "StartOffset": 28768, - "EndOffset": 28817, - "Content": "fn drop(\u0026mut self) {\n unsafe { dealloc(self.buf, Layout::from_size_align(self.cap, 1).unwrap()) }\n }" + "Line": 1097, + "StartOffset": 29420, + "EndOffset": 29448, + "Content": "const KIND_ARC: usize = 0b0;" }, - "eq": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "KIND_MASK": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "eq", + "Name": "KIND_MASK", "File": "bytes.rs", - "Line": 744, - "StartOffset": 19994, - "EndOffset": 20073, - "Content": "fn eq(\u0026self, other: \u0026String) -\u003e bool {\n *self == other[..]\n }" + "Line": 1099, + "StartOffset": 29478, + "EndOffset": 29507, + "Content": "const KIND_MASK: usize = 0b1;" }, - "fmt": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "KIND_VEC": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "fmt", + "Name": "KIND_VEC", "File": "bytes.rs", - "Line": 911, - "StartOffset": 23997, - "EndOffset": 24233, - "Content": "fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"Vtable\")\n .field(\"clone\", \u0026(self.clone as *const ()))\n .field(\"drop\", \u0026(self.drop as *const ()))\n .finish()\n }" + "Line": 1098, + "StartOffset": 29449, + "EndOffset": 29477, + "Content": "const KIND_VEC: usize = 0b1;" }, - "free_boxed_slice": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "PROMOTABLE_EVEN_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "free_boxed_slice", + "Name": "PROMOTABLE_EVEN_VTABLE", "File": "bytes.rs", - "Line": 1065, - "StartOffset": -1, - "EndOffset": 28514, - "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = (offset as usize - buf as usize) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" + "Line": 947, + "StartOffset": 24978, + "EndOffset": 25168, + "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" }, - "from": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "PROMOTABLE_ODD_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "from", + "Name": "PROMOTABLE_ODD_VTABLE", "File": "bytes.rs", - "Line": 865, - "StartOffset": 22773, - "EndOffset": 23636, - "Content": "fn from(slice: Box\u003c[u8]\u003e) -\u003e Bytes {\n // Box\u003c[u8]\u003e doesn't contain a heap allocation for empty slices,\n // so the pointer isn't aligned enough for the KIND_VEC stashing to\n // work.\n if slice.is_empty() {\n return Bytes::new();\n }\n\n let len = slice.len();\n let ptr = Box::into_raw(slice) as *mut u8;\n\n if ptr as usize \u0026 0x1 == 0 {\n let data = ptr_map(ptr, |addr| addr | KIND_VEC);\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(data.cast()),\n vtable: \u0026PROMOTABLE_EVEN_VTABLE,\n }\n } else {\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(ptr.cast()),\n vtable: \u0026PROMOTABLE_ODD_VTABLE,\n }\n }\n }" + "Line": 954, + "StartOffset": 25170, + "EndOffset": 25356, + "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" }, - "from_iter": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "SHARED_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "from_iter", + "Name": "SHARED_VTABLE", "File": "bytes.rs", - "Line": 644, - "StartOffset": 17707, - "EndOffset": 17811, - "Content": "fn from_iter\u003cT: IntoIterator\u003cItem = u8\u003e\u003e(into_iter: T) -\u003e Self {\n Vec::from_iter(into_iter).into()\n }" + "Line": 1090, + "StartOffset": 29268, + "EndOffset": 29418, + "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" }, - "from_static": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "STATIC_VTABLE": { + "IsExported": false, + "IsConst": true, + "IsPointer": false, "ModPath": "bytes@1.6.0", "PkgPath": "bytes::bytes", - "Name": "from_static", + "Name": "STATIC_VTABLE", "File": "bytes.rs", - "Line": 149, - "StartOffset": 5265, - "EndOffset": 5890, - "Content": "/// Creates a new `Bytes` from a static slice.\n ///\n /// The returned `Bytes` will point directly to the static slice. There is\n /// no allocating or copying.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::from_static(b\"hello\");\n /// assert_eq!(\u0026b[..], b\"hello\");\n /// ```\n #[inline]\n #[cfg(not(all(loom, test)))]\n pub const fn from_static(bytes: \u0026'static [u8]) -\u003e Self {\n Bytes {\n ptr: bytes.as_ptr(),\n len: bytes.len(),\n data: AtomicPtr::new(ptr::null_mut()),\n vtable: \u0026STATIC_VTABLE,\n }\n }" - }, - "hash": { + "Line": 920, + "StartOffset": 24294, + "EndOffset": 24443, + "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n is_unique: static_is_unique,\n drop: static_drop,\n};" + } + } + } + }, + "Dependencies": {}, + "Files": { + "bytes.rs": { + "Path": "bytes.rs" + } + } + }, + "faststr@0.2.19": { + "Language": "rust", + "Version": "0.2.19", + "Name": "faststr", + "Dir": "", + "Packages": { + "faststr": { + "IsMain": false, + "IsTest": false, + "PkgPath": "faststr", + "Functions": { + "AsRef\u003cFastStr\u003e.as_ref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "hash", - "File": "bytes.rs", - "Line": 611, - "StartOffset": 17099, - "EndOffset": 17206, - "Content": "fn hash\u003cH\u003e(\u0026self, state: \u0026mut H)\n where\n H: hash::Hasher,\n {\n self.as_slice().hash(state);\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cFastStr\u003e.as_ref", + "File": "lib.rs", + "Line": 286, + "StartOffset": 8952, + "EndOffset": 9023, + "Content": "impl AsRef\u003c[u8]\u003e for FastStr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n self.0.as_ref()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "inc_start": { + "AsRef\u003cRepr\u003e.as_ref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "inc_start", - "File": "bytes.rs", - "Line": 531, - "StartOffset": 15479, - "EndOffset": 15709, - "Content": "#[inline]\n unsafe fn inc_start(\u0026mut self, by: usize) {\n // should already be asserted, but debug assert for tests\n debug_assert!(self.len \u003e= by, \"internal: inc_start out of bounds\");\n self.len -= by;\n self.ptr = self.ptr.add(by);\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cRepr\u003e.as_ref", + "File": "lib.rs", + "Line": 757, + "StartOffset": 21270, + "EndOffset": 21656, + "Content": "impl AsRef\u003c[u8]\u003e for Repr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n match self {\n Self::Empty =\u003e \u0026[],\n Self::Bytes(bytes) =\u003e bytes.as_ref(),\n Self::ArcStr(arc_str) =\u003e arc_str.as_bytes(),\n Self::ArcString(arc_string) =\u003e arc_string.as_bytes(),\n Self::StaticStr(s) =\u003e s.as_bytes(),\n Self::Inline { len, buf } =\u003e \u0026buf[..*len],\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "into_iter": { + "Borrow\u003cFastStr\u003e.borrow": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "into_iter", - "File": "bytes.rs", - "Line": 629, - "StartOffset": 17433, - "EndOffset": 17478, - "Content": "fn into_iter(self) -\u003e Self::IntoIter {\n IntoIter::new(self)\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Borrow\u003cFastStr\u003e.borrow", + "File": "lib.rs", + "Line": 476, + "StartOffset": 13073, + "EndOffset": 13141, + "Content": "impl Borrow\u003cstr\u003e for FastStr {\n #[inline]\n #[inline]\n fn borrow(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "is_empty": { + "Debug\u003cFastStr\u003e.fmt": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "is_empty", - "File": "bytes.rs", - "Line": 198, - "StartOffset": 6480, - "EndOffset": 6748, - "Content": "/// Returns true if the `Bytes` has a length of 0.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::new();\n /// assert!(b.is_empty());\n /// ```\n #[inline]\n pub const fn is_empty(\u0026self) -\u003e bool {\n self.len == 0\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Debug\u003cFastStr\u003e.fmt", + "File": "lib.rs", + "Line": 410, + "StartOffset": 11204, + "EndOffset": 11320, + "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "is_unique": { + "Deref\u003cFastStr\u003e.deref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "is_unique", - "File": "bytes.rs", - "Line": 213, - "StartOffset": 6775, - "EndOffset": 7476, - "Content": "/// Returns true if this is the only reference to the data.\n ///\n /// Always returns false if the data is backed by a static slice.\n ///\n /// The result of this method may be invalidated immediately if another\n /// thread clones this value while this is being called. Ensure you have\n /// unique access to this value (`\u0026mut Bytes`) first if you need to be\n /// certain the result is valid (i.e. for safety reasons)\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let a = Bytes::from(vec![1, 2, 3]);\n /// assert!(a.is_unique());\n /// let b = a.clone();\n /// assert!(!a.is_unique());\n /// ```\n pub fn is_unique(\u0026self) -\u003e bool {\n unsafe { (self.vtable.is_unique)(\u0026self.data) }\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Deref\u003cFastStr\u003e.deref", + "File": "lib.rs", + "Line": 302, + "StartOffset": 9194, + "EndOffset": 9261, + "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "len": { + "Display\u003cFastStr\u003e.fmt": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "len", - "File": "bytes.rs", - "Line": 183, - "StartOffset": 6171, - "EndOffset": 6458, - "Content": "/// Returns the number of bytes contained in this `Bytes`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::from(\u0026b\"hello\"[..]);\n /// assert_eq!(b.len(), 5);\n /// ```\n #[inline]\n pub const fn len(\u0026self) -\u003e usize {\n self.len\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Display\u003cFastStr\u003e.fmt", + "File": "lib.rs", + "Line": 417, + "StartOffset": 11360, + "EndOffset": 11478, + "Content": "impl fmt::Display for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Display::fmt(self.as_str(), f)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "new": { + "FastStr.as_str": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "new", - "File": "bytes.rs", - "Line": 122, - "StartOffset": 4585, - "EndOffset": 5096, - "Content": "/// Creates a new empty `Bytes`.\n ///\n /// This will not allocate and the returned `Bytes` handle will be empty.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let b = Bytes::new();\n /// assert_eq!(\u0026b[..], b\"\");\n /// ```\n #[inline]\n #[cfg(not(all(loom, test)))]\n pub const fn new() -\u003e Self {\n // Make it a named const to work around\n // \"unsizing casts are not allowed in const fn\"\n const EMPTY: \u0026[u8] = \u0026[];\n Bytes::from_static(EMPTY)\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.as_str", + "File": "lib.rs", + "Line": 190, + "StartOffset": 5910, + "EndOffset": 6040, + "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(\u0026self) -\u003e \u0026str {\n self.0.as_str()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "partial_cmp": { + "FastStr.deep_clone_bytes": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "partial_cmp", - "File": "bytes.rs", - "Line": 804, - "StartOffset": 21380, - "EndOffset": 21451, - "Content": "fn partial_cmp(\u0026self, other: \u0026\u0026'a T) -\u003e Option\u003ccmp::Ordering\u003e {\n self.partial_cmp(\u0026**other)\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes", + "File": "lib.rs", + "Line": 241, + "StartOffset": 7415, + "EndOffset": 7879, + "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(\u0026self) -\u003e Self {\n Self(self.0.deep_clone_bytes())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_even_clone": { + "FastStr.index": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_clone", - "File": "bytes.rs", - "Line": 962, - "StartOffset": -1, - "EndOffset": 25798, - "Content": "unsafe fn promotable_even_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n shallow_clone_vec(data, shared, buf, ptr, len)\n }\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.index", + "File": "lib.rs", + "Line": 220, + "StartOffset": 6680, + "EndOffset": 7055, + "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(\u0026self, start: usize, end: usize) -\u003e Self {\n Self(self.0.slice_ref(\u0026self.as_bytes()[start..end]))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_even_drop": { + "FastStr.into_bytes": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_drop", - "File": "bytes.rs", - "Line": 1007, - "StartOffset": -1, - "EndOffset": 27101, - "Content": "unsafe fn promotable_even_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes", + "File": "lib.rs", + "Line": 196, + "StartOffset": 6046, + "EndOffset": 6203, + "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) -\u003e Bytes {\n self.0.into_bytes()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_even_to_vec": { + "FastStr.into_string": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_to_vec", - "File": "bytes.rs", - "Line": 1001, - "StartOffset": -1, - "EndOffset": 26633, - "Content": "unsafe fn promotable_even_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK)\n })\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_string", + "File": "lib.rs", + "Line": 230, + "StartOffset": 7061, + "EndOffset": 7409, + "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) -\u003e String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_is_unique": { + "FastStr.is_empty": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_is_unique", - "File": "bytes.rs", - "Line": 1053, - "StartOffset": -1, - "EndOffset": 28377, - "Content": "unsafe fn promotable_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n } else {\n true\n }\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.is_empty", + "File": "lib.rs", + "Line": 208, + "StartOffset": 6329, + "EndOffset": 6464, + "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(\u0026self) -\u003e bool {\n self.0.is_empty()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_odd_clone": { + "FastStr.len": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_clone", - "File": "bytes.rs", - "Line": 1022, - "StartOffset": -1, - "EndOffset": 27491, - "Content": "unsafe fn promotable_odd_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.len", + "File": "lib.rs", + "Line": 202, + "StartOffset": 6209, + "EndOffset": 6323, + "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(\u0026self) -\u003e usize {\n self.0.len()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_odd_drop": { + "FastStr.slice_ref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_drop", - "File": "bytes.rs", - "Line": 1038, - "StartOffset": -1, - "EndOffset": 28056, - "Content": "unsafe fn promotable_odd_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref", + "File": "lib.rs", + "Line": 214, + "StartOffset": 6470, + "EndOffset": 6674, + "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 #[inline(always)]\n pub fn slice_ref(\u0026self, subset: \u0026str) -\u003e Self {\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_odd_to_vec": { + "FastStr::from_string": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_to_vec", - "File": "bytes.rs", - "Line": 1034, - "StartOffset": -1, - "EndOffset": 27595, - "Content": "unsafe fn promotable_odd_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "lib.rs", + "Line": 83, + "StartOffset": 2375, + "EndOffset": 2517, + "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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) -\u003e Self {\n Self(Repr::from_string(s))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "promotable_to_vec": { + "Hash\u003cFastStr\u003e.hash": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_to_vec", - "File": "bytes.rs", - "Line": 975, - "StartOffset": -1, - "EndOffset": 26422, - "Content": "unsafe fn promotable_to_vec(\n data: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -\u003e *mut u8,\n) -\u003e Vec\u003cu8\u003e {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 = (ptr as usize - buf as usize) + len;\n\n // Copy back buffer\n ptr::copy(ptr, buf, len);\n\n Vec::from_raw_parts(buf, len, cap)\n }\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Hash\u003cFastStr\u003e.hash", + "File": "lib.rs", + "Line": 403, + "StartOffset": 11062, + "EndOffset": 11166, + "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash\u003cH: hash::Hasher\u003e(\u0026self, hasher: \u0026mut H) {\n self.as_str().hash(hasher)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "ptr_map": { + "Ord\u003cFastStr\u003e.cmp": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "ptr_map", - "File": "bytes.rs", - "Line": 1288, - "StartOffset": -1, - "EndOffset": 36169, - "Content": "#[cfg(not(miri))]\nfn ptr_map\u003cF\u003e(ptr: *mut u8, f: F) -\u003e *mut u8\nwhere\n F: FnOnce(usize) -\u003e usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n new_addr as *mut u8\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Ord\u003cFastStr\u003e.cmp", + "File": "lib.rs", + "Line": 389, + "StartOffset": 10770, + "EndOffset": 10876, + "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(\u0026self, other: \u0026FastStr) -\u003e Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "release_shared": { + "PartialEq\u003cFastStr\u003e.eq": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "release_shared", - "File": "bytes.rs", - "Line": 1239, - "StartOffset": -1, - "EndOffset": 35405, - "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 // \u003e It is important to enforce any possible access to the object in one\n // \u003e thread (through an existing reference) to *happen before* deleting\n // \u003e the object in a different thread. This is achieved by a \"release\"\n // \u003e operation after dropping a reference (any access to the object\n // \u003e through this reference must obviously happened before), and an\n // \u003e \"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}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cFastStr\u003e.eq", + "File": "lib.rs", + "Line": 347, + "StartOffset": 9992, + "EndOffset": 10074, + "Content": "impl\u003c'a\u003e PartialEq\u003c\u0026'a str\u003e for FastStr {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026\u0026'a str) -\u003e bool {\n self == *other\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "remaining": { + "PartialEq\u003cString\u003e.eq": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "remaining", - "File": "bytes.rs", - "Line": 559, - "StartOffset": 16144, - "EndOffset": 16215, - "Content": "#[inline]\n fn remaining(\u0026self) -\u003e usize {\n self.len()\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cString\u003e.eq", + "File": "lib.rs", + "Line": 382, + "StartOffset": 10657, + "EndOffset": 10739, + "Content": "impl\u003c'a\u003e PartialEq\u003cFastStr\u003e for \u0026'a String {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n *self == other\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String" + } + } }, - "shallow_clone_arc": { + "PartialOrd\u003cFastStr\u003e.partial_cmp": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_arc", - "File": "bytes.rs", - "Line": 1152, - "StartOffset": -1, - "EndOffset": 31409, - "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size \u003e usize::MAX \u003e\u003e 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: \u0026SHARED_VTABLE,\n }\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp", + "File": "lib.rs", + "Line": 396, + "StartOffset": 10914, + "EndOffset": 11024, + "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(\u0026self, other: \u0026FastStr) -\u003e Option\u003cOrdering\u003e {\n Some(self.cmp(other))\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr" + } + } }, - "shallow_clone_vec": { + "Repr.as_str": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_vec", - "File": "bytes.rs", - "Line": 1167, - "StartOffset": -1, - "EndOffset": 34061, - "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -\u003e Bytes {\n // If the buffer is still tracked in a `Vec\u003cu8\u003e`. 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 `\u0026mut 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 as usize - buf as usize) + 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 \u0026 KIND_MASK),\n \"internal: Box\u003cShared\u003e should have an aligned pointer\",\n );\n\n // Try compare \u0026 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) =\u003e {\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: \u0026SHARED_VTABLE,\n }\n }\n Err(actual) =\u003e {\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}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.as_str", + "File": "lib.rs", + "Line": 645, + "StartOffset": 17121, + "EndOffset": 17630, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(\u0026self) -\u003e \u0026str {\n match self {\n Self::Empty =\u003e \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { std::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) =\u003e arc_str,\n Self::ArcString(arc_string) =\u003e arc_string,\n Self::StaticStr(s) =\u003e s,\n Self::Inline { len, buf } =\u003e unsafe { std::str::from_utf8_unchecked(\u0026buf[..*len]) },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "shared_clone": { + "Repr.deep_clone_bytes": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_clone", - "File": "bytes.rs", - "Line": 1102, - "StartOffset": -1, - "EndOffset": 29640, - "Content": "unsafe fn shared_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Relaxed);\n shallow_clone_arc(shared as _, ptr, len)\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes", + "File": "lib.rs", + "Line": 689, + "StartOffset": 18794, + "EndOffset": 19433, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(\u0026self) -\u003e Self {\n match self {\n Self::Empty =\u003e Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { Self::new(std::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) =\u003e Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) =\u003e Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) =\u003e Self::StaticStr(s),\n Self::Inline { len, buf } =\u003e Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "shared_drop": { + "Repr.into_bytes": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_drop", - "File": "bytes.rs", - "Line": 1146, - "StartOffset": -1, - "EndOffset": 31059, - "Content": "unsafe fn shared_drop(data: \u0026mut AtomicPtr\u003c()\u003e, _ptr: *const u8, _len: usize) {\n data.with_mut(|shared| {\n release_shared(shared.cast());\n });\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_bytes", + "File": "lib.rs", + "Line": 675, + "StartOffset": 18250, + "EndOffset": 18788, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -\u003e Bytes {\n match self {\n Self::Empty =\u003e Bytes::new(),\n Self::Bytes(bytes) =\u003e bytes,\n Self::ArcStr(arc_str) =\u003e Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) =\u003e {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) =\u003e Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } =\u003e Bytes::from(buf[..len].to_vec()),\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "shared_is_unique": { + "Repr.into_string": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_is_unique", - "File": "bytes.rs", - "Line": 1140, - "StartOffset": -1, - "EndOffset": 30891, - "Content": "pub(crate) unsafe fn shared_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_string", + "File": "lib.rs", + "Line": 658, + "StartOffset": 17636, + "EndOffset": 18244, + "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -\u003e String {\n match self {\n Self::Empty =\u003e String::new(),\n Self::Bytes(bytes) =\u003e unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) =\u003e arc_str.to_string(),\n Self::ArcString(arc_string) =\u003e {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) =\u003e s.to_string(),\n Self::Inline { len, buf } =\u003e unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "shared_to_vec": { + "Repr.is_empty": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec", - "File": "bytes.rs", - "Line": 1136, - "StartOffset": -1, - "EndOffset": 30623, - "Content": "unsafe fn shared_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n shared_to_vec_impl(data.load(Ordering::Relaxed).cast(), ptr, len)\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.is_empty", + "File": "lib.rs", + "Line": 633, + "StartOffset": 16729, + "EndOffset": 17115, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(\u0026self) -\u003e bool {\n match self {\n Self::Empty =\u003e true,\n Self::Bytes(bytes) =\u003e bytes.is_empty(),\n Self::ArcStr(arc_str) =\u003e arc_str.is_empty(),\n Self::ArcString(arc_string) =\u003e arc_string.is_empty(),\n Self::StaticStr(s) =\u003e s.is_empty(),\n Self::Inline { len, .. } =\u003e *len == 0,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "shared_to_vec_impl": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec_impl", - "File": "bytes.rs", - "Line": 1107, - "StartOffset": -1, - "EndOffset": 30527, - "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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 let buf = (*shared).buf;\n let cap = (*shared).cap;\n\n // Deallocate Shared\n drop(Box::from_raw(shared as *mut mem::ManuallyDrop\u003cShared\u003e));\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}" - }, - "slice": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "slice", - "File": "bytes.rs", - "Line": 240, - "StartOffset": 7682, - "EndOffset": 9305, - "Content": "/// Returns a slice of self for the provided range.\n ///\n /// This will increment the reference count for the underlying memory and\n /// return a new `Bytes` handle set to the slice.\n ///\n /// This operation is `O(1)`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.slice(2..5);\n ///\n /// assert_eq!(\u0026b[..], b\"llo\");\n /// ```\n ///\n /// # Panics\n ///\n /// Requires that `begin \u003c= end` and `end \u003c= self.len()`, otherwise slicing\n /// will panic.\n pub fn slice(\u0026self, range: impl RangeBounds\u003cusize\u003e) -\u003e Self {\n use core::ops::Bound;\n\n let len = self.len();\n\n let begin = match range.start_bound() {\n Bound::Included(\u0026n) =\u003e n,\n Bound::Excluded(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Unbounded =\u003e 0,\n };\n\n let end = match range.end_bound() {\n Bound::Included(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Excluded(\u0026n) =\u003e n,\n Bound::Unbounded =\u003e len,\n };\n\n assert!(\n begin \u003c= end,\n \"range start must not be greater than end: {:?} \u003c= {:?}\",\n begin,\n end,\n );\n assert!(\n end \u003c= len,\n \"range end out of bounds: {:?} \u003c= {:?}\",\n end,\n len,\n );\n\n if end == begin {\n return Bytes::new();\n }\n\n let mut ret = self.clone();\n\n ret.len = end - begin;\n ret.ptr = unsafe { ret.ptr.add(begin) };\n\n ret\n }" - }, - "slice_ref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "slice_ref", - "File": "bytes.rs", - "Line": 304, - "StartOffset": 9322, - "EndOffset": 11166, - "Content": "/// Returns a slice of self that is equivalent to the given `subset`.\n ///\n /// When processing a `Bytes` buffer with other tools, one often gets a\n /// `\u0026[u8]` which is in fact a slice of the `Bytes`, i.e. a subset of it.\n /// This function turns that `\u0026[u8]` into another `Bytes`, as if one had\n /// called `self.slice()` with the offsets that correspond to `subset`.\n ///\n /// This operation is `O(1)`.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let bytes = Bytes::from(\u0026b\"012345678\"[..]);\n /// let as_slice = bytes.as_ref();\n /// let subset = \u0026as_slice[2..6];\n /// let subslice = bytes.slice_ref(\u0026subset);\n /// assert_eq!(\u0026subslice[..], b\"2345\");\n /// ```\n ///\n /// # Panics\n ///\n /// Requires that the given `sub` slice is in fact contained within the\n /// `Bytes` buffer; otherwise this function will panic.\n pub fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e Self {\n // Empty slice and empty Bytes may have their pointers reset\n // so explicitly allow empty slice to be a subslice of any slice.\n if subset.is_empty() {\n return Bytes::new();\n }\n\n let bytes_p = self.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 \u003e= bytes_p,\n \"subset pointer ({:p}) is smaller than self pointer ({:p})\",\n subset.as_ptr(),\n self.as_ptr(),\n );\n assert!(\n sub_p + sub_len \u003c= bytes_p + bytes_len,\n \"subset is out of bounds: self = ({:p}, {}), subset = ({:p}, {})\",\n self.as_ptr(),\n bytes_len,\n subset.as_ptr(),\n sub_len,\n );\n\n let sub_offset = sub_p - bytes_p;\n\n self.slice(sub_offset..(sub_offset + sub_len))\n }" - }, - "split_off": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "split_off", - "File": "bytes.rs", - "Line": 362, - "StartOffset": 11226, - "EndOffset": 12394, - "Content": "/// Splits the bytes into two at the given index.\n ///\n /// Afterwards `self` contains elements `[0, at)`, and the returned `Bytes`\n /// contains elements `[at, len)`.\n ///\n /// This is an `O(1)` operation that just increases the reference count and\n /// sets a few indices.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.split_off(5);\n ///\n /// assert_eq!(\u0026a[..], b\"hello\");\n /// assert_eq!(\u0026b[..], b\" world\");\n /// ```\n ///\n /// # Panics\n ///\n /// Panics if `at \u003e len`.\n #[must_use = \"consider Bytes::truncate if you don't need the other half\"]\n pub fn split_off(\u0026mut self, at: usize) -\u003e Self {\n assert!(\n at \u003c= self.len(),\n \"split_off out of bounds: {:?} \u003c= {:?}\",\n at,\n self.len(),\n );\n\n if at == self.len() {\n return Bytes::new();\n }\n\n if at == 0 {\n return mem::replace(self, Bytes::new());\n }\n\n let mut ret = self.clone();\n\n self.len = at;\n\n unsafe { ret.inc_start(at) };\n\n ret\n }" - }, - "split_to": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "split_to", - "File": "bytes.rs", - "Line": 411, - "StartOffset": 12411, - "EndOffset": 13574, - "Content": "/// Splits the bytes into two at the given index.\n ///\n /// Afterwards `self` contains elements `[at, len)`, and the returned\n /// `Bytes` contains elements `[0, at)`.\n ///\n /// This is an `O(1)` operation that just increases the reference count and\n /// sets a few indices.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut a = Bytes::from(\u0026b\"hello world\"[..]);\n /// let b = a.split_to(5);\n ///\n /// assert_eq!(\u0026a[..], b\" world\");\n /// assert_eq!(\u0026b[..], b\"hello\");\n /// ```\n ///\n /// # Panics\n ///\n /// Panics if `at \u003e len`.\n #[must_use = \"consider Bytes::advance if you don't need the other half\"]\n pub fn split_to(\u0026mut self, at: usize) -\u003e Self {\n assert!(\n at \u003c= self.len(),\n \"split_to out of bounds: {:?} \u003c= {:?}\",\n at,\n self.len(),\n );\n\n if at == self.len() {\n return mem::replace(self, Bytes::new());\n }\n\n if at == 0 {\n return Bytes::new();\n }\n\n let mut ret = self.clone();\n\n unsafe { self.inc_start(at) };\n\n ret.len = at;\n ret\n }" - }, - "static_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_clone", - "File": "bytes.rs", - "Line": 928, - "StartOffset": -1, - "EndOffset": 24575, - "Content": "unsafe fn static_clone(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e 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.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_drop", - "File": "bytes.rs", - "Line": 942, - "StartOffset": -1, - "EndOffset": 24896, - "Content": "unsafe fn static_drop(_: \u0026mut AtomicPtr\u003c()\u003e, _: *const u8, _: usize) {\n // nothing to drop for \u0026'static [u8]\n}" - }, - "static_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_is_unique", - "File": "bytes.rs", - "Line": 938, - "StartOffset": -1, - "EndOffset": 24812, - "Content": "fn static_is_unique(_: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n false\n}" - }, - "static_to_vec": { + "Repr.len": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_to_vec", - "File": "bytes.rs", - "Line": 933, - "StartOffset": -1, - "EndOffset": 24741, - "Content": "unsafe fn static_to_vec(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.len", + "File": "lib.rs", + "Line": 621, + "StartOffset": 16369, + "EndOffset": 16723, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(\u0026self) -\u003e usize {\n match self {\n Self::Empty =\u003e 0,\n Self::Bytes(bytes) =\u003e bytes.len(),\n Self::ArcStr(arc_str) =\u003e arc_str.len(),\n Self::ArcString(arc_string) =\u003e arc_string.len(),\n Self::StaticStr(s) =\u003e s.len(),\n Self::Inline { len, .. } =\u003e *len,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "truncate": { + "Repr.slice_ref": { "Exported": false, - "IsMethod": false, + "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "truncate", - "File": "bytes.rs", - "Line": 459, - "StartOffset": 13591, - "EndOffset": 14726, - "Content": "/// Shortens the buffer, keeping the first `len` bytes and dropping the\n /// rest.\n ///\n /// If `len` is greater than the buffer's current length, this has no\n /// effect.\n ///\n /// The [split_off](`Self::split_off()`) method can emulate `truncate`, but this causes the\n /// excess bytes to be returned instead of dropped.\n ///\n /// # Examples\n ///\n /// ```\n /// use bytes::Bytes;\n ///\n /// let mut buf = Bytes::from(\u0026b\"hello world\"[..]);\n /// buf.truncate(5);\n /// assert_eq!(buf, b\"hello\"[..]);\n /// ```\n #[inline]\n pub fn truncate(\u0026mut self, len: usize) {\n if len \u003c self.len {\n // The Vec \"promotable\" vtables do not store the capacity,\n // so we cannot truncate while using this repr. We *have* to\n // promote using `split_off` so the capacity can be stored.\n if self.vtable as *const Vtable == \u0026PROMOTABLE_EVEN_VTABLE\n || self.vtable as *const Vtable == \u0026PROMOTABLE_ODD_VTABLE\n {\n drop(self.split_off(len));\n } else {\n self.len = len;\n }\n }\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.slice_ref", + "File": "lib.rs", + "Line": 705, + "StartOffset": 19439, + "EndOffset": 21234, + "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e 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 \u003e= 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 \u003c= 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 =\u003e panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) =\u003e Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) =\u003e Self::StaticStr(unsafe {\n std::str::from_utf8_unchecked(\u0026s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } =\u003e Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(\u0026buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr" + } + } }, - "with_vtable": { + "build_from_str_iter": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "with_vtable", - "File": "bytes.rs", - "Line": 509, - "StartOffset": 15067, - "EndOffset": 15332, - "Content": "#[inline]\n pub(crate) unsafe fn with_vtable(\n ptr: *const u8,\n len: usize,\n data: AtomicPtr\u003c()\u003e,\n vtable: \u0026'static Vtable,\n ) -\u003e Bytes {\n Bytes {\n ptr,\n len,\n data,\n vtable,\n }\n }" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "build_from_str_iter", + "File": "lib.rs", + "Line": 431, + "StartOffset": 11696, + "EndOffset": 12423, + "Content": "fn build_from_str_iter\u003cT\u003e(mut iter: impl Iterator\u003cItem = T\u003e) -\u003e FastStr\nwhere\n T: AsRef\u003cstr\u003e,\n String: iter::Extend\u003cT\u003e,\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 \u003e INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..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": { - "Bytes": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Bytes", - "File": "bytes.rs", - "Line": 19, - "StartOffset": -1, - "EndOffset": 4125, - "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\u003c[u8]\u003e`), 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\u003c()\u003e,\n vtable: \u0026'static Vtable,\n}" - }, - "IntoIter": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "IntoIter", - "File": "bytes.rs", - "Line": 636, - "StartOffset": 17552, - "EndOffset": 17594, - "Content": "type IntoIter = core::slice::Iter\u003c'a, u8\u003e;" - }, - "Item": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Item", - "File": "bytes.rs", - "Line": 626, - "StartOffset": 17346, - "EndOffset": 17361, - "Content": "type Item = u8;" - }, - "Shared": { + "FastStr": { "Exported": false, "TypeKind": "struct", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Shared", - "File": "bytes.rs", - "Line": 1072, - "StartOffset": -1, - "EndOffset": 28736, - "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}" - }, - "Target": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Target", - "File": "bytes.rs", - "Line": 595, - "StartOffset": 16865, - "EndOffset": 16884, - "Content": "type Target = [u8];" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "lib.rs", + "Line": 14, + "StartOffset": 295, + "EndOffset": 405, + "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n#[derive(Clone)]\npub struct FastStr(Repr);", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cFastStr\u003e.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.as_str" + }, + "borrow": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Borrow\u003cFastStr\u003e.borrow" + }, + "cmp": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Ord\u003cFastStr\u003e.cmp" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.deep_clone_bytes" + }, + "deref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Deref\u003cFastStr\u003e.deref" + }, + "eq": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialEq\u003cFastStr\u003e.eq" + }, + "fmt": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Debug\u003cFastStr\u003e.fmt" + }, + "hash": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Hash\u003cFastStr\u003e.hash" + }, + "index": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.index" + }, + "into_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.len" + }, + "partial_cmp": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp" + }, + "slice_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr.slice_ref" + } + } }, - "Vtable": { + "Repr": { "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Vtable", - "File": "bytes.rs", - "Line": 108, - "StartOffset": -1, - "EndOffset": 4516, - "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Vec\u003cu8\u003e,\n /// fn(data)\n pub is_unique: unsafe fn(\u0026AtomicPtr\u003c()\u003e) -\u003e bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(\u0026mut AtomicPtr\u003c()\u003e, *const u8, usize),\n}" - } - }, - "Vars": { - "EMPTY": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "EMPTY", - "File": "bytes.rs", - "Line": 137, - "StartOffset": 4928, - "EndOffset": 5034, - "Content": "// Make it a named const to work around\n // \"unsizing casts are not allowed in const fn\"\n const EMPTY: \u0026[u8] = \u0026[];" - }, - "KIND_ARC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_ARC", - "File": "bytes.rs", - "Line": 1098, - "StartOffset": -1, - "EndOffset": 29446, - "Content": "const KIND_ARC: usize = 0b0;" - }, - "KIND_MASK": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_MASK", - "File": "bytes.rs", - "Line": 1100, - "StartOffset": -1, - "EndOffset": 29477, - "Content": "const KIND_MASK: usize = 0b1;" - }, - "KIND_VEC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_VEC", - "File": "bytes.rs", - "Line": 1099, - "StartOffset": -1, - "EndOffset": 29447, - "Content": "const KIND_VEC: usize = 0b1;" - }, - "PROMOTABLE_EVEN_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_EVEN_VTABLE", - "File": "bytes.rs", - "Line": 948, - "StartOffset": -1, - "EndOffset": 25135, - "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" - }, - "PROMOTABLE_ODD_VTABLE": { + "TypeKind": "enum", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr", + "File": "lib.rs", + "Line": 542, + "StartOffset": 14338, + "EndOffset": 14526, + "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc\u003cstr\u003e),\n ArcString(Arc\u003cString\u003e),\n StaticStr(\u0026'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", + "Methods": { + "as_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "AsRef\u003cRepr\u003e.as_ref" + }, + "as_str": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.as_str" + }, + "deep_clone_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.deep_clone_bytes" + }, + "into_bytes": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_bytes" + }, + "into_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.into_string" + }, + "is_empty": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.is_empty" + }, + "len": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.len" + }, + "slice_ref": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "Repr.slice_ref" + } + } + } + }, + "Vars": { + "INLINE_CAP": { "IsExported": false, "IsConst": true, "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_ODD_VTABLE", - "File": "bytes.rs", - "Line": 955, - "StartOffset": -1, - "EndOffset": 25324, - "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "INLINE_CAP", + "File": "lib.rs", + "Line": 540, + "StartOffset": 14307, + "EndOffset": 14336, + "Content": "const INLINE_CAP: usize = 24;" + } + } + } + }, + "Dependencies": {}, + "Files": { + "lib.rs": { + "Path": "lib.rs" + } + } + }, + "metainfo": { + "Language": "rust", + "Version": "", + "Name": "metainfo", + "Dir": "src", + "Packages": { + "metainfo": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo", + "Functions": { + "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "File": "src/lib.rs", + "Line": 514, + "StartOffset": 15667, + "EndOffset": 15881, + "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 514, + "StartOffset": 15709, + "EndOffset": 15715 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 514, + "StartOffset": 15717, + "EndOffset": 15725 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 514, + "StartOffset": 15726, + "EndOffset": 15733 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 516, + "StartOffset": 15822, + "EndOffset": 15836 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 515, + "StartOffset": 15780, + "EndOffset": 15786 + } + ] }, - "SHARED_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "SHARED_VTABLE", - "File": "bytes.rs", - "Line": 1091, - "StartOffset": -1, - "EndOffset": 29394, - "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" + "Backward\u003cMetaInfo\u003e.get_all_backward_transients": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "File": "src/lib.rs", + "Line": 507, + "StartOffset": 15444, + "EndOffset": 15661, + "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 507, + "StartOffset": 15485, + "EndOffset": 15491 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 507, + "StartOffset": 15493, + "EndOffset": 15501 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 507, + "StartOffset": 15502, + "EndOffset": 15509 + } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 509, + "StartOffset": 15598, + "EndOffset": 15616 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 508, + "StartOffset": 15556, + "EndOffset": 15562 + } + ] }, - "STATIC_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "STATIC_VTABLE", - "File": "bytes.rs", - "Line": 921, - "StartOffset": -1, - "EndOffset": 24419, - "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n is_unique: static_is_unique,\n drop: static_drop,\n};" - }, - "a": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "a", - "File": "bytes.rs", - "Line": 1330, - "StartOffset": 36771, - "EndOffset": 36813, - "Content": "let a = Bytes::from(b\"abcdefgh\".to_vec());" - }, - "a1": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "a1", - "File": "bytes.rs", - "Line": 1334, - "StartOffset": 36896, - "EndOffset": 36917, - "Content": "let a1 = Arc::new(a);" - }, - "a2": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "a2", - "File": "bytes.rs", - "Line": 1335, - "StartOffset": 36965, - "EndOffset": 36985, - "Content": "let a2 = a1.clone();" - }, - "addr": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "addr", - "File": "bytes.rs", - "Line": 1331, - "StartOffset": 36796, - "EndOffset": 36827, - "Content": "let addr = a.as_ptr() as usize;" - }, - "b": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "b", - "File": "bytes.rs", - "Line": 1338, - "StartOffset": 37037, - "EndOffset": 37066, - "Content": "let b: Bytes = (*a1).clone();" - }, - "begin": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "begin", - "File": "bytes.rs", - "Line": 267, - "StartOffset": 8403, - "EndOffset": 8568, - "Content": "let begin = match range.start_bound() {\n Bound::Included(\u0026n) =\u003e n,\n Bound::Excluded(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Unbounded =\u003e 0,\n };" - }, - "buf": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "buf", - "File": "bytes.rs", - "Line": 970, - "StartOffset": 25640, - "EndOffset": 25699, - "Content": "let buf = ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK);" - }, - "bytes": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "bytes", - "File": "bytes.rs", - "Line": 903, - "StartOffset": 23798, - "EndOffset": 23840, - "Content": "let bytes = mem::ManuallyDrop::new(bytes);" - }, - "bytes_len": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "bytes_len", - "File": "bytes.rs", - "Line": 337, - "StartOffset": 10513, - "EndOffset": 10540, - "Content": "let bytes_len = self.len();" - }, - "bytes_p": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "bytes_p", - "File": "bytes.rs", - "Line": 336, - "StartOffset": 10512, - "EndOffset": 10549, - "Content": "let bytes_p = self.as_ptr() as usize;" - }, - "cap": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "cap", - "File": "bytes.rs", - "Line": 992, - "StartOffset": 26266, - "EndOffset": 26312, - "Content": "let cap = (ptr as usize - buf as usize) + len;" - }, - "data": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "data", - "File": "bytes.rs", - "Line": 877, - "StartOffset": 23178, - "EndOffset": 23226, - "Content": "let data = ptr_map(ptr, |addr| addr | KIND_VEC);" - }, - "diff": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "diff", - "File": "bytes.rs", - "Line": 1284, - "StartOffset": 35895, - "EndOffset": 35938, - "Content": "let diff = new_addr.wrapping_sub(old_addr);" - }, - "end": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "end", - "File": "bytes.rs", - "Line": 273, - "StartOffset": 8612, - "EndOffset": 8773, - "Content": "let end = match range.end_bound() {\n Bound::Included(\u0026n) =\u003e n.checked_add(1).expect(\"out of range\"),\n Bound::Excluded(\u0026n) =\u003e n,\n Bound::Unbounded =\u003e len,\n };" - }, - "kind": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "kind", - "File": "bytes.rs", - "Line": 1055, - "StartOffset": 28133, - "EndOffset": 28172, - "Content": "let kind = shared as usize \u0026 KIND_MASK;" - }, - "len": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "len", - "File": "bytes.rs", - "Line": 873, - "StartOffset": 23090, - "EndOffset": 23112, - "Content": "let len = slice.len();" - }, - "mut ret": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "mut ret", - "File": "bytes.rs", - "Line": 402, - "StartOffset": 12296, - "EndOffset": 12323, - "Content": "let mut ret = self.clone();" - }, - "new_addr": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "new_addr", - "File": "bytes.rs", - "Line": 1294, - "StartOffset": 36107, - "EndOffset": 36134, - "Content": "let new_addr = f(old_addr);" - }, - "old_addr": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "old_addr", - "File": "bytes.rs", - "Line": 1293, - "StartOffset": 36105, - "EndOffset": 36133, - "Content": "let old_addr = ptr as usize;" - }, - "old_size": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "old_size", - "File": "bytes.rs", - "Line": 1153, - "StartOffset": 31073, - "EndOffset": 31138, - "Content": "let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);" - }, - "ptr": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "ptr", - "File": "bytes.rs", - "Line": 874, - "StartOffset": 23091, - "EndOffset": 23133, - "Content": "let ptr = Box::into_raw(slice) as *mut u8;" - }, - "ref_cnt": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "ref_cnt", - "File": "bytes.rs", - "Line": 1058, - "StartOffset": 28229, - "EndOffset": 28302, - "Content": "let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);" - }, - "ret": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "ret", - "File": "bytes.rs", - "Line": 587, - "StartOffset": 16749, - "EndOffset": 16777, - "Content": "let ret = self.slice(..len);" - }, - "shared": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared", - "File": "bytes.rs", - "Line": 1195, - "StartOffset": 32454, - "EndOffset": 32489, - "Content": "let shared = Box::into_raw(shared);" - }, - "slice": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "slice", - "File": "bytes.rs", - "Line": 934, - "StartOffset": 24611, - "EndOffset": 24655, - "Content": "let slice = slice::from_raw_parts(ptr, len);" - }, - "sub_len": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "sub_len", - "File": "bytes.rs", - "Line": 340, - "StartOffset": 10596, - "EndOffset": 10623, - "Content": "let sub_len = subset.len();" - }, - "sub_offset": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "sub_offset", - "File": "bytes.rs", - "Line": 357, - "StartOffset": 11125, - "EndOffset": 11158, - "Content": "let sub_offset = sub_p - bytes_p;" - }, - "sub_p": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "sub_p", - "File": "bytes.rs", - "Line": 339, - "StartOffset": 10595, - "EndOffset": 10632, - "Content": "let sub_p = subset.as_ptr() as usize;" - }, - "t1": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "t1", - "File": "bytes.rs", - "Line": 1337, - "StartOffset": 37032, - "EndOffset": 37127, - "Content": "let t1 = thread::spawn(move || {\n let b: Bytes = (*a1).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });" - }, - "t2": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "t2", - "File": "bytes.rs", - "Line": 1342, - "StartOffset": 37195, - "EndOffset": 37290, - "Content": "let t2 = thread::spawn(move || {\n let b: Bytes = (*a2).clone();\n assert_eq!(b.as_ptr() as usize, addr);\n });" - }, - "v": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "v", - "File": "bytes.rs", - "Line": 1130, - "StartOffset": 30421, - "EndOffset": 30470, - "Content": "let v = slice::from_raw_parts(ptr, len).to_vec();" - } - } - } - }, - "Dependencies": {}, - "Files": { - "bytes.rs": { - "Path": "bytes.rs" - } - } - }, - "faststr@0.2.19": { - "Language": "rust", - "Version": "0.2.19", - "Name": "faststr", - "Dir": "", - "Packages": { - "faststr": { - "IsMain": false, - "IsTest": false, - "PkgPath": "faststr", - "Functions": { - "AsRef\u003cFastStr\u003e.as_ref": { + "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cFastStr\u003e.as_ref", - "File": "lib.rs", - "Line": 294, - "StartOffset": 9030, - "EndOffset": 9114, - "Content": "impl AsRef\u003cstr\u003e for FastStr {\n #[inline(always)]\n #[inline(always)]\n fn as_ref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 525, + "StartOffset": 16059, + "EndOffset": 16227, + "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 525, + "StartOffset": 16117, + "EndOffset": 16123 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 525, + "StartOffset": 16124, + "EndOffset": 16132 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 525, + "StartOffset": 16133, + "EndOffset": 16140 } - } - }, - "AsRef\u003cRepr\u003e.as_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cRepr\u003e.as_ref", - "File": "lib.rs", - "Line": 758, - "StartOffset": 21241, - "EndOffset": 21645, - "Content": "impl AsRef\u003c[u8]\u003e for Repr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n match self {\n Self::Empty =\u003e \u0026[],\n Self::Bytes(bytes) =\u003e bytes.as_ref(),\n Self::ArcStr(arc_str) =\u003e arc_str.as_bytes(),\n Self::ArcString(arc_string) =\u003e arc_string.as_bytes(),\n Self::StaticStr(s) =\u003e s.as_bytes(),\n Self::Inline { len, buf } =\u003e \u0026buf[..*len],\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16167, + "EndOffset": 16206 } - } - }, - "Borrow\u003cFastStr\u003e.borrow": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Borrow\u003cFastStr\u003e.borrow", - "File": "lib.rs", - "Line": 477, - "StartOffset": 13041, - "EndOffset": 13118, - "Content": "impl Borrow\u003cstr\u003e for FastStr {\n #[inline]\n #[inline]\n fn borrow(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 526, + "StartOffset": 16207, + "EndOffset": 16220 } - } + ] }, - "Debug\u003cFastStr\u003e.fmt": { + "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Debug\u003cFastStr\u003e.fmt", - "File": "lib.rs", - "Line": 411, - "StartOffset": 11173, - "EndOffset": 11277, - "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 521, + "StartOffset": 15887, + "EndOffset": 16053, + "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 521, + "StartOffset": 15944, + "EndOffset": 15950 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 521, + "StartOffset": 15951, + "EndOffset": 15959 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 521, + "StartOffset": 15960, + "EndOffset": 15967 } - } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 15994, + "EndOffset": 16033 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 522, + "StartOffset": 16034, + "EndOffset": 16046 + } + ] }, - "Default\u003cFastStr\u003e::default": { + "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Default\u003cFastStr\u003e::default", - "File": "lib.rs", - "Line": 280, - "StartOffset": 8821, - "EndOffset": 8890, - "Content": "impl Default for FastStr {\n #[inline]\n #[inline]\n fn default() -\u003e Self {\n Self::empty()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 540, + "StartOffset": 16553, + "EndOffset": 16869, + "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 547, + "StartOffset": 16817, + "EndOffset": 16840 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 545, + "StartOffset": 16719, + "EndOffset": 16725 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 546, + "StartOffset": 16770, + "EndOffset": 16792 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 540, + "StartOffset": 16605, + "EndOffset": 16610 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 540, + "StartOffset": 16620, + "EndOffset": 16624 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 540, + "StartOffset": 16625, + "EndOffset": 16632 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 546, + "StartOffset": 16756, + "EndOffset": 16769 } - } + ] }, - "Deref\u003cFastStr\u003e.deref": { + "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Deref\u003cFastStr\u003e.deref", - "File": "lib.rs", - "Line": 303, - "StartOffset": 9192, - "EndOffset": 9238, - "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "File": "src/lib.rs", + "Line": 529, + "StartOffset": 16233, + "EndOffset": 16547, + "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 536, + "StartOffset": 16495, + "EndOffset": 16518 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 534, + "StartOffset": 16398, + "EndOffset": 16404 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/lib.rs", + "Line": 535, + "StartOffset": 16448, + "EndOffset": 16470 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 529, + "StartOffset": 16284, + "EndOffset": 16289 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 529, + "StartOffset": 16299, + "EndOffset": 16303 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 529, + "StartOffset": 16304, + "EndOffset": 16311 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 535, + "StartOffset": 16435, + "EndOffset": 16447 } - } + ] }, - "Display\u003cFastStr\u003e.fmt": { + "Debug\u003cMetaInfo\u003e.fmt": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Display\u003cFastStr\u003e.fmt", - "File": "lib.rs", - "Line": 418, - "StartOffset": 11327, - "EndOffset": 11433, - "Content": "impl fmt::Display for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Display::fmt(self.as_str(), f)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "File": "src/lib.rs", + "Line": 622, + "StartOffset": 19109, + "EndOffset": 19217, + "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "FastStr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.as_str", - "File": "lib.rs", - "Line": 191, - "StartOffset": 5894, - "EndOffset": 6015, - "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(\u0026self) -\u003e \u0026str {\n self.0.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + }, + "Params": [ + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Formatter", + "File": "src/lib.rs", + "Line": 622, + "StartOffset": 19136, + "EndOffset": 19145 } - } + ], + "Results": [ + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "Result", + "File": "src/lib.rs", + "Line": 622, + "StartOffset": 19159, + "EndOffset": 19165 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "File": "src/lib.rs", + "Line": 623, + "StartOffset": 19178, + "EndOffset": 19190 + }, + { + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "File": "src/lib.rs", + "Line": 623, + "StartOffset": 19203, + "EndOffset": 19209 + } + ] }, - "FastStr.deep_clone_bytes": { + "Forward\u003cMetaInfo\u003e.get_all_persistents": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes", - "File": "lib.rs", - "Line": 242, - "StartOffset": 7413, - "EndOffset": 7838, - "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(\u0026self) -\u003e Self {\n Self(self.0.deep_clone_bytes())\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "File": "src/lib.rs", + "Line": 419, + "StartOffset": 12847, + "EndOffset": 13056, + "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 fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_persistents(),\n None =\u003e None,\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 419, + "StartOffset": 12880, + "EndOffset": 12886 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 419, + "StartOffset": 12888, + "EndOffset": 12896 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 419, + "StartOffset": 12897, + "EndOffset": 12904 } - } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 421, + "StartOffset": 12992, + "EndOffset": 13011 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 420, + "StartOffset": 12950, + "EndOffset": 12956 + } + ] }, - "FastStr.index": { + "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.index", - "File": "lib.rs", - "Line": 221, - "StartOffset": 6678, - "EndOffset": 6993, - "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(\u0026self, start: usize, end: usize) -\u003e Self {\n Self(self.0.slice_ref(\u0026self.as_bytes()[start..end]))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "File": "src/lib.rs", + "Line": 432, + "StartOffset": 13251, + "EndOffset": 13436, + "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 fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(HttpConverter)\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 434, + "StartOffset": 13331, + "EndOffset": 13337 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 434, + "StartOffset": 13338, + "EndOffset": 13346 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 434, + "StartOffset": 13347, + "EndOffset": 13354 } - } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 435, + "StartOffset": 13381, + "EndOffset": 13415 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 435, + "StartOffset": 13416, + "EndOffset": 13429 + } + ] }, - "FastStr.into_bytes": { + "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes", - "File": "lib.rs", - "Line": 197, - "StartOffset": 6044, - "EndOffset": 6174, - "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) -\u003e Bytes {\n self.0.into_bytes()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "File": "src/lib.rs", + "Line": 426, + "StartOffset": 13062, + "EndOffset": 13245, + "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 fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(RpcConverter)\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 428, + "StartOffset": 13141, + "EndOffset": 13147 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 428, + "StartOffset": 13148, + "EndOffset": 13156 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 428, + "StartOffset": 13157, + "EndOffset": 13164 } - } + ], + "MethodCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 429, + "StartOffset": 13191, + "EndOffset": 13225 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 429, + "StartOffset": 13226, + "EndOffset": 13238 + } + ] }, - "FastStr.into_string": { + "Forward\u003cMetaInfo\u003e.get_all_transients": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_string", - "File": "lib.rs", - "Line": 231, - "StartOffset": 7059, - "EndOffset": 7379, - "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) -\u003e String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "File": "src/lib.rs", + "Line": 438, + "StartOffset": 13442, + "EndOffset": 13649, + "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 fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 438, + "StartOffset": 13474, + "EndOffset": 13480 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 438, + "StartOffset": 13482, + "EndOffset": 13490 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 438, + "StartOffset": 13491, + "EndOffset": 13498 } - } - }, - "FastStr.is_empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.is_empty", - "File": "lib.rs", - "Line": 209, - "StartOffset": 6327, - "EndOffset": 6437, - "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(\u0026self) -\u003e bool {\n self.0.is_empty()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 440, + "StartOffset": 13586, + "EndOffset": 13604 } - } - }, - "FastStr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.len", - "File": "lib.rs", - "Line": 203, - "StartOffset": 6207, - "EndOffset": 6301, - "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(\u0026self) -\u003e usize {\n self.0.len()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 439, + "StartOffset": 13544, + "EndOffset": 13550 } - } + ] }, - "FastStr.slice_ref": { + "Forward\u003cMetaInfo\u003e.get_all_upstreams": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref", - "File": "lib.rs", - "Line": 215, - "StartOffset": 6468, - "EndOffset": 6623, - "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 #[inline(always)]\n pub fn slice_ref(\u0026self, subset: \u0026str) -\u003e Self {\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "File": "src/lib.rs", + "Line": 445, + "StartOffset": 13655, + "EndOffset": 13857, + "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 fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "FastStr::empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::empty", - "File": "lib.rs", - "Line": 72, - "StartOffset": 2099, - "EndOffset": 2185, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create an empty `FastStr`.\n #[inline]\n pub const fn empty() -\u003e Self {\n Self(Repr::empty())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + }, + "Results": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 445, + "StartOffset": 13686, + "EndOffset": 13692 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 445, + "StartOffset": 13694, + "EndOffset": 13702 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 445, + "StartOffset": 13703, + "EndOffset": 13710 } - } + ], + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 447, + "StartOffset": 13798, + "EndOffset": 13812 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 446, + "StartOffset": 13756, + "EndOffset": 13762 + } + ] }, - "FastStr::from_arc_str": { + "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_arc_str", - "File": "lib.rs", - "Line": 78, - "StartOffset": 2218, - "EndOffset": 2332, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 an `Arc\u003cstr\u003e`.\n #[inline]\n pub fn from_arc_str(s: Arc\u003cstr\u003e) -\u003e Self {\n Self(Repr::from_arc_str(s))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 474, + "StartOffset": 14466, + "EndOffset": 14766, + "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 fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 481, + "StartOffset": 14723, + "EndOffset": 14737 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 479, + "StartOffset": 14623, + "EndOffset": 14629 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 480, + "StartOffset": 14674, + "EndOffset": 14698 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 474, + "StartOffset": 14509, + "EndOffset": 14514 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 474, + "StartOffset": 14524, + "EndOffset": 14528 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 474, + "StartOffset": 14529, + "EndOffset": 14536 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 480, + "StartOffset": 14660, + "EndOffset": 14673 } - } + ] }, - "FastStr::from_arc_string": { + "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_arc_string", - "File": "lib.rs", - "Line": 90, - "StartOffset": 2521, - "EndOffset": 2644, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 an `Arc\u003cString\u003e`.\n #[inline]\n pub fn from_arc_string(s: Arc\u003cString\u003e) -\u003e Self {\n Self(Repr::from_arc_string(s))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 485, + "StartOffset": 14772, + "EndOffset": 15067, + "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 fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 492, + "StartOffset": 15026, + "EndOffset": 15038 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 490, + "StartOffset": 14927, + "EndOffset": 14933 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 491, + "StartOffset": 14978, + "EndOffset": 15001 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 485, + "StartOffset": 14813, + "EndOffset": 14818 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 485, + "StartOffset": 14828, + "EndOffset": 14832 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 485, + "StartOffset": 14833, + "EndOffset": 14840 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/lib.rs", + "Line": 491, + "StartOffset": 14964, + "EndOffset": 14977 } - } + ] }, - "FastStr::from_bytes": { + "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_bytes", - "File": "lib.rs", - "Line": 96, - "StartOffset": 2688, - "EndOffset": 2981, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_bytes(b: Bytes) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026b)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_bytes_unchecked(b) })\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "File": "src/lib.rs", + "Line": 452, + "StartOffset": 13863, + "EndOffset": 14161, + "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 fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "FastStr::from_bytes_mut": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_bytes_mut", - "File": "lib.rs", - "Line": 116, - "StartOffset": 3392, - "EndOffset": 3692, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_bytes_mut(b: BytesMut) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026b)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_bytes_mut_unchecked(b) })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 459, + "StartOffset": 14118, + "EndOffset": 14132 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 457, + "StartOffset": 14019, + "EndOffset": 14025 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/lib.rs", + "Line": 458, + "StartOffset": 14069, + "EndOffset": 14093 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 452, + "StartOffset": 13905, + "EndOffset": 13910 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 452, + "StartOffset": 13920, + "EndOffset": 13924 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 452, + "StartOffset": 13925, + "EndOffset": 13932 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 458, + "StartOffset": 14056, + "EndOffset": 14068 } - } + ] }, - "FastStr::from_bytes_mut_unchecked": { + "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_bytes_mut_unchecked", - "File": "lib.rs", - "Line": 125, - "StartOffset": 3754, - "EndOffset": 4096, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `BytesMut` object. This is an unsafe method\n /// because the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `b` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_bytes_mut_unchecked(b: BytesMut) -\u003e Self {\n let v = b.freeze();\n Self::from_bytes_unchecked(v)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "File": "src/lib.rs", + "Line": 463, + "StartOffset": 14167, + "EndOffset": 14460, + "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 fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 470, + "StartOffset": 14419, + "EndOffset": 14431 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 468, + "StartOffset": 14321, + "EndOffset": 14327 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/lib.rs", + "Line": 469, + "StartOffset": 14371, + "EndOffset": 14394 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 463, + "StartOffset": 14207, + "EndOffset": 14212 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/lib.rs", + "Line": 463, + "StartOffset": 14222, + "EndOffset": 14226 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 463, + "StartOffset": 14227, + "EndOffset": 14234 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/lib.rs", + "Line": 469, + "StartOffset": 14358, + "EndOffset": 14370 } - } + ] }, - "FastStr::from_bytes_unchecked": { - "Exported": false, + "MetaInfo.clear": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_bytes_unchecked", - "File": "lib.rs", - "Line": 105, - "StartOffset": 3039, - "EndOffset": 3343, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 `Bytes` object. This is an unsafe method\n /// because the caller must ensure that the bytes passed to it are valid UTF-8.\n ///\n /// # Safety\n ///\n /// `b` must be valid UTF-8.\n #[inline]\n pub unsafe fn from_bytes_unchecked(b: Bytes) -\u003e Self {\n Self(Repr::from_bytes_unchecked(b))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "File": "src/lib.rs", + "Line": 287, + "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(\u0026mut 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": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 292, + "StartOffset": 9076, + "EndOffset": 9082 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "File": "src/lib.rs", + "Line": 293, + "StartOffset": 9104, + "EndOffset": 9109 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/lib.rs", + "Line": 296, + "StartOffset": 9188, + "EndOffset": 9193 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "File": "src/lib.rs", + "Line": 299, + "StartOffset": 9296, + "EndOffset": 9301 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "File": "src/lib.rs", + "Line": 302, + "StartOffset": 9404, + "EndOffset": 9409 + } + ] }, - "FastStr::from_char_iter": { - "Exported": false, + "MetaInfo.contains": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_char_iter", - "File": "lib.rs", - "Line": 254, - "StartOffset": 7883, - "EndOffset": 8773, - "Content": "impl FastStr {\n /// Return the `FastStr` as a string slice.\n #[inline(always)]\n fn from_char_iter\u003cI: iter::Iterator\u003cItem = char\u003e\u003e(mut iter: I) -\u003e Self {\n let (min_size, _) = iter.size_hint();\n if min_size \u003e INLINE_CAP {\n let s: String = iter.collect();\n return Self(Repr::Bytes(Bytes::from(s)));\n }\n let mut len = 0;\n let mut buf = [0u8; INLINE_CAP];\n while let Some(ch) = iter.next() {\n let size = ch.len_utf8();\n if size + len \u003e INLINE_CAP {\n let (min_remaining, _) = iter.size_hint();\n let mut s = String::with_capacity(size + len + min_remaining);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..len]) });\n s.push(ch);\n s.extend(iter);\n return Self(Repr::Bytes(Bytes::from(s)));\n }\n ch.encode_utf8(\u0026mut buf[len..]);\n len += size;\n }\n Self(Repr::Inline { len, buf })\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "File": "src/lib.rs", + "Line": 175, + "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 180, + "StartOffset": 5512, + "EndOffset": 5518 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 181, + "StartOffset": 5534, + "EndOffset": 5537 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "File": "src/lib.rs", + "Line": 181, + "StartOffset": 5550, + "EndOffset": 5558 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 182, + "StartOffset": 5580, + "EndOffset": 5589 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 188, + "StartOffset": 5717, + "EndOffset": 5723 + } + ] }, - "FastStr::from_static_str": { - "Exported": false, + "MetaInfo.contains_faststr": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_static_str", - "File": "lib.rs", - "Line": 137, - "StartOffset": 4139, - "EndOffset": 4274, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 static string slice.\n #[inline]\n pub const fn from_static_str(s: \u0026'static str) -\u003e Self {\n Self(Repr::StaticStr(s))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "File": "src/lib.rs", + "Line": 192, + "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "FastStr::from_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "lib.rs", - "Line": 84, - "StartOffset": 2373, - "EndOffset": 2481, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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) -\u003e Self {\n Self(Repr::from_string(s))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 197, + "StartOffset": 5969, + "EndOffset": 5975 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 198, + "StartOffset": 5991, + "EndOffset": 5994 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "File": "src/lib.rs", + "Line": 198, + "StartOffset": 6023, + "EndOffset": 6031 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 199, + "StartOffset": 6053, + "EndOffset": 6062 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 205, + "StartOffset": 6190, + "EndOffset": 6196 } - } + ] }, - "FastStr::from_u8_slice": { - "Exported": false, + "MetaInfo.contains_string": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_u8_slice", - "File": "lib.rs", - "Line": 163, - "StartOffset": 5011, - "EndOffset": 5361, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[deprecated(\n since = \"0.2.13\",\n note = \"This method is not really zero-cost. Use `new_u8_slice` instead.\"\n )]\n #[inline]\n pub fn from_u8_slice(v: \u0026[u8]) -\u003e Result\u003cSelf, Utf8Error\u003e {\n Self::new_u8_slice(v)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "File": "src/lib.rs", + "Line": 209, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e 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": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 214, + "StartOffset": 6447, + "EndOffset": 6453 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 215, + "StartOffset": 6469, + "EndOffset": 6472 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/lib.rs", + "Line": 215, + "StartOffset": 6485, + "EndOffset": 6497 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 215, + "StartOffset": 6502, + "EndOffset": 6508 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 216, + "StartOffset": 6526, + "EndOffset": 6535 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 222, + "StartOffset": 6663, + "EndOffset": 6669 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 211, + "StartOffset": 6363, + "EndOffset": 6368 + } + ] }, - "FastStr::from_u8_slice_unchecked": { - "Exported": false, + "MetaInfo.derive": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_u8_slice_unchecked", - "File": "lib.rs", - "Line": 174, - "StartOffset": 5396, - "EndOffset": 5846, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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 #[deprecated(\n since = \"0.2.13\",\n note = \"This method is not really zero-cost. Use `new_u8_slice_unchecked` instead.\"\n )]\n #[inline]\n pub unsafe fn from_u8_slice_unchecked(v: \u0026[u8]) -\u003e Self {\n Self::new_u8_slice_unchecked(v)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive", + "File": "src/lib.rs", + "Line": 105, + "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) -\u003e (MetaInfo, MetaInfo) {\n if self.tmap.is_none() \u0026\u0026 self.smap.is_none() \u0026\u0026 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}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "Results": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 105, + "StartOffset": 3000, + "EndOffset": 3012 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "File": "src/lib.rs", + "Line": 126, + "StartOffset": 3916, + "EndOffset": 3919 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 128, + "StartOffset": 3967, + "EndOffset": 3976 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 112, + "StartOffset": 3293, + "EndOffset": 3300 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "File": "src/lib.rs", + "Line": 115, + "StartOffset": 3501, + "EndOffset": 3506 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "File": "src/lib.rs", + "Line": 124, + "StartOffset": 3823, + "EndOffset": 3827 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "File": "src/lib.rs", + "Line": 128, + "StartOffset": 3980, + "EndOffset": 3985 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 111, + "StartOffset": 3250, + "EndOffset": 3258 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 126, + "StartOffset": 3911, + "EndOffset": 3914 + } + ] }, - "FastStr::from_vec_u8": { + "MetaInfo.ensure_backward_node": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8", - "File": "lib.rs", - "Line": 143, - "StartOffset": 4312, - "EndOffset": 4600, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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\u003cu8\u003e`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn from_vec_u8(v: Vec\u003cu8\u003e) -\u003e Result\u003cSelf, Utf8Error\u003e {\n from_utf8(\u0026v)?;\n // Safety: we have checked b is utf-8 valid\n Ok(unsafe { Self::from_vec_u8_unchecked(v) })\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "File": "src/lib.rs", + "Line": 354, + "StartOffset": 10983, + "EndOffset": 11132, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(\u0026mut self) {\n if self.backward_node.is_none() {\n self.backward_node = Some(Node::default())\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 355, + "StartOffset": 11050, + "EndOffset": 11057 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 356, + "StartOffset": 11100, + "EndOffset": 11104 + } + ] }, - "FastStr::from_vec_u8_unchecked": { + "MetaInfo.ensure_forward_node": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_vec_u8_unchecked", - "File": "lib.rs", - "Line": 152, - "StartOffset": 4659, - "EndOffset": 4961, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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\u003cu8\u003e`. 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\u003cu8\u003e) -\u003e Self {\n Self::from_bytes_unchecked(v.into())\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node", + "File": "src/lib.rs", + "Line": 348, + "StartOffset": 10831, + "EndOffset": 10977, + "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(\u0026mut self) {\n if self.forward_node.is_none() {\n self.forward_node = Some(Node::default())\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "FastStr::new": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::new", - "File": "lib.rs", - "Line": 25, - "StartOffset": 557, - "EndOffset": 913, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n pub fn new\u003cT\u003e(text: T) -\u003e Self\n where\n T: AsRef\u003cstr\u003e,\n {\n Self(Repr::new(text))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 349, + "StartOffset": 10896, + "EndOffset": 10903 } - } - }, - "FastStr::new_inline": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::new_inline", - "File": "lib.rs", - "Line": 37, - "StartOffset": 948, - "EndOffset": 1390, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\n ///\n /// For small strings (up to 24 bytes), this avoids heap allocation, and copies on stack.\n #[inline]\n /// Create a new inline `FastStr` (up to 24 bytes long) from a string slice `s`.\n ///\n /// This constructor panics if the length of `s` is greater than 24.\n ///\n /// Note: the inline length is not guaranteed.\n #[inline]\n #[doc(hidden)]\n #[deprecated(\n since = \"0.2.13\",\n note = \"The inline threshold is not stable. Please use `FastStr::new()` instead.\"\n )]\n pub fn new_inline(s: \u0026str) -\u003e Self {\n Self(Repr::new_inline(s))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 350, + "StartOffset": 10945, + "EndOffset": 10949 } - } + ] }, - "FastStr::new_u8_slice": { - "Exported": false, + "MetaInfo.extend": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice", - "File": "lib.rs", - "Line": 52, - "StartOffset": 1429, - "EndOffset": 1676, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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`, returning a\n /// `Result\u003cFastStr, Utf8Error\u003e` if the bytes are not valid UTF-8.\n #[inline]\n pub fn new_u8_slice(v: \u0026[u8]) -\u003e Result\u003cSelf, Utf8Error\u003e {\n let s = from_utf8(v)?;\n Ok(Self::new(s))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "File": "src/lib.rs", + "Line": 309, + "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(\u0026mut 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": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/lib.rs", + "Line": 315, + "StartOffset": 9826, + "EndOffset": 9839 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 321, + "StartOffset": 10013, + "EndOffset": 10026 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/lib.rs", + "Line": 327, + "StartOffset": 10226, + "EndOffset": 10239 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 315, + "StartOffset": 9795, + "EndOffset": 9813 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "File": "src/lib.rs", + "Line": 316, + "StartOffset": 9876, + "EndOffset": 9882 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 322, + "StartOffset": 10063, + "EndOffset": 10069 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "File": "src/lib.rs", + "Line": 328, + "StartOffset": 10276, + "EndOffset": 10282 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/lib.rs", + "Line": 332, + "StartOffset": 10391, + "EndOffset": 10398 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 335, + "StartOffset": 10506, + "EndOffset": 10512 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/lib.rs", + "Line": 335, + "StartOffset": 10515, + "EndOffset": 10521 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/lib.rs", + "Line": 335, + "StartOffset": 10524, + "EndOffset": 10530 + } + ], + "Types": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 312, + "StartOffset": 9703, + "EndOffset": 9711 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 315, + "StartOffset": 9817, + "EndOffset": 9824 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 321, + "StartOffset": 10003, + "EndOffset": 10011 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 327, + "StartOffset": 10214, + "EndOffset": 10224 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 315, + "StartOffset": 9840, + "EndOffset": 9856 + } + ] }, - "FastStr::new_u8_slice_unchecked": { - "Exported": false, + "MetaInfo.get": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::new_u8_slice_unchecked", - "File": "lib.rs", - "Line": 60, - "StartOffset": 1706, - "EndOffset": 2073, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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: \u0026[u8]) -\u003e Self {\n let s = unsafe { std::str::from_utf8_unchecked(v) };\n Self::new(s)\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "File": "src/lib.rs", + "Line": 226, + "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\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::\u003cT\u003e())\n })\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 229, + "StartOffset": 6887, + "EndOffset": 6893 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 229, + "StartOffset": 6896, + "EndOffset": 6904 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "File": "src/lib.rs", + "Line": 229, + "StartOffset": 6917, + "EndOffset": 6920 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 229, + "StartOffset": 6924, + "EndOffset": 6931 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 232, + "StartOffset": 7029, + "EndOffset": 7035 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 228, + "StartOffset": 6856, + "EndOffset": 6862 + } + ] }, - "From\u003cBytes\u003e::from": { + "MetaInfo.get_all_backword_transients_with_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "From\u003cBytes\u003e::from", - "File": "lib.rs", - "Line": 318, - "StartOffset": 9414, - "EndOffset": 9496, - "Content": "impl From\u003cFastStr\u003e for Bytes {\n #[inline]\n #[inline]\n fn from(val: FastStr) -\u003e Self {\n val.into_bytes()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "File": "src/lib.rs", + "Line": 591, + "StartOffset": 18217, + "EndOffset": 19070, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Bytes" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "From\u003cFastStr\u003e::from": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "From\u003cFastStr\u003e::from", - "File": "lib.rs", - "Line": 518, - "StartOffset": 13787, - "EndOffset": 13879, - "Content": "impl From\u003cArc\u003cString\u003e\u003e for FastStr {\n #[inline]\n #[inline]\n fn from(val: Arc\u003cString\u003e) -\u003e Self {\n Self::from_arc_string(val)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 601, + "StartOffset": 18507, + "EndOffset": 18525 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 606, + "StartOffset": 18714, + "EndOffset": 18727 } - } - }, - "From\u003cString\u003e::from": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "From\u003cString\u003e::from", - "File": "lib.rs", - "Line": 310, - "StartOffset": 9268, - "EndOffset": 9380, - "Content": "impl From\u003cFastStr\u003e for String {\n #[inline]\n #[inline]\n fn from(val: FastStr) -\u003e Self {\n #[allow(deprecated)]\n val.into_string()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + ], + "MethodCalls": [ + { "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String" + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 599, + "StartOffset": 18430, + "EndOffset": 18436 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 602, + "StartOffset": 18566, + "EndOffset": 18569 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 607, + "StartOffset": 18762, + "EndOffset": 18768 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 608, + "StartOffset": 18796, + "EndOffset": 18800 + }, + { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "File": "src/lib.rs", + "Line": 609, + "StartOffset": 18832, + "EndOffset": 18835 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 609, + "StartOffset": 18856, + "EndOffset": 18876 } - } - }, - "FromIterator\u003cFastStr\u003e::from_iter": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FromIterator\u003cFastStr\u003e::from_iter", - "File": "lib.rs", - "Line": 470, - "StartOffset": 12843, - "EndOffset": 12987, - "Content": "impl\u003c'a\u003e iter::FromIterator\u003c\u0026'a str\u003e for FastStr {\n #[inline]\n #[inline]\n fn from_iter\u003cI: iter::IntoIterator\u003cItem = \u0026'a str\u003e\u003e(iter: I) -\u003e FastStr {\n build_from_str_iter(iter.into_iter())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 595, + "StartOffset": 18324, + "EndOffset": 18330 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 595, + "StartOffset": 18331, + "EndOffset": 18339 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 595, + "StartOffset": 18340, + "EndOffset": 18347 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 597, + "StartOffset": 18380, + "EndOffset": 18389 } - } + ] }, - "FromStr\u003cFastStr\u003e::from_str": { + "MetaInfo.get_all_persistents_and_transients": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FromStr\u003cFastStr\u003e::from_str", - "File": "lib.rs", - "Line": 486, - "StartOffset": 13202, - "EndOffset": 13275, - "Content": "impl FromStr for FastStr {\n type Err = Infallible;\n\n #[inline]\n #[inline]\n fn from_str(s: \u0026str) -\u003e Result\u003cFastStr, Self::Err\u003e {\n Ok(FastStr::new(s))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "File": "src/lib.rs", + "Line": 553, + "StartOffset": 16893, + "EndOffset": 18211, + "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "Hash\u003cFastStr\u003e.hash": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Hash\u003cFastStr\u003e.hash", - "File": "lib.rs", - "Line": 404, - "StartOffset": 11031, - "EndOffset": 11130, - "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash\u003cH: hash::Hasher\u003e(\u0026self, hasher: \u0026mut H) {\n self.as_str().hash(hasher)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/lib.rs", + "Line": 563, + "StartOffset": 17178, + "EndOffset": 17197 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "File": "src/lib.rs", + "Line": 570, + "StartOffset": 17522, + "EndOffset": 17535 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 561, + "StartOffset": 17100, + "EndOffset": 17106 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17303, + "EndOffset": 17306 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17313, + "EndOffset": 17316 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "File": "src/lib.rs", + "Line": 565, + "StartOffset": 17320, + "EndOffset": 17329 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/lib.rs", + "Line": 572, + "StartOffset": 17627, + "EndOffset": 17633 + }, + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/lib.rs", + "Line": 574, + "StartOffset": 17700, + "EndOffset": 17704 + }, + { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "File": "src/lib.rs", + "Line": 575, + "StartOffset": 17736, + "EndOffset": 17739 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "File": "src/lib.rs", + "Line": 582, + "StartOffset": 18051, + "EndOffset": 18071 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 557, + "StartOffset": 16995, + "EndOffset": 17001 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 557, + "StartOffset": 17002, + "EndOffset": 17010 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 557, + "StartOffset": 17011, + "EndOffset": 17018 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/lib.rs", + "Line": 559, + "StartOffset": 17051, + "EndOffset": 17060 } - } + ] }, - "Ord\u003cFastStr\u003e.cmp": { - "Exported": false, + "MetaInfo.get_faststr": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Ord\u003cFastStr\u003e.cmp", - "File": "lib.rs", - "Line": 390, - "StartOffset": 10746, - "EndOffset": 10833, - "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(\u0026self, other: \u0026FastStr) -\u003e Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "PartialEq\u003cFastStr\u003e.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cFastStr\u003e.eq", - "File": "lib.rs", - "Line": 325, - "StartOffset": 9529, - "EndOffset": 9626, - "Content": "impl PartialEq\u003cFastStr\u003e for FastStr {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n self.as_str() == other.as_str()\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "File": "src/lib.rs", + "Line": 243, + "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: \u0026FastStrMap| faststr_tmap.get::\u003cT\u003e())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::\u003cT\u003e())\n })\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 247, + "StartOffset": 7523, + "EndOffset": 7529 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 248, + "StartOffset": 7545, + "EndOffset": 7553 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "File": "src/lib.rs", + "Line": 248, + "StartOffset": 7595, + "EndOffset": 7598 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 249, + "StartOffset": 7620, + "EndOffset": 7627 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 252, + "StartOffset": 7737, + "EndOffset": 7743 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 245, + "StartOffset": 7465, + "EndOffset": 7471 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 245, + "StartOffset": 7473, + "EndOffset": 7480 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 248, + "StartOffset": 7570, + "EndOffset": 7580 } - } + ] }, - "PartialEq\u003cString\u003e.eq": { - "Exported": false, + "MetaInfo.get_string": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cString\u003e.eq", - "File": "lib.rs", - "Line": 369, - "StartOffset": 10347, - "EndOffset": 10443, - "Content": "impl PartialEq\u003cFastStr\u003e for String {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n other == self\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "File": "src/lib.rs", + "Line": 265, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003c\u0026FastStr\u003e {\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": "", - "PkgPath": "alloc::string", - "Name": "String" + "PkgPath": "core::option", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 269, + "StartOffset": 8315, + "EndOffset": 8321 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 270, + "StartOffset": 8337, + "EndOffset": 8345 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "File": "src/lib.rs", + "Line": 270, + "StartOffset": 8358, + "EndOffset": 8361 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 270, + "StartOffset": 8366, + "EndOffset": 8372 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", + "File": "src/lib.rs", + "Line": 271, + "StartOffset": 8390, + "EndOffset": 8397 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 274, + "StartOffset": 8507, + "EndOffset": 8513 } - } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 267, + "StartOffset": 8235, + "EndOffset": 8240 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 267, + "StartOffset": 8265, + "EndOffset": 8271 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 267, + "StartOffset": 8273, + "EndOffset": 8280 + } + ] }, - "PartialEq\u003ceq\u003e.eq": { - "Exported": false, + "MetaInfo.insert": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003ceq\u003e.eq", - "File": "lib.rs", - "Line": 341, - "StartOffset": 9826, - "EndOffset": 9919, - "Content": "impl PartialEq\u003cFastStr\u003e for str {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n other == self\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "File": "src/lib.rs", + "Line": 151, + "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\u003cT: Send + Sync + 'static\u003e(\u0026mut 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": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "eq" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/lib.rs", + "Line": 155, + "StartOffset": 4737, + "EndOffset": 4750 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 155, + "StartOffset": 4706, + "EndOffset": 4724 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "File": "src/lib.rs", + "Line": 156, + "StartOffset": 4783, + "EndOffset": 4789 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/lib.rs", + "Line": 153, + "StartOffset": 4631, + "EndOffset": 4635 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/lib.rs", + "Line": 153, + "StartOffset": 4638, + "EndOffset": 4642 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 155, + "StartOffset": 4728, + "EndOffset": 4735 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 155, + "StartOffset": 4751, + "EndOffset": 4767 + } + ] }, - "PartialOrd\u003cFastStr\u003e.partial_cmp": { - "Exported": false, + "MetaInfo.insert_faststr": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp", - "File": "lib.rs", - "Line": 397, - "StartOffset": 10883, - "EndOffset": 10993, - "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(\u0026self, other: \u0026FastStr) -\u003e Option\u003cOrdering\u003e {\n Some(self.cmp(other))\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_faststr", + "File": "src/lib.rs", + "Line": 159, + "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\u003cT: Send + Sync + 'static\u003e(\u0026mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::\u003cT\u003e(val);\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "Repr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.as_str", - "File": "lib.rs", - "Line": 646, - "StartOffset": 17119, - "EndOffset": 17619, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(\u0026self) -\u003e \u0026str {\n match self {\n Self::Empty =\u003e \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { std::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) =\u003e arc_str,\n Self::ArcString(arc_string) =\u003e arc_string,\n Self::StaticStr(s) =\u003e s,\n Self::Inline { len, buf } =\u003e unsafe { std::str::from_utf8_unchecked(\u0026buf[..*len]) },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + }, + "FunctionCalls": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/lib.rs", + "Line": 163, + "StartOffset": 5024, + "EndOffset": 5037 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 163, + "StartOffset": 4990, + "EndOffset": 5008 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "File": "src/lib.rs", + "Line": 164, + "StartOffset": 5070, + "EndOffset": 5076 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/lib.rs", + "Line": 161, + "StartOffset": 4901, + "EndOffset": 4905 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/lib.rs", + "Line": 161, + "StartOffset": 4908, + "EndOffset": 4912 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 161, + "StartOffset": 4940, + "EndOffset": 4947 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 163, + "StartOffset": 5012, + "EndOffset": 5022 } - } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 163, + "StartOffset": 5038, + "EndOffset": 5054 + } + ] }, - "Repr.deep_clone_bytes": { - "Exported": false, + "MetaInfo.insert_string": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes", - "File": "lib.rs", - "Line": 690, - "StartOffset": 18792, - "EndOffset": 19422, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(\u0026self) -\u003e Self {\n match self {\n Self::Empty =\u003e Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { Self::new(std::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) =\u003e Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) =\u003e Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) =\u003e Self::StaticStr(s),\n Self::Inline { len, buf } =\u003e Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "File": "src/lib.rs", + "Line": 167, + "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(\u0026mut 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": 171, + "StartOffset": 5288, + "EndOffset": 5301 + } + ], + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "File": "src/lib.rs", + "Line": 171, + "StartOffset": 5256, + "EndOffset": 5274 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "File": "src/lib.rs", + "Line": 172, + "StartOffset": 5334, + "EndOffset": 5340 + } + ], + "Types": [ + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 169, + "StartOffset": 5200, + "EndOffset": 5207 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 171, + "StartOffset": 5278, + "EndOffset": 5286 } - } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 171, + "StartOffset": 5302, + "EndOffset": 5318 + } + ] }, - "Repr.into_bytes": { - "Exported": false, + "MetaInfo.remove": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_bytes", - "File": "lib.rs", - "Line": 676, - "StartOffset": 18248, - "EndOffset": 18777, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -\u003e Bytes {\n match self {\n Self::Empty =\u003e Bytes::new(),\n Self::Bytes(bytes) =\u003e bytes,\n Self::ArcStr(arc_str) =\u003e Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) =\u003e {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) =\u003e Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } =\u003e Bytes::from(buf[..len].to_vec()),\n }\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "File": "src/lib.rs", + "Line": 236, + "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 240, + "StartOffset": 7269, + "EndOffset": 7275 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 240, + "StartOffset": 7278, + "EndOffset": 7286 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "File": "src/lib.rs", + "Line": 240, + "StartOffset": 7299, + "EndOffset": 7305 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 239, + "StartOffset": 7239, + "EndOffset": 7245 + } + ] }, - "Repr.into_string": { - "Exported": false, + "MetaInfo.remove_faststr": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_string", - "File": "lib.rs", - "Line": 659, - "StartOffset": 17634, - "EndOffset": 18233, - "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -\u003e String {\n match self {\n Self::Empty =\u003e String::new(),\n Self::Bytes(bytes) =\u003e unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) =\u003e arc_str.to_string(),\n Self::ArcString(arc_string) =\u003e {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) =\u003e s.to_string(),\n Self::Inline { len, buf } =\u003e unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "File": "src/lib.rs", + "Line": 256, + "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 261, + "StartOffset": 8035, + "EndOffset": 8041 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 262, + "StartOffset": 8057, + "EndOffset": 8065 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "File": "src/lib.rs", + "Line": 262, + "StartOffset": 8094, + "EndOffset": 8100 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 259, + "StartOffset": 7978, + "EndOffset": 7984 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 259, + "StartOffset": 7985, + "EndOffset": 7992 } - } + ] }, - "Repr.is_empty": { - "Exported": false, + "MetaInfo.remove_string": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.is_empty", - "File": "lib.rs", - "Line": 634, - "StartOffset": 16727, - "EndOffset": 17104, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(\u0026self) -\u003e bool {\n match self {\n Self::Empty =\u003e true,\n Self::Bytes(bytes) =\u003e bytes.is_empty(),\n Self::ArcStr(arc_str) =\u003e arc_str.is_empty(),\n Self::ArcString(arc_string) =\u003e arc_string.is_empty(),\n Self::StaticStr(s) =\u003e s.is_empty(),\n Self::Inline { len, .. } =\u003e *len == 0,\n }\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "File": "src/lib.rs", + "Line": 278, + "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n self.smap\n .as_mut()\n .and_then(|smap| smap.remove(key.as_ref()))\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } - }, - "Repr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.len", - "File": "lib.rs", - "Line": 622, - "StartOffset": 16367, - "EndOffset": 16712, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(\u0026self) -\u003e usize {\n match self {\n Self::Empty =\u003e 0,\n Self::Bytes(bytes) =\u003e bytes.len(),\n Self::ArcStr(arc_str) =\u003e arc_str.len(),\n Self::ArcString(arc_string) =\u003e arc_string.len(),\n Self::StaticStr(s) =\u003e s.len(),\n Self::Inline { len, .. } =\u003e *len,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/lib.rs", + "Line": 283, + "StartOffset": 8799, + "EndOffset": 8805 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/lib.rs", + "Line": 284, + "StartOffset": 8821, + "EndOffset": 8829 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", + "File": "src/lib.rs", + "Line": 284, + "StartOffset": 8842, + "EndOffset": 8848 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "File": "src/lib.rs", + "Line": 284, + "StartOffset": 8853, + "EndOffset": 8859 } - } - }, - "Repr.slice_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.slice_ref", - "File": "lib.rs", - "Line": 706, - "StartOffset": 19437, - "EndOffset": 21223, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e 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 \u003e= 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 \u003c= 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 =\u003e panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) =\u003e Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) =\u003e Self::StaticStr(unsafe {\n std::str::from_utf8_unchecked(\u0026s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } =\u003e Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(\u0026buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/lib.rs", + "Line": 281, + "StartOffset": 8716, + "EndOffset": 8721 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 281, + "StartOffset": 8750, + "EndOffset": 8756 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 281, + "StartOffset": 8757, + "EndOffset": 8764 } - } + ] }, - "Repr::empty": { + "MetaInfo::from_node": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::empty", - "File": "lib.rs", - "Line": 591, - "StartOffset": 15601, - "EndOffset": 15648, - "Content": "impl Repr {\n #[inline]\n #[inline]\n const fn empty() -\u003e Self {\n Self::Empty\n }\n}", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", + "File": "src/lib.rs", + "Line": 134, + "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\u003cMetaInfo\u003e,\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n ) -\u003e 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": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo" } - } + }, + "Types": [ + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 136, + "StartOffset": 4232, + "EndOffset": 4235 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 136, + "StartOffset": 4236, + "EndOffset": 4244 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 137, + "StartOffset": 4269, + "EndOffset": 4275 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 137, + "StartOffset": 4280, + "EndOffset": 4284 + } + ] }, - "Repr::from_arc_str": { - "Exported": false, - "IsMethod": true, + "del_impl": { + "Exported": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::from_arc_str", - "File": "lib.rs", - "Line": 596, - "StartOffset": 15673, - "EndOffset": 15732, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_arc_str(s: Arc\u003cstr\u003e) -\u003e Self {\n Self::ArcStr(s)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "del_impl", + "File": "src/lib.rs", + "Line": 392, + "StartOffset": 12000, + "EndOffset": 12396, + "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n if let Some(node) = self.[\u003c$node _node\u003e].as_mut() {\n node.[\u003cdel_ $func_name\u003e](key)\n } else {\n None\n }\n }\n }\n };\n}" }, - "Repr::from_arc_string": { - "Exported": false, - "IsMethod": true, + "get_impl": { + "Exported": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::from_arc_string", - "File": "lib.rs", - "Line": 608, - "StartOffset": 15982, - "EndOffset": 16167, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_arc_string(s: Arc\u003cString\u003e) -\u003e Self {\n match Arc::try_unwrap(s) {\n Ok(s) =\u003e Self::from_string(s),\n Err(s) =\u003e Self::ArcString(s),\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "File": "src/lib.rs", + "Line": 361, + "StartOffset": 11136, + "EndOffset": 11513, + "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n match self.[\u003c$node _node\u003e].as_ref() {\n Some(node) =\u003e node.[\u003cget_ $func_name\u003e](key),\n None =\u003e None,\n }\n }\n }\n };\n}" }, - "Repr::from_bytes_unchecked": { - "Exported": false, - "IsMethod": true, + "set_impl": { + "Exported": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::from_bytes_unchecked", - "File": "lib.rs", - "Line": 616, - "StartOffset": 16182, - "EndOffset": 16335, - "Content": "impl Repr {\n #[inline]\n /// Safety: the caller must guarantee that the bytes `v` are valid UTF-8.\n #[inline]\n unsafe fn from_bytes_unchecked(bytes: Bytes) -\u003e Self {\n Self::Bytes(bytes)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "File": "src/lib.rs", + "Line": 374, + "StartOffset": 11515, + "EndOffset": 11998, + "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n ) {\n self.[\u003censure_ $node _node\u003e]();\n self.[\u003c$node _node\u003e]\n .as_mut()\n .unwrap()\n .[\u003cset_ $func_name\u003e](key, value)\n }\n }\n };\n}" + } + }, + "Types": { + "MetaInfo": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "File": "src/lib.rs", + "Line": 36, + "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::\u003ci8\u003e(2);\n/// assert_eq!(*m1.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// m2.insert::\u003ci8\u003e(4);\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 4);\n///\n/// m2.remove::\u003ci8\u003e();\n/// assert_eq!(*m2.get::\u003ci8\u003e().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\u003cArc\u003cMetaInfo\u003e\u003e,\n tmap: Option\u003cTypeMap\u003e,\n smap: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e, // for str k-v\n faststr_tmap: Option\u003cFastStrMap\u003e, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 67, + "StartOffset": 1842, + "EndOffset": 1848 + }, + { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "File": "src/lib.rs", + "Line": 67, + "StartOffset": 1849, + "EndOffset": 1852 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 68, + "StartOffset": 1875, + "EndOffset": 1881 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/lib.rs", + "Line": 68, + "StartOffset": 1882, + "EndOffset": 1889 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1902, + "EndOffset": 1908 + }, + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1909, + "EndOffset": 1917 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr::from_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::from_string", - "File": "lib.rs", - "Line": 601, - "StartOffset": 15761, - "EndOffset": 15921, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn from_string(s: String) -\u003e Self {\n let v = s.into_bytes();\n // Safety: s is a `String`, thus we can assume it's valid utf-8\n unsafe { Self::from_bytes_unchecked(v.into()) }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr::new": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::new", - "File": "lib.rs", - "Line": 554, - "StartOffset": 14531, - "EndOffset": 14979, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn new\u003cT\u003e(text: T) -\u003e Self\n where\n T: AsRef\u003cstr\u003e,\n {\n let text = text.as_ref();\n if text.is_empty() {\n return Self::Empty;\n }\n {\n let len = text.len();\n if len \u003c= INLINE_CAP {\n // Safety: we have checked the length of text \u003c= `INLINE_CAP`.\n return unsafe { Self::new_inline_impl(text) };\n }\n }\n\n Self::Bytes(Bytes::copy_from_slice(text.as_bytes()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr::new_inline": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::new_inline", - "File": "lib.rs", - "Line": 574, - "StartOffset": 15045, - "EndOffset": 15258, - "Content": "impl Repr {\n #[inline]\n fn new_inline(s: \u0026str) -\u003e Self {\n if s.len() \u003e INLINE_CAP {\n panic!(\"[FastStr] string is too long to inline\");\n }\n // Safety: we have checked the length of s \u003c= `INLINE_CAP`.\n unsafe { Self::new_inline_impl(s) }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr::new_inline_impl": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr::new_inline_impl", - "File": "lib.rs", - "Line": 582, - "StartOffset": 15307, - "EndOffset": 15553, - "Content": "impl Repr {\n #[inline]\n /// # Safety\n ///\n /// The length of `s` must be \u003c= `INLINE_CAP`.\n unsafe fn new_inline_impl(s: \u0026str) -\u003e Self {\n let mut buf = [0u8; INLINE_CAP];\n std::ptr::copy_nonoverlapping(s.as_ptr(), buf.as_mut_ptr(), s.len());\n Self::Inline { len: s.len(), buf }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1918, + "EndOffset": 1925 + }, + { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "Repr" + "Name": "FastStr", + "File": "src/lib.rs", + "Line": 69, + "StartOffset": 1927, + "EndOffset": 1934 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1971, + "EndOffset": 1977 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/lib.rs", + "Line": 70, + "StartOffset": 1978, + "EndOffset": 1988 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 74, + "StartOffset": 2130, + "EndOffset": 2136 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 74, + "StartOffset": 2141, + "EndOffset": 2145 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/lib.rs", + "Line": 75, + "StartOffset": 2167, + "EndOffset": 2173 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "File": "src/lib.rs", + "Line": 75, + "StartOffset": 2178, + "EndOffset": 2182 } - } - }, - "build_from_str_iter": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "build_from_str_iter", - "File": "lib.rs", - "Line": 432, - "StartOffset": -1, - "EndOffset": 12383, - "Content": "fn build_from_str_iter\u003cT\u003e(mut iter: impl Iterator\u003cItem = T\u003e) -\u003e FastStr\nwhere\n T: AsRef\u003cstr\u003e,\n String: iter::Extend\u003cT\u003e,\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 \u003e INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..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": { - "Err": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Err", - "File": "lib.rs", - "Line": 484, - "StartOffset": 13148, - "EndOffset": 13170, - "Content": "type Err = Infallible;" - }, - "FastStr": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "lib.rs", - "Line": 15, - "StartOffset": -1, - "EndOffset": 387, - "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n#[derive(Clone)]\npub struct FastStr(Repr);", + ], "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cFastStr\u003e.as_ref" + "clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear" }, - "as_str": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.as_str" + "contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains" }, - "borrow": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Borrow\u003cFastStr\u003e.borrow" + "contains_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr" }, - "cmp": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Ord\u003cFastStr\u003e.cmp" + "contains_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string" }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes" + "derive": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.derive" }, - "deref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Deref\u003cFastStr\u003e.deref" + "ensure_backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node" }, - "eq": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cFastStr\u003e.eq" + "ensure_forward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_forward_node" + }, + "extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend" }, "fmt": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Debug\u003cFastStr\u003e.fmt" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt" }, - "hash": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Hash\u003cFastStr\u003e.hash" + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get" }, - "index": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.index" + "get_all_backward_downstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams" }, - "into_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes" + "get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients" }, - "into_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_string" + "get_all_backward_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix" }, - "is_empty": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.is_empty" + "get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix" }, - "len": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.len" + "get_all_backword_transients_with_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix" }, - "partial_cmp": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp" + "get_all_persistents": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents" }, - "slice_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref" - } - } - }, - "Repr": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr", - "File": "lib.rs", - "Line": 543, - "StartOffset": -1, - "EndOffset": 14475, - "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc\u003cstr\u003e),\n ArcString(Arc\u003cString\u003e),\n StaticStr(\u0026'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", - "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cRepr\u003e.as_ref" + "get_all_persistents_and_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients" }, - "as_str": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.as_str" + "get_all_persistents_and_transients_with_http_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix" }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes" + "get_all_persistents_and_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix" }, - "into_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "into_bytes" + "get_all_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients" }, - "into_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_string" + "get_all_upstreams": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams" }, - "is_empty": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.is_empty" + "get_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr" }, - "len": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.len" + "get_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string" }, - "slice_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.slice_ref" + "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" + }, + "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\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream" + }, + "strip_http_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent" + }, + "strip_http_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream" + }, + "strip_rpc_prefix_and_set_backward_downstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream" + }, + "strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent" + }, + "strip_rpc_prefix_and_set_upstream": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream" } } - }, - "Target": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Target", - "File": "lib.rs", - "Line": 301, - "StartOffset": 9144, - "EndOffset": 9162, - "Content": "type Target = str;" } }, "Vars": { - "(min_remaining, _)": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "(min_remaining, _)", - "File": "lib.rs", - "Line": 265, - "StartOffset": 8309, - "EndOffset": 8351, - "Content": "let (min_remaining, _) = iter.size_hint();" - }, - "(min_size, _)": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "(min_size, _)", - "File": "lib.rs", - "Line": 255, - "StartOffset": 7888, - "EndOffset": 7925, - "Content": "let (min_size, _) = iter.size_hint();" - }, - "INLINE_CAP": { + "DEFAULT_MAP_SIZE": { "IsExported": false, "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "INLINE_CAP", - "File": "lib.rs", - "Line": 541, - "StartOffset": -1, - "EndOffset": 14334, - "Content": "const INLINE_CAP: usize = 24;" - }, - "bytes_len": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "bytes_len", - "File": "lib.rs", - "Line": 712, - "StartOffset": 19578, - "EndOffset": 19605, - "Content": "let bytes_len = self.len();" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "File": "src/lib.rs", + "Line": 34, + "StartOffset": 855, + "EndOffset": 890, + "Content": "const DEFAULT_MAP_SIZE: usize = 10;" }, - "bytes_p": { - "IsExported": false, - "IsConst": false, + "HTTP_PREFIX_BACKWARD": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "bytes_p", - "File": "lib.rs", - "Line": 711, - "StartOffset": 19568, - "EndOffset": 19614, - "Content": "let bytes_p = self.as_ref().as_ptr() as usize;" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/lib.rs", + "Line": 32, + "StartOffset": 798, + "EndOffset": 853, + "Content": "pub const HTTP_PREFIX_BACKWARD: \u0026str = \"rpc-backward-\";" }, - "iter": { - "IsExported": false, - "IsConst": false, + "HTTP_PREFIX_PERSISTENT": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "iter", - "File": "lib.rs", - "Line": 427, - "StartOffset": 11547, - "EndOffset": 11575, - "Content": "let iter = iter.into_iter();" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/lib.rs", + "Line": 30, + "StartOffset": 685, + "EndOffset": 741, + "Content": "pub const HTTP_PREFIX_PERSISTENT: \u0026str = \"rpc-persist-\";" }, - "len": { - "IsExported": false, - "IsConst": false, + "HTTP_PREFIX_TRANSIENT": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "len", - "File": "lib.rs", - "Line": 564, - "StartOffset": 14740, - "EndOffset": 14761, - "Content": "let len = text.len();" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/lib.rs", + "Line": 31, + "StartOffset": 742, + "EndOffset": 797, + "Content": "pub const HTTP_PREFIX_TRANSIENT: \u0026str = \"rpc-transit-\";" }, - "mut buf": { - "IsExported": false, - "IsConst": false, + "RPC_PREFIX_BACKWARD": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "mut buf", - "File": "lib.rs", - "Line": 586, - "StartOffset": 15388, - "EndOffset": 15420, - "Content": "let mut buf = [0u8; INLINE_CAP];" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/lib.rs", + "Line": 29, + "StartOffset": 630, + "EndOffset": 684, + "Content": "pub const RPC_PREFIX_BACKWARD: \u0026str = \"RPC_BACKWARD_\";" }, - "mut len": { - "IsExported": false, - "IsConst": false, + "RPC_PREFIX_PERSISTENT": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "mut len", - "File": "lib.rs", - "Line": 260, - "StartOffset": 8144, - "EndOffset": 8160, - "Content": "let mut len = 0;" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/lib.rs", + "Line": 25, + "StartOffset": 472, + "EndOffset": 574, + "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: \u0026str = \"RPC_PERSIST_\";" }, - "mut new_buf": { - "IsExported": false, - "IsConst": false, + "RPC_PREFIX_TRANSIENT": { + "IsExported": true, + "IsConst": true, "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "mut new_buf", - "File": "lib.rs", - "Line": 748, - "StartOffset": 21002, - "EndOffset": 21036, - "Content": "let mut new_buf = [0; INLINE_CAP];" - }, - "mut s": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "mut s", - "File": "lib.rs", - "Line": 443, - "StartOffset": 12003, - "EndOffset": 12049, - "Content": "let mut s = String::with_capacity(size + len);" - }, - "s": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "s", - "File": "lib.rs", - "Line": 68, - "StartOffset": 1954, - "EndOffset": 2006, - "Content": "let s = unsafe { std::str::from_utf8_unchecked(v) };" - }, - "size": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "size", - "File": "lib.rs", - "Line": 441, - "StartOffset": 11931, - "EndOffset": 11954, - "Content": "let size = slice.len();" - }, - "slice": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "slice", - "File": "lib.rs", - "Line": 440, - "StartOffset": 11889, - "EndOffset": 11916, - "Content": "let slice = slice.as_ref();" - }, - "sub_len": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "sub_len", - "File": "lib.rs", - "Line": 715, - "StartOffset": 19670, - "EndOffset": 19697, - "Content": "let sub_len = subset.len();" - }, - "sub_offset": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "sub_offset", - "File": "lib.rs", - "Line": 732, - "StartOffset": 20217, - "EndOffset": 20250, - "Content": "let sub_offset = sub_p - bytes_p;" - }, - "sub_p": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "sub_p", - "File": "lib.rs", - "Line": 714, - "StartOffset": 19669, - "EndOffset": 19706, - "Content": "let sub_p = subset.as_ptr() as usize;" - }, - "text": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "text", - "File": "lib.rs", - "Line": 559, - "StartOffset": 14625, - "EndOffset": 14650, - "Content": "let text = text.as_ref();" - }, - "v": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "v", - "File": "lib.rs", - "Line": 603, - "StartOffset": 15780, - "EndOffset": 15803, - "Content": "let v = s.into_bytes();" + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/lib.rs", + "Line": 28, + "StartOffset": 575, + "EndOffset": 629, + "Content": "pub const RPC_PREFIX_TRANSIENT: \u0026str = \"RPC_TRANSIT_\";" } } - } - }, - "Dependencies": {}, - "Files": { - "lib.rs": { - "Path": "lib.rs" - } - } - }, - "metainfo": { - "Language": "rust", - "Version": "", - "Name": "metainfo", - "Dir": "src", - "Packages": { - "metainfo": { + }, + "metainfo::backward": { "IsMain": false, "IsTest": false, - "PkgPath": "metainfo", - "Functions": { - "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "PkgPath": "metainfo::backward", + "Functions": {}, + "Types": { + "Backward": { + "Exported": true, + "TypeKind": "interface", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "File": "src/lib.rs", - "Line": 515, - "StartOffset": 15665, - "EndOffset": 15870, - "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 517, - "StartOffset": 15777, - "EndOffset": 15791 - } - ], - "MethodCalls": [ + "PkgPath": "metainfo::backward", + "Name": "Backward", + "File": "src/backward.rs", + "Line": 3, + "StartOffset": 44, + "EndOffset": 1303, + "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_backward_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_downstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_backward_transients_with_rpc_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_transients_with_http_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_backward_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_backward_downstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 516, - "StartOffset": 15695, - "EndOffset": 15701 - } - ], - "Types": [ + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 5, + "StartOffset": 153, + "EndOffset": 158 + }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 515, - "StartOffset": 15707, - "EndOffset": 15713 + "File": "src/backward.rs", + "Line": 5, + "StartOffset": 183, + "EndOffset": 189 }, { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 515, - "StartOffset": 15715, - "EndOffset": 15723 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 5, + "StartOffset": 190, + "EndOffset": 197 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 234, + "EndOffset": 239 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 264, + "EndOffset": 270 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 515, - "StartOffset": 15724, - "EndOffset": 15731 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "File": "src/lib.rs", - "Line": 508, - "StartOffset": 15442, - "EndOffset": 15650, - "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ + "File": "src/backward.rs", + "Line": 6, + "StartOffset": 271, + "EndOffset": 278 + }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 508, - "StartOffset": 15483, - "EndOffset": 15489 + "File": "src/backward.rs", + "Line": 8, + "StartOffset": 327, + "EndOffset": 333 }, { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 508, - "StartOffset": 15491, - "EndOffset": 15499 + "File": "src/backward.rs", + "Line": 8, + "StartOffset": 335, + "EndOffset": 343 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 508, - "StartOffset": 15500, - "EndOffset": 15507 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 510, - "StartOffset": 15553, - "EndOffset": 15571 - } - ], - "MethodCalls": [ + "File": "src/backward.rs", + "Line": 8, + "StartOffset": 344, + "EndOffset": 351 + }, { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 509, - "StartOffset": 15472, - "EndOffset": 15478 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16057, - "EndOffset": 16158, - "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 8, + "StartOffset": 353, + "EndOffset": 360 + }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16115, - "EndOffset": 16121 + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 410, + "EndOffset": 416 }, { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16122, - "EndOffset": 16130 + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 418, + "EndOffset": 426 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16131, - "EndOffset": 16138 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 527, - "StartOffset": 16067, - "EndOffset": 16106 - } - ], - "Types": [ + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 427, + "EndOffset": 434 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 527, - "StartOffset": 16107, - "EndOffset": 16120 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 15885, - "EndOffset": 15985, - "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 9, + "StartOffset": 436, + "EndOffset": 443 + }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 15942, - "EndOffset": 15948 + "File": "src/backward.rs", + "Line": 11, + "StartOffset": 509, + "EndOffset": 515 }, { "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 15949, - "EndOffset": 15957 + "File": "src/backward.rs", + "Line": 11, + "StartOffset": 516, + "EndOffset": 524 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 15958, - "EndOffset": 15965 - } - ], - "MethodCalls": [ + "File": "src/backward.rs", + "Line": 11, + "StartOffset": 525, + "EndOffset": 532 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 523, - "StartOffset": 15895, - "EndOffset": 15934 - } - ], - "Types": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 11, + "StartOffset": 534, + "EndOffset": 541 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 523, - "StartOffset": 15935, - "EndOffset": 15947 - } - ] - }, - "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16551, - "EndOffset": 16858, - "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 607, + "EndOffset": 613 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 548, - "StartOffset": 16745, - "EndOffset": 16768 - } - ], - "MethodCalls": [ + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 614, + "EndOffset": 622 + }, { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 546, - "StartOffset": 16710, - "EndOffset": 16716 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 623, + "EndOffset": 630 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 547, - "StartOffset": 16737, - "EndOffset": 16759 - } - ], - "Types": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 12, + "StartOffset": 632, + "EndOffset": 639 + }, { "ModPath": "", "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16603, - "EndOffset": 16608 + "Name": "Into", + "File": "src/backward.rs", + "Line": 14, + "StartOffset": 677, + "EndOffset": 681 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 14, + "StartOffset": 682, + "EndOffset": 689 }, { "ModPath": "", "PkgPath": "core::convert", "Name": "Into", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16618, - "EndOffset": 16622 + "File": "src/backward.rs", + "Line": 14, + "StartOffset": 695, + "EndOffset": 699 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 541, - "StartOffset": 16623, - "EndOffset": 16630 + "File": "src/backward.rs", + "Line": 14, + "StartOffset": 700, + "EndOffset": 707 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 547, - "StartOffset": 16723, - "EndOffset": 16736 - } - ] - }, - "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 530, - "StartOffset": 16231, - "EndOffset": 16536, - "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 774, + "EndOffset": 778 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 537, - "StartOffset": 16424, - "EndOffset": 16447 - } - ], - "MethodCalls": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 779, + "EndOffset": 786 + }, { "ModPath": "", "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 535, - "StartOffset": 16389, - "EndOffset": 16395 + "Name": "Into", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 792, + "EndOffset": 796 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 536, - "StartOffset": 16415, - "EndOffset": 16437 - } - ], - "Types": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 15, + "StartOffset": 797, + "EndOffset": 804 + }, { "ModPath": "", "PkgPath": "core::convert", "Name": "AsRef", - "File": "src/lib.rs", - "Line": 530, - "StartOffset": 16282, - "EndOffset": 16287 + "File": "src/backward.rs", + "Line": 17, + "StartOffset": 893, + "EndOffset": 898 }, { "ModPath": "", "PkgPath": "core::convert", "Name": "Into", - "File": "src/lib.rs", - "Line": 530, - "StartOffset": 16297, - "EndOffset": 16301 + "File": "src/backward.rs", + "Line": 17, + "StartOffset": 908, + "EndOffset": 912 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 530, - "StartOffset": 16302, - "EndOffset": 16309 + "File": "src/backward.rs", + "Line": 17, + "StartOffset": 913, + "EndOffset": 920 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 536, - "StartOffset": 16402, - "EndOffset": 16414 - } - ] - }, - "Debug\u003cMetaInfo\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "File": "src/lib.rs", - "Line": 623, - "StartOffset": 19077, - "EndOffset": 19172, - "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 23, + "StartOffset": 1041, + "EndOffset": 1046 + }, { "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "File": "src/lib.rs", - "Line": 624, - "StartOffset": 19114, - "EndOffset": 19126 + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/backward.rs", + "Line": 23, + "StartOffset": 1056, + "EndOffset": 1060 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 23, + "StartOffset": 1061, + "EndOffset": 1068 }, { "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "File": "src/lib.rs", - "Line": 624, - "StartOffset": 19139, - "EndOffset": 19145 - } - ], - "Types": [ + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 29, + "StartOffset": 1166, + "EndOffset": 1171 + }, { "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Formatter", - "File": "src/lib.rs", - "Line": 623, - "StartOffset": 19104, - "EndOffset": 19113 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 29, + "StartOffset": 1200, + "EndOffset": 1206 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 29, + "StartOffset": 1207, + "EndOffset": 1214 }, { "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Result", - "File": "src/lib.rs", - "Line": 623, - "StartOffset": 19127, - "EndOffset": 19133 + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1251, + "EndOffset": 1256 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1285, + "EndOffset": 1291 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/backward.rs", + "Line": 30, + "StartOffset": 1292, + "EndOffset": 1299 } ] - }, - "Forward\u003cMetaInfo\u003e.get_all_persistents": { + } + }, + "Vars": {} + }, + "metainfo::convert": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::convert", + "Functions": { + "Converter\u003cHttpConverter\u003e.add_backward_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "File": "src/lib.rs", - "Line": 420, - "StartOffset": 12845, - "EndOffset": 13045, - "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 fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_persistents(),\n None =\u003e None,\n }\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 117, + "StartOffset": 3590, + "EndOffset": 3719, + "Content": "impl Converter for HttpConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 420, - "StartOffset": 12878, - "EndOffset": 12884 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 420, - "StartOffset": 12886, - "EndOffset": 12894 - }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 420, - "StartOffset": 12895, - "EndOffset": 12902 + "File": "src/convert.rs", + "Line": 117, + "StartOffset": 3634, + "EndOffset": 3641 } ], - "FunctionCalls": [ + "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 422, - "StartOffset": 12948, - "EndOffset": 12967 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 118, + "StartOffset": 3657, + "EndOffset": 3686 } ], - "MethodCalls": [ + "GlobalVars": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 421, - "StartOffset": 12874, - "EndOffset": 12880 + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 118, + "StartOffset": 3687, + "EndOffset": 3707 } ] }, - "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { + "Converter\u003cHttpConverter\u003e.add_persistent_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 433, - "StartOffset": 13249, - "EndOffset": 13372, - "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 fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(HttpConverter)\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 109, + "StartOffset": 3314, + "EndOffset": 3447, + "Content": "impl Converter for HttpConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 436, - "StartOffset": 13334, - "EndOffset": 13368 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 110, + "StartOffset": 3383, + "EndOffset": 3412 } ], "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 435, - "StartOffset": 13315, - "EndOffset": 13321 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 435, - "StartOffset": 13322, - "EndOffset": 13330 - }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 435, - "StartOffset": 13331, - "EndOffset": 13338 - }, + "File": "src/convert.rs", + "Line": 109, + "StartOffset": 3360, + "EndOffset": 3367 + } + ], + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 436, - "StartOffset": 13369, - "EndOffset": 13382 + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 110, + "StartOffset": 3413, + "EndOffset": 3435 } ] }, - "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { + "Converter\u003cHttpConverter\u003e.add_transient_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 427, - "StartOffset": 13060, - "EndOffset": 13182, - "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 fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(RpcConverter)\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 113, + "StartOffset": 3453, + "EndOffset": 3584, + "Content": "impl Converter for HttpConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, + "Results": [ + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 113, + "StartOffset": 3498, + "EndOffset": 3505 + } + ], "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 430, - "StartOffset": 13144, - "EndOffset": 13178 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 114, + "StartOffset": 3521, + "EndOffset": 3550 } ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 429, - "StartOffset": 13125, - "EndOffset": 13131 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 429, - "StartOffset": 13132, - "EndOffset": 13140 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 429, - "StartOffset": 13141, - "EndOffset": 13148 - }, + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 430, - "StartOffset": 13179, - "EndOffset": 13191 + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 114, + "StartOffset": 3551, + "EndOffset": 3572 } ] }, - "Forward\u003cMetaInfo\u003e.get_all_transients": { + "Converter\u003cHttpConverter\u003e.remove_backward_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13440, - "EndOffset": 13638, - "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 fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 129, + "StartOffset": 4027, + "EndOffset": 4169, + "Content": "impl Converter for HttpConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, "Results": [ @@ -6545,93 +7239,73 @@ "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13472, - "EndOffset": 13478 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13480, - "EndOffset": 13488 + "File": "src/convert.rs", + "Line": 129, + "StartOffset": 4074, + "EndOffset": 4080 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13489, - "EndOffset": 13496 + "File": "src/convert.rs", + "Line": 129, + "StartOffset": 4081, + "EndOffset": 4088 } ], - "FunctionCalls": [ + "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 441, - "StartOffset": 13542, - "EndOffset": 13560 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 130, + "StartOffset": 4105, + "EndOffset": 4136 } ], - "MethodCalls": [ + "GlobalVars": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 440, - "StartOffset": 13469, - "EndOffset": 13475 + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 130, + "StartOffset": 4137, + "EndOffset": 4157 } ] }, - "Forward\u003cMetaInfo\u003e.get_all_upstreams": { + "Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "File": "src/lib.rs", - "Line": 446, - "StartOffset": 13653, - "EndOffset": 13846, - "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 fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 121, + "StartOffset": 3725, + "EndOffset": 3871, + "Content": "impl Converter for HttpConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 448, - "StartOffset": 13754, - "EndOffset": 13768 - } - ], "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 447, - "StartOffset": 13682, - "EndOffset": 13688 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 122, + "StartOffset": 3805, + "EndOffset": 3836 } ], "Types": [ @@ -6639,1106 +7313,1025 @@ "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 446, - "StartOffset": 13684, - "EndOffset": 13690 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 446, - "StartOffset": 13692, - "EndOffset": 13700 + "File": "src/convert.rs", + "Line": 121, + "StartOffset": 3774, + "EndOffset": 3780 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 446, - "StartOffset": 13701, - "EndOffset": 13708 + "File": "src/convert.rs", + "Line": 121, + "StartOffset": 3781, + "EndOffset": 3788 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 122, + "StartOffset": 3837, + "EndOffset": 3859 } ] }, - "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { + "Converter\u003cHttpConverter\u003e.remove_transient_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 475, - "StartOffset": 14464, - "EndOffset": 14755, - "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 fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 125, + "StartOffset": 3877, + "EndOffset": 4021, + "Content": "impl Converter for HttpConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 482, - "StartOffset": 14649, - "EndOffset": 14663 - } - ], "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 480, - "StartOffset": 14614, - "EndOffset": 14620 - }, { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 481, - "StartOffset": 14641, - "EndOffset": 14665 + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 126, + "StartOffset": 3956, + "EndOffset": 3987 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 475, - "StartOffset": 14507, - "EndOffset": 14512 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 475, - "StartOffset": 14522, - "EndOffset": 14526 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 125, + "StartOffset": 3925, + "EndOffset": 3931 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 475, - "StartOffset": 14527, - "EndOffset": 14534 - }, + "File": "src/convert.rs", + "Line": 125, + "StartOffset": 3932, + "EndOffset": 3939 + } + ], + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 481, - "StartOffset": 14627, - "EndOffset": 14640 + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 126, + "StartOffset": 3988, + "EndOffset": 4009 } ] }, - "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { + "Converter\u003cRpcConverter\u003e.add_backward_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 486, - "StartOffset": 14770, - "EndOffset": 15056, - "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 fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "File": "src/convert.rs", + "Line": 45, + "StartOffset": 1389, + "EndOffset": 1498, + "Content": "impl Converter for RpcConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "FunctionCalls": [ + "Results": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 493, - "StartOffset": 14953, - "EndOffset": 14965 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 45, + "StartOffset": 1433, + "EndOffset": 1440 } ], "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 491, - "StartOffset": 14918, - "EndOffset": 14924 - }, { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 492, - "StartOffset": 14945, - "EndOffset": 14968 + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 46, + "StartOffset": 1456, + "EndOffset": 1466 } ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 486, - "StartOffset": 14811, - "EndOffset": 14816 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 486, - "StartOffset": 14826, - "EndOffset": 14830 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 486, - "StartOffset": 14831, - "EndOffset": 14838 - }, + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 492, - "StartOffset": 14931, - "EndOffset": 14944 + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 46, + "StartOffset": 1467, + "EndOffset": 1486 } ] }, - "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { + "Converter\u003cRpcConverter\u003e.add_persistent_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 453, - "StartOffset": 13861, - "EndOffset": 14150, - "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 fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "File": "src/convert.rs", + "Line": 37, + "StartOffset": 1153, + "EndOffset": 1266, + "Content": "impl Converter for RpcConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "FunctionCalls": [ + "Results": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 460, - "StartOffset": 14045, - "EndOffset": 14059 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 37, + "StartOffset": 1199, + "EndOffset": 1206 } ], "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 458, - "StartOffset": 14010, - "EndOffset": 14016 - }, { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 459, - "StartOffset": 14036, - "EndOffset": 14060 + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 38, + "StartOffset": 1222, + "EndOffset": 1232 } ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 453, - "StartOffset": 13903, - "EndOffset": 13908 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 453, - "StartOffset": 13918, - "EndOffset": 13922 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 453, - "StartOffset": 13923, - "EndOffset": 13930 - }, + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 459, - "StartOffset": 14023, - "EndOffset": 14035 + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 38, + "StartOffset": 1233, + "EndOffset": 1254 } ] }, - "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { + "Converter\u003cRpcConverter\u003e.add_transient_prefix": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 464, - "StartOffset": 14165, - "EndOffset": 14449, - "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 fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "File": "src/convert.rs", + "Line": 41, + "StartOffset": 1272, + "EndOffset": 1383, + "Content": "impl Converter for RpcConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "FunctionCalls": [ + "Results": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 471, - "StartOffset": 14347, - "EndOffset": 14359 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 41, + "StartOffset": 1317, + "EndOffset": 1324 } ], "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 469, - "StartOffset": 14312, - "EndOffset": 14318 - }, { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 470, - "StartOffset": 14338, - "EndOffset": 14361 + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 42, + "StartOffset": 1340, + "EndOffset": 1350 } ], - "Types": [ + "GlobalVars": [ { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 464, - "StartOffset": 14205, - "EndOffset": 14210 - }, + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 42, + "StartOffset": 1351, + "EndOffset": 1371 + } + ] + }, + "Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "File": "src/convert.rs", + "Line": 57, + "StartOffset": 1768, + "EndOffset": 1891, + "Content": "impl Converter for RpcConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 464, - "StartOffset": 14220, - "EndOffset": 14224 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 57, + "StartOffset": 1815, + "EndOffset": 1821 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 464, - "StartOffset": 14225, - "EndOffset": 14232 - }, + "File": "src/convert.rs", + "Line": 57, + "StartOffset": 1822, + "EndOffset": 1829 + } + ], + "MethodCalls": [ { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 470, - "StartOffset": 14325, - "EndOffset": 14337 + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 58, + "StartOffset": 1846, + "EndOffset": 1859 + } + ], + "GlobalVars": [ + { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "File": "src/convert.rs", + "Line": 58, + "StartOffset": 1860, + "EndOffset": 1879 } ] }, - "MetaInfo.clear": { - "Exported": true, + "Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "File": "src/lib.rs", - "Line": 288, - "StartOffset": 8873, - "EndOffset": 9527, - "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(\u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "File": "src/convert.rs", + "Line": 49, + "StartOffset": 1504, + "EndOffset": 1631, + "Content": "impl Converter for RpcConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "MethodCalls": [ + "Results": [ { "ModPath": "", "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 293, - "StartOffset": 9047, - "EndOffset": 9053 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "File": "src/lib.rs", - "Line": 294, - "StartOffset": 9054, - "EndOffset": 9059 + "Name": "Option", + "File": "src/convert.rs", + "Line": 49, + "StartOffset": 1553, + "EndOffset": 1559 }, { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/lib.rs", - "Line": 297, - "StartOffset": 9138, - "EndOffset": 9143 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 49, + "StartOffset": 1560, + "EndOffset": 1567 + } + ], + "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "File": "src/lib.rs", - "Line": 300, - "StartOffset": 9230, - "EndOffset": 9235 - }, + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 50, + "StartOffset": 1584, + "EndOffset": 1597 + } + ], + "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "File": "src/lib.rs", - "Line": 303, - "StartOffset": 9338, - "EndOffset": 9343 + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "File": "src/convert.rs", + "Line": 50, + "StartOffset": 1598, + "EndOffset": 1619 } ] }, - "MetaInfo.contains": { - "Exported": true, + "Converter\u003cRpcConverter\u003e.remove_transient_prefix": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "File": "src/lib.rs", - "Line": 176, - "StartOffset": 5361, - "EndOffset": 5747, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Check if `MetaInfo` contains entry\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "File": "src/convert.rs", + "Line": 53, + "StartOffset": 1637, + "EndOffset": 1762, + "Content": "impl Converter for RpcConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "MethodCalls": [ + "Results": [ { "ModPath": "", "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 181, - "StartOffset": 5493, - "EndOffset": 5499 + "Name": "Option", + "File": "src/convert.rs", + "Line": 53, + "StartOffset": 1685, + "EndOffset": 1691 }, { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 182, - "StartOffset": 5511, - "EndOffset": 5514 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 53, + "StartOffset": 1692, + "EndOffset": 1699 + } + ], + "MethodCalls": [ { "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "File": "src/lib.rs", - "Line": 182, - "StartOffset": 5527, - "EndOffset": 5535 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 183, - "StartOffset": 5533, - "EndOffset": 5542 - }, + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1716, + "EndOffset": 1729 + } + ], + "GlobalVars": [ { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 189, - "StartOffset": 5694, - "EndOffset": 5700 + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "File": "src/convert.rs", + "Line": 54, + "StartOffset": 1730, + "EndOffset": 1750 } ] }, - "MetaInfo.contains_faststr": { - "Exported": true, + "HttpConverter.add_prefix_and_to_http_format": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "File": "src/lib.rs", - "Line": 193, - "StartOffset": 5782, - "EndOffset": 6228, - "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "File": "src/convert.rs", + "Line": 91, + "StartOffset": 2682, + "EndOffset": 2966, + "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\n let mut buf = String::with_capacity(prefix.len() + key.len());\n buf.push_str(prefix);\n self.to_http_format(key, \u0026mut buf);\n FastStr::from_string(buf)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 93, + "StartOffset": 2812, + "EndOffset": 2825 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 96, + "StartOffset": 2944, + "EndOffset": 2955 + } + ], "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 198, - "StartOffset": 5942, - "EndOffset": 5948 + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 93, + "StartOffset": 2833, + "EndOffset": 2836 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 199, - "StartOffset": 5968, - "EndOffset": 5971 + "PkgPath": "alloc::string", + "Name": "push_str", + "File": "src/convert.rs", + "Line": 94, + "StartOffset": 2865, + "EndOffset": 2873 }, { "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "File": "src/lib.rs", - "Line": 199, - "StartOffset": 6000, - "EndOffset": 6008 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 95, + "StartOffset": 2896, + "EndOffset": 2910 + } + ], + "Types": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 200, - "StartOffset": 5990, - "EndOffset": 5999 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 92, + "StartOffset": 2772, + "EndOffset": 2779 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 206, - "StartOffset": 6167, - "EndOffset": 6173 + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 93, + "StartOffset": 2804, + "EndOffset": 2810 } ] }, - "MetaInfo.contains_string": { - "Exported": true, + "HttpConverter.remove_prefix_and_to_rpc_format": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "File": "src/lib.rs", - "Line": 210, - "StartOffset": 6263, - "EndOffset": 6698, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e 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}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "File": "src/convert.rs", + "Line": 99, + "StartOffset": 2972, + "EndOffset": 3271, + "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n Some(FastStr::from_string(buf))\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 215, - "StartOffset": 6428, - "EndOffset": 6434 - }, + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 216, - "StartOffset": 6446, - "EndOffset": 6449 + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 102, + "StartOffset": 3157, + "EndOffset": 3170 }, { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/lib.rs", - "Line": 216, - "StartOffset": 6462, - "EndOffset": 6474 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 104, + "StartOffset": 3248, + "EndOffset": 3259 + } + ], + "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 216, - "StartOffset": 6479, - "EndOffset": 6485 + "PkgPath": "core::str", + "Name": "strip_prefix", + "File": "src/convert.rs", + "Line": 101, + "StartOffset": 3104, + "EndOffset": 3116 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 217, - "StartOffset": 6468, - "EndOffset": 6477 + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 102, + "StartOffset": 3175, + "EndOffset": 3178 }, { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 223, - "StartOffset": 6640, - "EndOffset": 6646 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 103, + "StartOffset": 3196, + "EndOffset": 3209 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 212, - "StartOffset": 6348, - "EndOffset": 6353 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 100, + "StartOffset": 3064, + "EndOffset": 3070 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 100, + "StartOffset": 3071, + "EndOffset": 3078 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 102, + "StartOffset": 3149, + "EndOffset": 3155 } ] }, - "MetaInfo.derive": { - "Exported": true, + "HttpConverter.to_http_format": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "File": "src/lib.rs", - "Line": 106, - "StartOffset": 2974, - "EndOffset": 4123, - "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) -\u003e (MetaInfo, MetaInfo) {\n if self.tmap.is_none() \u0026\u0026 self.smap.is_none() \u0026\u0026 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}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 65, + "StartOffset": 1947, + "EndOffset": 2309, + "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' =\u003e ch.to_ascii_lowercase(),\n '_' =\u003e '-',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "File": "src/lib.rs", - "Line": 127, - "StartOffset": 3856, - "EndOffset": 3859 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "File": "src/lib.rs", - "Line": 129, - "StartOffset": 3952, - "EndOffset": 3961 - } - ], "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 113, - "StartOffset": 3238, - "EndOffset": 3245 + "PkgPath": "core::str", + "Name": "chars", + "File": "src/convert.rs", + "Line": 68, + "StartOffset": 2104, + "EndOffset": 2109 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "File": "src/lib.rs", - "Line": 116, - "StartOffset": 3467, - "EndOffset": 3472 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "File": "src/lib.rs", - "Line": 125, - "StartOffset": 3805, - "EndOffset": 3809 + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "File": "src/convert.rs", + "Line": 70, + "StartOffset": 2178, + "EndOffset": 2196 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "File": "src/lib.rs", - "Line": 129, - "StartOffset": 3965, - "EndOffset": 3970 + "PkgPath": "alloc::string", + "Name": "push", + "File": "src/convert.rs", + "Line": 74, + "StartOffset": 2284, + "EndOffset": 2288 } ], "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 106, - "StartOffset": 2998, - "EndOffset": 3010 - }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 127, - "StartOffset": 3851, - "EndOffset": 3854 + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 67, + "StartOffset": 2072, + "EndOffset": 2078 } ] }, - "MetaInfo.ensure_backward_node": { + "HttpConverter.to_http_format_string": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "File": "src/lib.rs", - "Line": 355, - "StartOffset": 10981, - "EndOffset": 11121, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(\u0026mut self) {\n if self.backward_node.is_none() {\n self.backward_node = Some(Node::default())\n }\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "File": "src/convert.rs", + "Line": 244, + "StartOffset": 7319, + "EndOffset": 7507, + "Content": "impl HttpConverter {\n fn to_http_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_http_format(key, \u0026mut buf);\n buf\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 245, + "StartOffset": 7408, + "EndOffset": 7421 + } + ], "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 356, - "StartOffset": 11008, - "EndOffset": 11015 + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 245, + "StartOffset": 7426, + "EndOffset": 7429 + }, + { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "File": "src/convert.rs", + "Line": 246, + "StartOffset": 7451, + "EndOffset": 7465 } ], "Types": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 357, - "StartOffset": 11057, - "EndOffset": 11061 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 244, + "StartOffset": 7365, + "EndOffset": 7371 } ] }, - "MetaInfo.ensure_forward_node": { + "HttpConverter.to_rpc_format": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "File": "src/lib.rs", - "Line": 349, - "StartOffset": 10829, - "EndOffset": 10966, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(\u0026mut self) {\n if self.forward_node.is_none() {\n self.forward_node = Some(Node::default())\n }\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 78, + "StartOffset": 2315, + "EndOffset": 2676, + "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 350, - "StartOffset": 10855, - "EndOffset": 10862 + "PkgPath": "core::str", + "Name": "chars", + "File": "src/convert.rs", + "Line": 81, + "StartOffset": 2471, + "EndOffset": 2476 + }, + { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "File": "src/convert.rs", + "Line": 83, + "StartOffset": 2545, + "EndOffset": 2563 + }, + { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "File": "src/convert.rs", + "Line": 87, + "StartOffset": 2651, + "EndOffset": 2655 } ], "Types": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 351, - "StartOffset": 10903, - "EndOffset": 10907 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 80, + "StartOffset": 2439, + "EndOffset": 2445 } ] }, - "MetaInfo.extend": { - "Exported": true, + "HttpConverter.to_rpc_format_string": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "File": "src/lib.rs", - "Line": 310, - "StartOffset": 9542, - "EndOffset": 10814, - "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(\u0026mut 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}", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "File": "src/convert.rs", + "Line": 250, + "StartOffset": 7517, + "EndOffset": 7703, + "Content": "impl HttpConverter {\n fn to_rpc_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n buf\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "HttpConverter" } }, "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9803, - "EndOffset": 9816 - }, + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 251, + "StartOffset": 7605, + "EndOffset": 7618 + } + ], + "MethodCalls": [ { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 322, - "StartOffset": 9990, - "EndOffset": 10003 + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 251, + "StartOffset": 7623, + "EndOffset": 7626 }, { "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/lib.rs", - "Line": 328, - "StartOffset": 10195, - "EndOffset": 10208 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "File": "src/convert.rs", + "Line": 252, + "StartOffset": 7648, + "EndOffset": 7661 } ], - "MethodCalls": [ + "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9772, - "EndOffset": 9790 - }, - { + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 250, + "StartOffset": 7562, + "EndOffset": 7568 + } + ] + }, + "RpcConverter.add_prefix": { + "Exported": false, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "File": "src/convert.rs", + "Line": 21, + "StartOffset": 664, + "EndOffset": 912, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\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}", + "Receiver": { + "IsPointer": false, + "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "File": "src/lib.rs", - "Line": 317, - "StartOffset": 9794, - "EndOffset": 9800 - }, + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" + } + }, + "Results": [ { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 323, - "StartOffset": 9980, - "EndOffset": 9986 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 22, + "StartOffset": 735, + "EndOffset": 742 + } + ], + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "File": "src/lib.rs", - "Line": 329, - "StartOffset": 10191, - "EndOffset": 10197 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "File": "src/convert.rs", + "Line": 23, + "StartOffset": 775, + "EndOffset": 788 }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 26, + "StartOffset": 890, + "EndOffset": 901 + } + ], + "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 333, - "StartOffset": 10341, - "EndOffset": 10348 + "PkgPath": "core::str", + "Name": "len", + "File": "src/convert.rs", + "Line": 23, + "StartOffset": 796, + "EndOffset": 799 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 336, - "StartOffset": 10484, - "EndOffset": 10490 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 336, - "StartOffset": 10493, - "EndOffset": 10499 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/lib.rs", - "Line": 336, - "StartOffset": 10502, - "EndOffset": 10508 + "PkgPath": "alloc::string", + "Name": "push_str", + "File": "src/convert.rs", + "Line": 24, + "StartOffset": 828, + "EndOffset": 836 } ], "Types": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 313, - "StartOffset": 9688, - "EndOffset": 9696 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9794, - "EndOffset": 9801 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 322, - "StartOffset": 9980, - "EndOffset": 9988 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "File": "src/convert.rs", + "Line": 23, + "StartOffset": 767, + "EndOffset": 773 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 328, - "StartOffset": 10183, - "EndOffset": 10193 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9817, - "EndOffset": 9833 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 26, + "StartOffset": 881, + "EndOffset": 888 } ] }, - "MetaInfo.get": { - "Exported": true, + "RpcConverter.remove_prefix": { + "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 227, - "StartOffset": 6733, - "EndOffset": 7054, - "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\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::\u003cT\u003e())\n })\n }\n}", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "File": "src/convert.rs", + "Line": 29, + "StartOffset": 918, + "EndOffset": 1111, + "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::from_string(key.to_owned()))\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::convert", + "Name": "RpcConverter" } }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 230, - "StartOffset": 6836, - "EndOffset": 6842 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 230, - "StartOffset": 6845, - "EndOffset": 6853 - }, + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "File": "src/lib.rs", - "Line": 230, - "StartOffset": 6866, - "EndOffset": 6869 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "File": "src/convert.rs", + "Line": 32, + "StartOffset": 1077, + "EndOffset": 1088 + } + ], + "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 230, - "StartOffset": 6873, - "EndOffset": 6880 + "PkgPath": "core::str", + "Name": "strip_prefix", + "File": "src/convert.rs", + "Line": 31, + "StartOffset": 1032, + "EndOffset": 1044 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 233, - "StartOffset": 7002, - "EndOffset": 7008 + "PkgPath": "alloc::str", + "Name": "to_owned", + "File": "src/convert.rs", + "Line": 32, + "StartOffset": 1093, + "EndOffset": 1101 } ], "Types": [ @@ -7746,12591 +8339,4082 @@ "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 229, - "StartOffset": 6841, - "EndOffset": 6847 + "File": "src/convert.rs", + "Line": 30, + "StartOffset": 992, + "EndOffset": 998 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 30, + "StartOffset": 999, + "EndOffset": 1006 } ] - }, - "MetaInfo.get_all_backword_transients_with_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + } + }, + "Types": { + "Converter": { + "Exported": true, + "TypeKind": "interface", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 592, - "StartOffset": 18215, - "EndOffset": 19059, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ + "PkgPath": "metainfo::convert", + "Name": "Converter", + "File": "src/convert.rs", + "Line": 7, + "StartOffset": 183, + "EndOffset": 612, + "Content": "pub trait Converter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 602, - "StartOffset": 18478, - "EndOffset": 18496 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 8, + "StartOffset": 255, + "EndOffset": 262 }, { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 607, - "StartOffset": 18691, - "EndOffset": 18704 - } - ], - "MethodCalls": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 9, + "StartOffset": 313, + "EndOffset": 320 + }, + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 11, + "StartOffset": 394, + "EndOffset": 401 + }, { "ModPath": "", "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 600, - "StartOffset": 18423, - "EndOffset": 18429 + "Name": "Option", + "File": "src/convert.rs", + "Line": 13, + "StartOffset": 457, + "EndOffset": 463 }, { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 603, - "StartOffset": 18504, - "EndOffset": 18507 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 13, + "StartOffset": 464, + "EndOffset": 471 }, { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 608, - "StartOffset": 18693, - "EndOffset": 18699 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/convert.rs", + "Line": 14, + "StartOffset": 526, + "EndOffset": 532 }, { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 609, - "StartOffset": 18763, - "EndOffset": 18767 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/convert.rs", + "Line": 14, + "StartOffset": 533, + "EndOffset": 540 }, - { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "File": "src/lib.rs", - "Line": 610, - "StartOffset": 18798, - "EndOffset": 18801 - } - ], - "Types": [ { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 596, - "StartOffset": 18301, - "EndOffset": 18307 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 596, - "StartOffset": 18308, - "EndOffset": 18316 + "File": "src/convert.rs", + "Line": 15, + "StartOffset": 594, + "EndOffset": 600 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 596, - "StartOffset": 18317, - "EndOffset": 18324 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 598, - "StartOffset": 18369, - "EndOffset": 18378 + "File": "src/convert.rs", + "Line": 15, + "StartOffset": 601, + "EndOffset": 608 } ] }, - "MetaInfo.get_all_persistents_and_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "HttpConverter": { + "Exported": true, + "TypeKind": "struct", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 554, - "StartOffset": 16876, - "EndOffset": 18200, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "File": "src/convert.rs", + "Line": 62, + "StartOffset": 1895, + "EndOffset": 1920, + "Content": "pub struct HttpConverter;", + "Methods": { + "add_backward_prefix": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 555, - "StartOffset": 16895, - "EndOffset": 16929 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix" }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 558, - "StartOffset": 16972, - "EndOffset": 16978 + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 558, - "StartOffset": 16979, - "EndOffset": 16987 + "add_prefix_and_to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format" }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 558, - "StartOffset": 16988, - "EndOffset": 16995 - } - ], - "FunctionCalls": [ - { + "add_transient_prefix": { "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 564, - "StartOffset": 17149, - "EndOffset": 17168 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 571, - "StartOffset": 17503, - "EndOffset": 17516 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 562, - "StartOffset": 17093, - "EndOffset": 17099 + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix" }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 566, - "StartOffset": 17242, - "EndOffset": 17245 + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix" }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 566, - "StartOffset": 17252, - "EndOffset": 17255 + "remove_prefix_and_to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format" }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 566, - "StartOffset": 17259, - "EndOffset": 17268 + "remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 573, - "StartOffset": 17569, - "EndOffset": 17575 + "to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format" }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 575, - "StartOffset": 17663, - "EndOffset": 17667 + "to_http_format_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string" }, - { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "File": "src/lib.rs", - "Line": 576, - "StartOffset": 17699, - "EndOffset": 17702 + "to_rpc_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format" }, - { + "to_rpc_format_string": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 583, - "StartOffset": 18014, - "EndOffset": 18034 + "Name": "HttpConverter.to_rpc_format_string" } - ], - "Types": [ - { + } + }, + "RpcConverter": { + "Exported": true, + "TypeKind": "struct", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "File": "src/convert.rs", + "Line": 18, + "StartOffset": 614, + "EndOffset": 638, + "Content": "pub struct RpcConverter;", + "Methods": { + "add_backward_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 560, - "StartOffset": 17040, - "EndOffset": 17049 + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 571, - "StartOffset": 17493, - "EndOffset": 17501 + "add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix" + }, + "add_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix" + }, + "add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix" }, + "remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix" + }, + "remove_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix" + }, + "remove_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix" + }, + "remove_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix" + } + } + } + }, + "Vars": {} + }, + "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": 83, + "StartOffset": 1986, + "EndOffset": 2069, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e usize {\n self.inner.capacity()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 576, - "StartOffset": 17751, - "EndOffset": 17756 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "src/faststr_map.rs", + "Line": 85, + "StartOffset": 2053, + "EndOffset": 2061 } ] }, - "MetaInfo.get_faststr": { + "FastStrMap.clear": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "File": "src/lib.rs", - "Line": 244, - "StartOffset": 7323, - "EndOffset": 7770, - "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: \u0026FastStrMap| faststr_tmap.get::\u003cT\u003e())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::\u003cT\u003e())\n })\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "File": "src/faststr_map.rs", + "Line": 53, + "StartOffset": 1362, + "EndOffset": 1435, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut self) {\n self.inner.clear();\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 248, - "StartOffset": 7496, - "EndOffset": 7502 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7522, - "EndOffset": 7530 - }, - { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/faststr_map.rs", + "Line": 55, + "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": 43, + "StartOffset": 1111, + "EndOffset": 1227, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { "ModPath": "metainfo", "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7572, - "EndOffset": 7575 - }, + "Name": "FastStrMap" + } + }, + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 250, - "StartOffset": 7544, - "EndOffset": 7551 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 45, + "StartOffset": 1211, + "EndOffset": 1213 + } + ], + "MethodCalls": [ { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 253, - "StartOffset": 7706, - "EndOffset": 7712 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/faststr_map.rs", + "Line": 45, + "StartOffset": 1189, + "EndOffset": 1201 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 246, - "StartOffset": 7450, - "EndOffset": 7456 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 246, - "StartOffset": 7458, - "EndOffset": 7465 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7547, - "EndOffset": 7557 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 45, + "StartOffset": 1203, + "EndOffset": 1209 } ] }, - "MetaInfo.get_string": { + "FastStrMap.entry": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "File": "src/lib.rs", - "Line": 266, - "StartOffset": 8118, - "EndOffset": 8537, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003c\u0026FastStr\u003e {\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}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "File": "src/faststr_map.rs", + "Line": 68, + "StartOffset": 1682, + "EndOffset": 1813, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, FastStr\u003e {\n self.inner.entry(TypeId::of::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "MethodCalls": [ + "Results": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 270, - "StartOffset": 8296, - "EndOffset": 8302 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "src/faststr_map.rs", + "Line": 69, + "StartOffset": 1735, + "EndOffset": 1740 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 271, - "StartOffset": 8314, - "EndOffset": 8322 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "src/lib.rs", - "Line": 271, - "StartOffset": 8335, - "EndOffset": 8338 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 69, + "StartOffset": 1745, + "EndOffset": 1751 }, { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 271, - "StartOffset": 8343, - "EndOffset": 8349 - }, + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 69, + "StartOffset": 1753, + "EndOffset": 1760 + } + ], + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 272, - "StartOffset": 8336, - "EndOffset": 8343 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1797, + "EndOffset": 1799 + } + ], + "MethodCalls": [ { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 275, - "StartOffset": 8476, - "EndOffset": 8482 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1783, + "EndOffset": 1788 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 268, - "StartOffset": 8220, - "EndOffset": 8225 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 268, - "StartOffset": 8250, - "EndOffset": 8256 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 268, - "StartOffset": 8258, - "EndOffset": 8265 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 70, + "StartOffset": 1789, + "EndOffset": 1795 } ] }, - "MetaInfo.insert": { + "FastStrMap.extend": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 152, - "StartOffset": 4554, - "EndOffset": 4774, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Insert a type into this `MetaInfo`.\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, val: T) {\n self.tmap\n .get_or_insert_with(|| TypeMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert(val);\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "File": "src/faststr_map.rs", + "Line": 58, + "StartOffset": 1441, + "EndOffset": 1545, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4718, - "EndOffset": 4731 - } - ], "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4687, - "EndOffset": 4705 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "File": "src/lib.rs", - "Line": 157, - "StartOffset": 4705, - "EndOffset": 4711 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/faststr_map.rs", + "Line": 60, + "StartOffset": 1520, + "EndOffset": 1526 } ], "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/lib.rs", - "Line": 154, - "StartOffset": 4616, - "EndOffset": 4620 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/lib.rs", - "Line": 154, - "StartOffset": 4623, - "EndOffset": 4627 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4709, - "EndOffset": 4716 - } - ], - "GlobalVars": [ { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4732, - "EndOffset": 4748 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 59, + "StartOffset": 1487, + "EndOffset": 1497 } ] }, - "MetaInfo.insert_faststr": { + "FastStrMap.get": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "File": "src/lib.rs", - "Line": 160, - "StartOffset": 4805, - "EndOffset": 5061, - "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\u003cT: Send + Sync + 'static\u003e(\u0026mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::\u003cT\u003e(val);\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "File": "src/faststr_map.rs", + "Line": 33, + "StartOffset": 855, + "EndOffset": 969, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.inner.get(\u0026TypeId::of::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 4997, - "EndOffset": 5010 + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 953, + "EndOffset": 955 } ], "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 4963, - "EndOffset": 4981 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "File": "src/lib.rs", - "Line": 165, - "StartOffset": 4989, - "EndOffset": 4995 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 940, + "EndOffset": 943 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/lib.rs", - "Line": 162, - "StartOffset": 4886, - "EndOffset": 4890 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/lib.rs", - "Line": 162, - "StartOffset": 4893, - "EndOffset": 4897 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/faststr_map.rs", + "Line": 34, + "StartOffset": 902, + "EndOffset": 908 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 162, - "StartOffset": 4925, - "EndOffset": 4932 + "File": "src/faststr_map.rs", + "Line": 34, + "StartOffset": 910, + "EndOffset": 917 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 4985, - "EndOffset": 4995 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 5011, - "EndOffset": 5027 + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 35, + "StartOffset": 945, + "EndOffset": 951 } ] }, - "MetaInfo.insert_string": { + "FastStrMap.get_mut": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "File": "src/lib.rs", - "Line": 168, - "StartOffset": 5097, - "EndOffset": 5325, - "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(\u0026mut 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}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "File": "src/faststr_map.rs", + "Line": 38, + "StartOffset": 975, + "EndOffset": 1105, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut FastStr\u003e {\n self.inner.get_mut(\u0026TypeId::of::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "FunctionCalls": [ - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5269, - "EndOffset": 5282 - } - ], - "MethodCalls": [ + "Results": [ { "ModPath": "", "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5237, - "EndOffset": 5255 + "Name": "Option", + "File": "src/faststr_map.rs", + "Line": 39, + "StartOffset": 1030, + "EndOffset": 1036 }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "File": "src/lib.rs", - "Line": 173, - "StartOffset": 5255, - "EndOffset": 5261 - } - ], - "Types": [ { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 170, - "StartOffset": 5185, - "EndOffset": 5192 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5259, - "EndOffset": 5267 + "File": "src/faststr_map.rs", + "Line": 39, + "StartOffset": 1042, + "EndOffset": 1049 } ], - "GlobalVars": [ + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5283, - "EndOffset": 5299 - } - ] - }, - "MetaInfo.remove": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 237, - "StartOffset": 7070, - "EndOffset": 7255, - "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1089, + "EndOffset": 1091 } - }, + ], "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 241, - "StartOffset": 7212, - "EndOffset": 7218 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 241, - "StartOffset": 7221, - "EndOffset": 7229 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "File": "src/lib.rs", - "Line": 241, - "StartOffset": 7242, - "EndOffset": 7248 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1072, + "EndOffset": 1079 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 240, - "StartOffset": 7224, - "EndOffset": 7230 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 40, + "StartOffset": 1081, + "EndOffset": 1087 } ] }, - "MetaInfo.remove_faststr": { + "FastStrMap.insert": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "File": "src/lib.rs", - "Line": 257, - "StartOffset": 7790, - "EndOffset": 8048, - "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::\u003cT\u003e())\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "File": "src/faststr_map.rs", + "Line": 28, + "StartOffset": 716, + "EndOffset": 849, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: FastStr) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), t);\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 262, - "StartOffset": 8008, - "EndOffset": 8014 - }, + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 263, - "StartOffset": 8034, - "EndOffset": 8042 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 829, + "EndOffset": 831 + } + ], + "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "File": "src/lib.rs", - "Line": 263, - "StartOffset": 8071, - "EndOffset": 8077 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 814, + "EndOffset": 820 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 260, - "StartOffset": 7963, - "EndOffset": 7969 + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/faststr_map.rs", + "Line": 29, + "StartOffset": 747, + "EndOffset": 751 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/faststr_map.rs", + "Line": 29, + "StartOffset": 754, + "EndOffset": 758 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 260, - "StartOffset": 7970, - "EndOffset": 7977 + "File": "src/faststr_map.rs", + "Line": 29, + "StartOffset": 784, + "EndOffset": 791 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 30, + "StartOffset": 821, + "EndOffset": 827 } ] }, - "MetaInfo.remove_string": { + "FastStrMap.is_empty": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "File": "src/lib.rs", - "Line": 279, - "StartOffset": 8557, - "EndOffset": 8812, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n self.smap\n .as_mut()\n .and_then(|smap| smap.remove(key.as_ref()))\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", + "File": "src/faststr_map.rs", + "Line": 73, + "StartOffset": 1819, + "EndOffset": 1901, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e bool {\n self.inner.is_empty()\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 284, - "StartOffset": 8780, - "EndOffset": 8786 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 285, - "StartOffset": 8798, - "EndOffset": 8806 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "File": "src/lib.rs", - "Line": 285, - "StartOffset": 8819, - "EndOffset": 8825 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "src/faststr_map.rs", + "Line": 75, + "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": 63, + "StartOffset": 1551, + "EndOffset": 1676, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, FastStr\u003e {\n self.inner.iter()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" + } + }, + "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 285, - "StartOffset": 8830, - "EndOffset": 8836 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/faststr_map.rs", + "Line": 65, + "StartOffset": 1664, + "EndOffset": 1668 } ], "Types": [ { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 282, - "StartOffset": 8701, - "EndOffset": 8706 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "src/faststr_map.rs", + "Line": 64, + "StartOffset": 1617, + "EndOffset": 1621 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 282, - "StartOffset": 8735, - "EndOffset": 8741 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 64, + "StartOffset": 1626, + "EndOffset": 1632 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 282, - "StartOffset": 8742, - "EndOffset": 8749 + "File": "src/faststr_map.rs", + "Line": 64, + "StartOffset": 1634, + "EndOffset": 1641 } ] }, - "MetaInfo::from": { + "FastStrMap.len": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "File": "src/lib.rs", - "Line": 86, - "StartOffset": 2322, - "EndOffset": 2959, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an `MetaInfo` with the parent given.\n ///\n /// When the info is not found in the current scope, `MetaInfo` will try to get from parent.\n ///\n /// [`derive`] is more efficient than this. It is recommended to use [`derive`] instead of this.\n #[inline]\n pub fn from(parent: Arc\u003cMetaInfo\u003e) -\u003e MetaInfo {\n let forward_node = parent.forward_node.clone();\n let backward_node = parent.backward_node.clone();\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}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", + "File": "src/faststr_map.rs", + "Line": 78, + "StartOffset": 1907, + "EndOffset": 1980, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e usize {\n self.inner.len()\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "derive", - "File": "src/lib.rs", - "Line": 90, - "StartOffset": 2485, - "EndOffset": 2495 - } - ], "MethodCalls": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "File": "src/lib.rs", - "Line": 93, - "StartOffset": 2647, - "EndOffset": 2652 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 92, - "StartOffset": 2610, - "EndOffset": 2613 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 92, - "StartOffset": 2614, - "EndOffset": 2622 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/faststr_map.rs", + "Line": 80, + "StartOffset": 1969, + "EndOffset": 1972 } ] }, - "MetaInfo::from_node": { - "Exported": false, + "FastStrMap.remove": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "File": "src/lib.rs", - "Line": 135, - "StartOffset": 4138, - "EndOffset": 4539, - "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\u003cMetaInfo\u003e,\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n ) -\u003e 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}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "File": "src/faststr_map.rs", + "Line": 48, + "StartOffset": 1233, + "EndOffset": 1356, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.inner.remove(\u0026TypeId::of::\u003cT\u003e())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap" } }, - "Types": [ + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 137, - "StartOffset": 4213, - "EndOffset": 4216 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1340, + "EndOffset": 1342 + } + ], + "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 137, - "StartOffset": 4217, - "EndOffset": 4225 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1324, + "EndOffset": 1330 + } + ], + "Types": [ { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 138, - "StartOffset": 4237, - "EndOffset": 4243 + "File": "src/faststr_map.rs", + "Line": 49, + "StartOffset": 1287, + "EndOffset": 1293 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 138, - "StartOffset": 4248, - "EndOffset": 4252 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 49, + "StartOffset": 1294, + "EndOffset": 1301 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 50, + "StartOffset": 1332, + "EndOffset": 1338 } ] }, - "MetaInfo::new": { + "FastStrMap::with_capacity": { "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 80, - "StartOffset": 2191, - "EndOffset": 2290, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n /// Creates an empty `MetaInfo`.\n #[inline]\n pub fn new() -\u003e MetaInfo {\n Default::default()\n }\n}", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "File": "src/faststr_map.rs", + "Line": 21, + "StartOffset": 528, + "EndOffset": 710, + "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e Self {\n Self {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "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": 24, + "StartOffset": 639, + "EndOffset": 663 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "src/faststr_map.rs", + "Line": 24, + "StartOffset": 683, + "EndOffset": 690 + } + ], "Types": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 82, - "StartOffset": 2260, - "EndOffset": 2268 + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 24, + "StartOffset": 624, + "EndOffset": 637 }, { "ModPath": "", "PkgPath": "core::default", "Name": "Default", - "File": "src/lib.rs", - "Line": 83, - "StartOffset": 2262, - "EndOffset": 2269 + "File": "src/faststr_map.rs", + "Line": 24, + "StartOffset": 674, + "EndOffset": 681 } ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "File": "src/lib.rs", - "Line": 393, - "StartOffset": -1, - "EndOffset": 12388, - "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n if let Some(node) = self.[\u003c$node _node\u003e].as_mut() {\n node.[\u003cdel_ $func_name\u003e](key)\n } else {\n None\n }\n }\n }\n };\n}" - }, - "get_impl": { + } + }, + "Types": { + "FastStrMap": { "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 362, - "StartOffset": -1, - "EndOffset": 11505, - "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n match self.[\u003c$node _node\u003e].as_ref() {\n Some(node) =\u003e node.[\u003cget_ $func_name\u003e](key),\n None =\u003e None,\n }\n }\n }\n };\n}" - }, - "http_forward_test": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "struct", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", - "File": "src/lib.rs", - "Line": 799, - "StartOffset": 24040, - "EndOffset": 24739, - "Content": "#[test]\n fn http_forward_test() {\n let mut metainfo = MetaInfo::new();\n metainfo.strip_http_prefix_and_set_persistent(\"rpc-persist-test-key\", \"persist\");\n metainfo.strip_http_prefix_and_set_upstream(\"rpc-transit-test-key\", \"transit\");\n assert_eq!(metainfo.get_persistent(\"TEST_KEY\").unwrap(), \"persist\");\n assert_eq!(metainfo.get_upstream(\"TEST_KEY\").unwrap(), \"transit\");\n let map = metainfo\n .get_all_persistents_and_transients_with_http_prefix()\n .unwrap();\n assert_eq!(map.get(\"rpc-persist-test-key\").unwrap(), \"persist\");\n // The `RPC_TRANSIT_TEST_KEY` is inserted into `upstream` and we cannot get it from\n // `transients`.\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 801, - "StartOffset": 24086, - "EndOffset": 24089 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "File": "src/faststr_map.rs", + "Line": 5, + "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\u003cFastStr\u003e and Into\u003cFastStr\u003e.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand\u003cTypeId, FastStr\u003e,\n}", + "SubStruct": [ + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/faststr_map.rs", + "Line": 10, + "StartOffset": 353, + "EndOffset": 366 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 804, - "StartOffset": 24220, - "EndOffset": 24229 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/faststr_map.rs", + "Line": 10, + "StartOffset": 367, + "EndOffset": 373 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 804, - "StartOffset": 24240, - "EndOffset": 24254 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/faststr_map.rs", + "Line": 10, + "StartOffset": 375, + "EndOffset": 382 } ], - "MethodCalls": [ - { + "Methods": { + "capacity": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 802, - "StartOffset": 24095, - "EndOffset": 24131 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity" }, - { + "clear": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 803, - "StartOffset": 24139, - "EndOffset": 24173 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 804, - "StartOffset": 24267, - "EndOffset": 24273 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear" }, - { + "contains": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 807, - "StartOffset": 24465, - "EndOffset": 24516 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "src/lib.rs", - "Line": 809, - "StartOffset": 24569, - "EndOffset": 24572 - } - ], - "Types": [ - { + "entry": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 801, - "StartOffset": 24076, - "EndOffset": 24084 - } - ] - }, - "rpc_forward_test": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "File": "src/lib.rs", - "Line": 784, - "StartOffset": 23315, - "EndOffset": 24010, - "Content": "#[test]\n fn rpc_forward_test() {\n let mut metainfo = MetaInfo::new();\n metainfo.strip_rpc_prefix_and_set_persistent(\"RPC_PERSIST_TEST_KEY\", \"PERSIST\");\n metainfo.strip_rpc_prefix_and_set_upstream(\"RPC_TRANSIT_TEST_KEY\", \"TRANSIT\");\n assert_eq!(metainfo.get_persistent(\"TEST_KEY\").unwrap(), \"PERSIST\");\n assert_eq!(metainfo.get_upstream(\"TEST_KEY\").unwrap(), \"TRANSIT\");\n let map = metainfo\n .get_all_persistents_and_transients_with_rpc_prefix()\n .unwrap();\n assert_eq!(map.get(\"RPC_PERSIST_TEST_KEY\").unwrap(), \"PERSIST\");\n // The `RPC_TRANSIT_TEST_KEY` is inserted into `upstream` and we cannot get it from\n // `transients`.\n }", - "FunctionCalls": [ - { + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry" + }, + "extend": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 786, - "StartOffset": 23361, - "EndOffset": 23364 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend" }, - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 789, - "StartOffset": 23493, - "EndOffset": 23502 + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get" }, - { + "get_mut": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 789, - "StartOffset": 23513, - "EndOffset": 23527 - } - ], - "MethodCalls": [ - { + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut" + }, + "insert": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 787, - "StartOffset": 23369, - "EndOffset": 23404 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert" }, - { + "is_empty": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 788, - "StartOffset": 23413, - "EndOffset": 23446 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty" }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 789, - "StartOffset": 23540, - "EndOffset": 23546 + "iter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter" }, - { + "len": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 792, - "StartOffset": 23737, - "EndOffset": 23787 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len" }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "src/lib.rs", - "Line": 794, - "StartOffset": 23840, - "EndOffset": 23843 - } - ], - "Types": [ - { + "remove": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 786, - "StartOffset": 23351, - "EndOffset": 23359 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove" } - ] - }, - "set_impl": { + } + } + }, + "Vars": {} + }, + "metainfo::forward": { + "IsMain": false, + "IsTest": false, + "PkgPath": "metainfo::forward", + "Functions": {}, + "Types": { + "Forward": { "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 375, - "StartOffset": -1, - "EndOffset": 11990, - "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n ) {\n self.[\u003censure_ $node _node\u003e]();\n self.[\u003c$node _node\u003e]\n .as_mut()\n .unwrap()\n .[\u003cset_ $func_name\u003e](key, value)\n }\n }\n };\n}" - }, - "test_clear": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, + "TypeKind": "interface", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "File": "src/lib.rs", - "Line": 650, - "StartOffset": 19653, - "EndOffset": 20116, - "Content": "#[test]\n fn test_clear() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(8);\n map.insert::\u003ci16\u003e(16);\n map.insert::\u003ci32\u003e(32);\n\n assert!(map.contains::\u003ci8\u003e());\n assert!(map.contains::\u003ci16\u003e());\n assert!(map.contains::\u003ci32\u003e());\n\n map.clear();\n\n assert!(!map.contains::\u003ci8\u003e());\n assert!(!map.contains::\u003ci16\u003e());\n assert!(!map.contains::\u003ci32\u003e());\n\n map.insert::\u003ci8\u003e(10);\n assert_eq!(*map.get::\u003ci8\u003e().unwrap(), 10);\n }", - "FunctionCalls": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "File": "src/forward.rs", + "Line": 4, + "StartOffset": 45, + "EndOffset": 1775, + "Content": "pub trait Forward {\n fn get_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_persistent\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_upstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", + "SubStruct": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 652, - "StartOffset": 19694, - "EndOffset": 19697 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 5, + "StartOffset": 90, + "EndOffset": 95 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 658, - "StartOffset": 19823, - "EndOffset": 19829 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 5, + "StartOffset": 120, + "EndOffset": 126 }, { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 669, - "StartOffset": 20089, - "EndOffset": 20098 - } - ], - "MethodCalls": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 5, + "StartOffset": 127, + "EndOffset": 134 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 654, - "StartOffset": 19735, - "EndOffset": 19741 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 161, + "EndOffset": 166 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "File": "src/lib.rs", - "Line": 658, - "StartOffset": 19835, - "EndOffset": 19843 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 191, + "EndOffset": 197 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "File": "src/lib.rs", - "Line": 662, - "StartOffset": 19947, - "EndOffset": 19952 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 6, + "StartOffset": 198, + "EndOffset": 205 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 669, - "StartOffset": 20105, - "EndOffset": 20108 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 231, + "EndOffset": 236 }, { "ModPath": "", "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 669, - "StartOffset": 20117, - "EndOffset": 20123 - } - ], - "Types": [ + "Name": "Option", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 261, + "EndOffset": 267 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 652, - "StartOffset": 19684, - "EndOffset": 19692 - } - ] - }, - "test_composition": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_composition", - "File": "src/lib.rs", - "Line": 710, - "StartOffset": 21505, - "EndOffset": 22087, - "Content": "#[test]\n fn test_composition() {\n struct Magi\u003cT\u003e(pub T);\n\n struct Madoka {\n pub god: bool,\n }\n\n struct Homura {\n pub attempts: usize,\n }\n\n struct Mami {\n pub guns: usize,\n }\n\n let mut map = MetaInfo::new();\n\n map.insert(Magi(Madoka { god: false }));\n map.insert(Magi(Homura { attempts: 0 }));\n map.insert(Magi(Mami { guns: 999 }));\n\n assert!(!map.get::\u003cMagi\u003cMadoka\u003e\u003e().unwrap().0.god);\n assert_eq!(0, map.get::\u003cMagi\u003cHomura\u003e\u003e().unwrap().0.attempts);\n assert_eq!(999, map.get::\u003cMagi\u003cMami\u003e\u003e().unwrap().0.guns);\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 726, - "StartOffset": 21797, - "EndOffset": 21800 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 7, + "StartOffset": 268, + "EndOffset": 275 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 732, - "StartOffset": 21959, - "EndOffset": 21965 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 9, + "StartOffset": 316, + "EndOffset": 322 }, { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 733, - "StartOffset": 21960, - "EndOffset": 21969 - } - ], - "MethodCalls": [ + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 9, + "StartOffset": 324, + "EndOffset": 332 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 728, - "StartOffset": 21817, - "EndOffset": 21823 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 9, + "StartOffset": 333, + "EndOffset": 340 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 732, - "StartOffset": 21972, - "EndOffset": 21975 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 9, + "StartOffset": 342, + "EndOffset": 349 }, { "ModPath": "", "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 732, - "StartOffset": 21994, - "EndOffset": 22000 - } - ], - "Types": [ + "Name": "Option", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 389, + "EndOffset": 395 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 726, - "StartOffset": 21787, - "EndOffset": 21795 - } - ] - }, - "test_extend": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "File": "src/lib.rs", - "Line": 756, - "StartOffset": 22645, - "EndOffset": 23261, - "Content": "#[test]\n fn test_extend() {\n #[derive(Debug, PartialEq)]\n struct MyType(i32);\n\n let mut metainfo = MetaInfo::new();\n\n metainfo.insert(5i32);\n metainfo.insert(MyType(10));\n\n let mut other = MetaInfo::new();\n\n other.insert(15i32);\n other.insert(20u8);\n\n metainfo.extend(other);\n\n assert_eq!(metainfo.get(), Some(\u002615i32));\n\n assert_eq!(metainfo.remove::\u003ci32\u003e(), Some(15i32));\n assert!(metainfo.get::\u003ci32\u003e().is_none());\n\n assert_eq!(metainfo.get::\u003cbool\u003e(), None);\n assert_eq!(metainfo.get(), Some(\u0026MyType(10)));\n\n assert_eq!(metainfo.get(), Some(\u002620u8));\n }", - "FunctionCalls": [ + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 397, + "EndOffset": 405 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 761, - "StartOffset": 22778, - "EndOffset": 22781 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 406, + "EndOffset": 413 }, { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 773, - "StartOffset": 22996, - "EndOffset": 23005 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 10, + "StartOffset": 415, + "EndOffset": 422 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 776, - "StartOffset": 23048, - "EndOffset": 23054 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 763, - "StartOffset": 22803, - "EndOffset": 22809 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 461, + "EndOffset": 467 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "File": "src/lib.rs", - "Line": 771, - "StartOffset": 22972, - "EndOffset": 22978 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 469, + "EndOffset": 477 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 773, - "StartOffset": 23016, - "EndOffset": 23019 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 478, + "EndOffset": 485 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 775, - "StartOffset": 23067, - "EndOffset": 23073 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 11, + "StartOffset": 487, + "EndOffset": 494 }, { "ModPath": "", "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 776, - "StartOffset": 23078, - "EndOffset": 23085 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 761, - "StartOffset": 22768, - "EndOffset": 22776 - } - ] - }, - "test_integers": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "File": "src/lib.rs", - "Line": 672, - "StartOffset": 20172, - "EndOffset": 21455, - "Content": "#[test]\n fn test_integers() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(8);\n map.insert::\u003ci16\u003e(16);\n map.insert::\u003ci32\u003e(32);\n map.insert::\u003ci64\u003e(64);\n map.insert::\u003ci128\u003e(128);\n map.insert::\u003cu8\u003e(8);\n map.insert::\u003cu16\u003e(16);\n map.insert::\u003cu32\u003e(32);\n map.insert::\u003cu64\u003e(64);\n map.insert::\u003cu128\u003e(128);\n assert!(map.get::\u003ci8\u003e().is_some());\n assert!(map.get::\u003ci16\u003e().is_some());\n assert!(map.get::\u003ci32\u003e().is_some());\n assert!(map.get::\u003ci64\u003e().is_some());\n assert!(map.get::\u003ci128\u003e().is_some());\n assert!(map.get::\u003cu8\u003e().is_some());\n assert!(map.get::\u003cu16\u003e().is_some());\n assert!(map.get::\u003cu32\u003e().is_some());\n assert!(map.get::\u003cu64\u003e().is_some());\n assert!(map.get::\u003cu128\u003e().is_some());\n\n let m2 = MetaInfo::from(Arc::new(map));\n assert!(m2.get::\u003ci8\u003e().is_some());\n assert!(m2.get::\u003ci16\u003e().is_some());\n assert!(m2.get::\u003ci32\u003e().is_some());\n assert!(m2.get::\u003ci64\u003e().is_some());\n assert!(m2.get::\u003ci128\u003e().is_some());\n assert!(m2.get::\u003cu8\u003e().is_some());\n assert!(m2.get::\u003cu16\u003e().is_some());\n assert!(m2.get::\u003cu32\u003e().is_some());\n assert!(m2.get::\u003cu64\u003e().is_some());\n assert!(m2.get::\u003cu128\u003e().is_some());\n }", - "FunctionCalls": [ + "Name": "Option", + "File": "src/forward.rs", + "Line": 15, + "StartOffset": 582, + "EndOffset": 588 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 674, - "StartOffset": 20213, - "EndOffset": 20216 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 15, + "StartOffset": 589, + "EndOffset": 597 }, { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 686, - "StartOffset": 20531, - "EndOffset": 20537 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 15, + "StartOffset": 598, + "EndOffset": 605 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "File": "src/lib.rs", - "Line": 697, - "StartOffset": 21033, - "EndOffset": 21037 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 15, + "StartOffset": 607, + "EndOffset": 614 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "File": "src/lib.rs", - "Line": 697, - "StartOffset": 21043, - "EndOffset": 21046 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 676, - "StartOffset": 20257, - "EndOffset": 20263 + "PkgPath": "core::option", + "Name": "Option", + "File": "src/forward.rs", + "Line": 18, + "StartOffset": 702, + "EndOffset": 708 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 686, - "StartOffset": 20543, - "EndOffset": 20546 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/forward.rs", + "Line": 18, + "StartOffset": 709, + "EndOffset": 717 }, { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_some", - "File": "src/lib.rs", - "Line": 686, - "StartOffset": 20555, - "EndOffset": 20562 - } - ], - "Types": [ + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 18, + "StartOffset": 718, + "EndOffset": 725 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 674, - "StartOffset": 20203, - "EndOffset": 20211 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 18, + "StartOffset": 727, + "EndOffset": 734 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 697, - "StartOffset": 21038, - "EndOffset": 21041 - } - ] - }, - "test_metainfo": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "File": "src/lib.rs", - "Line": 737, - "StartOffset": 22158, - "EndOffset": 22585, - "Content": "#[test]\n fn test_metainfo() {\n #[derive(Debug, PartialEq)]\n struct MyType(i32);\n\n let mut metainfo = MetaInfo::new();\n\n metainfo.insert(5i32);\n metainfo.insert(MyType(10));\n\n assert_eq!(metainfo.get(), Some(\u00265i32));\n\n assert_eq!(metainfo.remove::\u003ci32\u003e(), Some(5i32));\n assert!(metainfo.get::\u003ci32\u003e().is_none());\n\n assert_eq!(metainfo.get::\u003cbool\u003e(), None);\n assert_eq!(metainfo.get(), Some(\u0026MyType(10)));\n }", - "FunctionCalls": [ + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 20, + "StartOffset": 764, + "EndOffset": 768 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 742, - "StartOffset": 22293, - "EndOffset": 22296 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 20, + "StartOffset": 769, + "EndOffset": 776 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/lib.rs", - "Line": 747, - "StartOffset": 22378, - "EndOffset": 22387 + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 20, + "StartOffset": 782, + "EndOffset": 786 }, { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 750, - "StartOffset": 22429, - "EndOffset": 22435 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 744, - "StartOffset": 22318, - "EndOffset": 22324 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 20, + "StartOffset": 787, + "EndOffset": 794 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 747, - "StartOffset": 22398, - "EndOffset": 22401 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 851, + "EndOffset": 855 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 749, - "StartOffset": 22448, - "EndOffset": 22454 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 856, + "EndOffset": 863 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 750, - "StartOffset": 22459, - "EndOffset": 22466 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 742, - "StartOffset": 22283, - "EndOffset": 22291 - } - ] - }, - "test_remove": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "File": "src/lib.rs", - "Line": 632, - "StartOffset": 19267, - "EndOffset": 19605, - "Content": "#[test]\n fn test_remove() {\n let mut map = MetaInfo::new();\n\n map.insert::\u003ci8\u003e(123);\n assert!(map.get::\u003ci8\u003e().is_some());\n\n map.remove::\u003ci8\u003e();\n assert!(map.get::\u003ci8\u003e().is_none());\n\n map.insert::\u003ci8\u003e(123);\n\n let mut m2 = MetaInfo::from(Arc::new(map));\n\n m2.remove::\u003ci8\u003e();\n assert!(m2.get::\u003ci8\u003e().is_some());\n }", - "FunctionCalls": [ + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 869, + "EndOffset": 873 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "File": "src/lib.rs", - "Line": 634, - "StartOffset": 19308, - "EndOffset": 19311 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 21, + "StartOffset": 874, + "EndOffset": 881 }, { "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "File": "src/lib.rs", - "Line": 637, - "StartOffset": 19347, - "EndOffset": 19353 + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 937, + "EndOffset": 941 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "File": "src/lib.rs", - "Line": 644, - "StartOffset": 19550, - "EndOffset": 19554 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 942, + "EndOffset": 949 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "File": "src/lib.rs", - "Line": 644, - "StartOffset": 19560, - "EndOffset": 19563 - } - ], - "MethodCalls": [ + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 955, + "EndOffset": 959 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 636, - "StartOffset": 19350, - "EndOffset": 19356 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 22, + "StartOffset": 960, + "EndOffset": 967 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 637, - "StartOffset": 19359, - "EndOffset": 19362 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 24, + "StartOffset": 1047, + "EndOffset": 1052 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_some", - "File": "src/lib.rs", - "Line": 637, - "StartOffset": 19371, - "EndOffset": 19378 + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 24, + "StartOffset": 1062, + "EndOffset": 1066 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 639, - "StartOffset": 19426, - "EndOffset": 19432 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 24, + "StartOffset": 1067, + "EndOffset": 1074 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 640, - "StartOffset": 19447, - "EndOffset": 19454 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 634, - "StartOffset": 19298, - "EndOffset": 19306 + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 29, + "StartOffset": 1182, + "EndOffset": 1187 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 644, - "StartOffset": 19555, - "EndOffset": 19558 - } - ] - } - }, - "Types": { - "Homura": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Homura", - "File": "src/lib.rs", - "Line": 718, - "StartOffset": 21643, - "EndOffset": 21669, - "Content": "struct Homura {\n pub attempts: usize,\n }" - }, - "Madoka": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Madoka", - "File": "src/lib.rs", - "Line": 714, - "StartOffset": 21581, - "EndOffset": 21607, - "Content": "struct Madoka {\n pub god: bool,\n }" - }, - "Magi": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Magi", - "File": "src/lib.rs", - "Line": 712, - "StartOffset": 21522, - "EndOffset": 21544, - "Content": "struct Magi\u003cT\u003e(pub T);" - }, - "Mami": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Mami", - "File": "src/lib.rs", - "Line": 722, - "StartOffset": 21711, - "EndOffset": 21735, - "Content": "struct Mami {\n pub guns: usize,\n }" - }, - "MetaInfo": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 37, - "StartOffset": -1, - "EndOffset": 2148, - "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::\u003ci8\u003e(2);\n/// assert_eq!(*m1.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// m2.insert::\u003ci8\u003e(4);\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 4);\n///\n/// m2.remove::\u003ci8\u003e();\n/// assert_eq!(*m2.get::\u003ci8\u003e().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\u003cArc\u003cMetaInfo\u003e\u003e,\n tmap: Option\u003cTypeMap\u003e,\n smap: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e, // for str k-v\n faststr_tmap: Option\u003cFastStrMap\u003e, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n}", - "SubStruct": [ + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 29, + "StartOffset": 1197, + "EndOffset": 1201 + }, { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 68, - "StartOffset": 1799, - "EndOffset": 1805 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 29, + "StartOffset": 1202, + "EndOffset": 1209 }, { "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 68, - "StartOffset": 1806, - "EndOffset": 1809 + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 35, + "StartOffset": 1321, + "EndOffset": 1326 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1839, - "EndOffset": 1845 + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 35, + "StartOffset": 1336, + "EndOffset": 1340 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1846, - "EndOffset": 1853 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 35, + "StartOffset": 1341, + "EndOffset": 1348 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1874, - "EndOffset": 1880 + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 40, + "StartOffset": 1457, + "EndOffset": 1462 }, { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1881, - "EndOffset": 1889 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "File": "src/forward.rs", + "Line": 40, + "StartOffset": 1472, + "EndOffset": 1476 }, { "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1890, - "EndOffset": 1897 + "File": "src/forward.rs", + "Line": 40, + "StartOffset": 1477, + "EndOffset": 1484 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1899, - "EndOffset": 1906 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 46, + "StartOffset": 1574, + "EndOffset": 1579 }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 71, - "StartOffset": 1909, - "EndOffset": 1915 + "File": "src/forward.rs", + "Line": 46, + "StartOffset": 1608, + "EndOffset": 1614 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 71, - "StartOffset": 1916, - "EndOffset": 1926 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 46, + "StartOffset": 1615, + "EndOffset": 1622 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1649, + "EndOffset": 1654 }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 75, - "StartOffset": 2112, - "EndOffset": 2118 + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1683, + "EndOffset": 1689 }, { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 75, - "StartOffset": 2123, - "EndOffset": 2127 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 47, + "StartOffset": 1690, + "EndOffset": 1697 + }, + { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1723, + "EndOffset": 1728 }, { "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "File": "src/lib.rs", - "Line": 76, - "StartOffset": 2130, - "EndOffset": 2136 + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1757, + "EndOffset": 1763 }, { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/forward.rs", + "Line": 48, + "StartOffset": 1764, + "EndOffset": 1771 + } + ] + } + }, + "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": 115, + "StartOffset": 2989, + "EndOffset": 3271, + "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 pub fn clear(\u0026mut 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", - "File": "src/lib.rs", - "Line": 76, - "StartOffset": 2141, - "EndOffset": 2145 + "Name": "Node" } - ], - "Methods": { - "clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear" - }, - "contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains" + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/kv.rs", + "Line": 116, + "StartOffset": 3056, + "EndOffset": 3062 }, - "contains_faststr": { + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/kv.rs", + "Line": 117, + "StartOffset": 3081, + "EndOffset": 3086 + } + ] + }, + "Node.extend": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "File": "src/kv.rs", + "Line": 89, + "StartOffset": 2252, + "EndOffset": 2983, + "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 pub fn extend(\u0026mut 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", - "Name": "MetaInfo.contains_faststr" + "PkgPath": "metainfo::kv", + "Name": "Node" + } + }, + "MethodCalls": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "File": "src/kv.rs", + "Line": 91, + "StartOffset": 2367, + "EndOffset": 2374 }, - "contains_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "File": "src/kv.rs", + "Line": 94, + "StartOffset": 2475, + "EndOffset": 2481 }, - "derive": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/kv.rs", + "Line": 94, + "StartOffset": 2484, + "EndOffset": 2490 }, - "ensure_backward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node" + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "File": "src/kv.rs", + "Line": 94, + "StartOffset": 2493, + "EndOffset": 2499 + } + ] + }, + "del_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "del_impl", + "File": "src/kv.rs", + "Line": 23, + "StartOffset": 614, + "EndOffset": 996, + "Content": "macro_rules! del_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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}" + }, + "get_all_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "File": "src/kv.rs", + "Line": 54, + "StartOffset": 1416, + "EndOffset": 1640, + "Content": "macro_rules! get_all_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_all_ $name s\u003e](\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.$name.as_ref()\n }\n }\n };\n}" + }, + "get_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_impl", + "File": "src/kv.rs", + "Line": 38, + "StartOffset": 998, + "EndOffset": 1414, + "Content": "macro_rules! get_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) =\u003e {\n v.get(key).cloned()\n }\n None =\u003e None,\n }\n }\n }\n };\n}" + }, + "set_impl": { + "Exported": true, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "set_impl", + "File": "src/kv.rs", + "Line": 6, + "StartOffset": 131, + "EndOffset": 612, + "Content": "macro_rules! set_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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": 64, + "StartOffset": 1642, + "EndOffset": 1918, + "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n transient: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n // this is called stale because upstream and downstream all use this.\n stale: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n}", + "SubStruct": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 66, + "StartOffset": 1709, + "EndOffset": 1715 }, - "ensure_forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node" + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 66, + "StartOffset": 1716, + "EndOffset": 1724 }, - "extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend" + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 66, + "StartOffset": 1725, + "EndOffset": 1732 }, - "fmt": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt" + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 66, + "StartOffset": 1734, + "EndOffset": 1741 }, - "get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1760, + "EndOffset": 1766 }, - "get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams" + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1767, + "EndOffset": 1775 }, - "get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients" + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1776, + "EndOffset": 1783 }, - "get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix" + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 67, + "StartOffset": 1785, + "EndOffset": 1792 }, - "get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/kv.rs", + "Line": 69, + "StartOffset": 1881, + "EndOffset": 1887 }, - "get_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix" + { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "File": "src/kv.rs", + "Line": 69, + "StartOffset": 1888, + "EndOffset": 1896 }, - "get_all_persistents": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents" + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 69, + "StartOffset": 1897, + "EndOffset": 1904 }, - "get_all_persistents_and_transients": { + { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "File": "src/kv.rs", + "Line": 69, + "StartOffset": 1906, + "EndOffset": 1913 + } + ], + "Methods": { + "clear": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients" + "PkgPath": "metainfo::kv", + "Name": "Node.clear" }, - "get_all_persistents_and_transients_with_http_prefix": { + "extend": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix" - }, - "get_all_persistents_and_transients_with_rpc_prefix": { + "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": 4, + "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": 43, + "StartOffset": 1076, + "EndOffset": 1371, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn and_modify\u003cF: FnOnce(\u0026mut V)\u003e(self, f: F) -\u003e 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}", + "Receiver": { + "IsPointer": false, + "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix" - }, - "get_all_transients": { + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "Results": [ + { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients" + "PkgPath": "metainfo::type_map", + "Name": "and_modify", + "File": "src/type_map.rs", + "Line": 44, + "StartOffset": 1097, + "EndOffset": 1107 }, - "get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams" + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 44, + "StartOffset": 1111, + "EndOffset": 1117 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "and_modify", + "File": "src/type_map.rs", + "Line": 49, + "StartOffset": 1243, + "EndOffset": 1253 }, - "get_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr" + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 50, + "StartOffset": 1280, + "EndOffset": 1292 }, - "get_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 50, + "StartOffset": 1295, + "EndOffset": 1301 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 44, + "StartOffset": 1111, + "EndOffset": 1117 }, - "insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert" + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 46, + "StartOffset": 1168, + "EndOffset": 1172 }, - "insert_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr" + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 46, + "StartOffset": 1175, + "EndOffset": 1179 }, - "insert_string": { + { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string" + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 48, + "StartOffset": 1205, + "EndOffset": 1210 }, - "remove": { + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 52, + "StartOffset": 1343, + "EndOffset": 1354 + } + ] + }, + "Entry.or_default": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "File": "src/type_map.rs", + "Line": 56, + "StartOffset": 1377, + "EndOffset": 1573, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -\u003e \u0026'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove" - }, - "remove_faststr": { + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "Results": [ + { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr" - }, - "remove_string": { + "PkgPath": "metainfo::type_map", + "Name": "or_default", + "File": "src/type_map.rs", + "Line": 58, + "StartOffset": 1438, + "EndOffset": 1448 + } + ], + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "File": "src/type_map.rs", + "Line": 62, + "StartOffset": 1559, + "EndOffset": 1566 + } + ], + "MethodCalls": [ + { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string" + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "File": "src/type_map.rs", + "Line": 62, + "StartOffset": 1541, + "EndOffset": 1555 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/type_map.rs", + "Line": 60, + "StartOffset": 1489, + "EndOffset": 1496 }, - "strip_http_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream" + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 60, + "StartOffset": 1499, + "EndOffset": 1503 }, - "strip_http_prefix_and_set_persistent": { + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 60, + "StartOffset": 1506, + "EndOffset": 1510 + } + ] + }, + "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": 16, + "StartOffset": 344, + "EndOffset": 560, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -\u003e \u0026'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", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent" + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 21, + "StartOffset": 506, + "EndOffset": 509 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "src/type_map.rs", + "Line": 21, + "StartOffset": 483, + "EndOffset": 497 }, - "strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream" + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 531, + "EndOffset": 543 }, - "strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream" + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 22, + "StartOffset": 546, + "EndOffset": 552 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 19, + "StartOffset": 427, + "EndOffset": 431 }, - "strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent" + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 19, + "StartOffset": 434, + "EndOffset": 438 }, - "strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "strip_rpc_prefix_and_set_upstream" + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 21, + "StartOffset": 501, + "EndOffset": 504 } - } + ] }, - "MyType": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MyType", - "File": "src/lib.rs", - "Line": 758, - "StartOffset": 22662, - "EndOffset": 22704, - "Content": "#[derive(Debug, PartialEq)]\n struct MyType(i32);" - } - }, - "Vars": { - "DEFAULT_MAP_SIZE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, + "Entry.or_insert_with": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 35, - "StartOffset": -1, - "EndOffset": 888, - "Content": "const DEFAULT_MAP_SIZE: usize = 10;" + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "File": "src/type_map.rs", + "Line": 25, + "StartOffset": 566, + "EndOffset": 807, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with\u003cF: FnOnce() -\u003e V\u003e(self, default: F) -\u003e \u0026'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" + } + }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 30, + "StartOffset": 751, + "EndOffset": 754 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "src/type_map.rs", + "Line": 30, + "StartOffset": 728, + "EndOffset": 742 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 31, + "StartOffset": 778, + "EndOffset": 790 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 31, + "StartOffset": 793, + "EndOffset": 799 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 26, + "StartOffset": 605, + "EndOffset": 611 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 28, + "StartOffset": 672, + "EndOffset": 676 + }, + { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 28, + "StartOffset": 679, + "EndOffset": 683 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 30, + "StartOffset": 746, + "EndOffset": 749 + } + ] }, - "HTTP_PREFIX_BACKWARD": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, + "Entry.or_insert_with_key": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/lib.rs", - "Line": 33, - "StartOffset": -1, - "EndOffset": 796, - "Content": "pub const HTTP_PREFIX_BACKWARD: \u0026str = \"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": -1, - "EndOffset": 685, - "Content": "pub const HTTP_PREFIX_PERSISTENT: \u0026str = \"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": -1, - "EndOffset": 739, - "Content": "pub const HTTP_PREFIX_TRANSIENT: \u0026str = \"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": -1, - "EndOffset": 628, - "Content": "pub const RPC_PREFIX_BACKWARD: \u0026str = \"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": -1, - "EndOffset": 572, - "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: \u0026str = \"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": -1, - "EndOffset": 572, - "Content": "pub const RPC_PREFIX_TRANSIENT: \u0026str = \"RPC_TRANSIT_\";" - }, - "backward_node": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "backward_node", - "File": "src/lib.rs", - "Line": 94, - "StartOffset": 2661, - "EndOffset": 2710, - "Type": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone" - }, - "Content": "let backward_node = parent.backward_node.clone();" - }, - "forward_node": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "forward_node", - "File": "src/lib.rs", - "Line": 93, - "StartOffset": 2608, - "EndOffset": 2655, - "Type": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone" - }, - "Content": "let forward_node = parent.forward_node.clone();" - }, - "key": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "key", - "File": "src/lib.rs", - "Line": 491, - "StartOffset": 14904, - "EndOffset": 14927, - "Type": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref" - }, - "Content": "let key = key.as_ref();" - }, - "m2": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "m2", - "File": "src/lib.rs", - "Line": 697, - "StartOffset": 21014, - "EndOffset": 21053, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - "Content": "let m2 = MetaInfo::from(Arc::new(map));" - }, - "map": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "map", - "File": "src/lib.rs", - "Line": 806, - "StartOffset": 24385, - "EndOffset": 24501, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test" - }, - "Content": "let map = metainfo\n .get_all_persistents_and_transients_with_http_prefix()\n .unwrap();" - }, - "mi": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mi", - "File": "src/lib.rs", - "Line": 127, - "StartOffset": 3842, - "EndOffset": 3866, - "Type": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc" - }, - "Content": "let mi = Arc::new(self);" - }, - "mut m2": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut m2", - "File": "src/lib.rs", - "Line": 644, - "StartOffset": 19527, - "EndOffset": 19570, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - "Content": "let mut m2 = MetaInfo::from(Arc::new(map));" - }, - "mut map": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut map", - "File": "src/lib.rs", - "Line": 571, - "StartOffset": 17479, - "EndOffset": 17526, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - }, - "Content": "let mut map = AHashMap::with_capacity(new_cap);" - }, - "mut metainfo": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut metainfo", - "File": "src/lib.rs", - "Line": 801, - "StartOffset": 24057, - "EndOffset": 24092, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - "Content": "let mut metainfo = MetaInfo::new();" - }, - "mut other": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut other", - "File": "src/lib.rs", - "Line": 766, - "StartOffset": 22863, - "EndOffset": 22895, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - "Content": "let mut other = MetaInfo::new();" - }, - "new": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "new", - "File": "src/lib.rs", - "Line": 115, - "StartOffset": 3370, - "EndOffset": 3672, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - }, - "Content": "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 };" - }, - "new_cap": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "new_cap", - "File": "src/lib.rs", - "Line": 603, - "StartOffset": 18488, - "EndOffset": 18510, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix" - }, - "Content": "let new_cap = t.len();" - }, - "persistents": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "persistents", - "File": "src/lib.rs", - "Line": 564, - "StartOffset": 17126, - "EndOffset": 17171, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients" - }, - "Content": "let persistents = node.get_all_persistents();" - }, - "transients": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "transients", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17154, - "EndOffset": 17197, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients" + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "File": "src/type_map.rs", + "Line": 34, + "StartOffset": 813, + "EndOffset": 1070, + "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with_key\u003cF: FnOnce(\u0026K) -\u003e V\u003e(self, default: F) -\u003e \u0026'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}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry" + } }, - "Content": "let transients = node.get_all_transients();" - } - } - }, - "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": -1, - "EndOffset": 1217, - "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_backward_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_downstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_backward_transients_with_rpc_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_transients_with_http_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_backward_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_backward_downstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 97, - "EndOffset": 102 + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 39, + "StartOffset": 1011, + "EndOffset": 1014 + } + ], + "MethodCalls": [ + { + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with_key", + "File": "src/type_map.rs", + "Line": 39, + "StartOffset": 981, + "EndOffset": 999 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 127, - "EndOffset": 133 + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 1041, + "EndOffset": 1053 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 134, - "EndOffset": 141 + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "File": "src/type_map.rs", + "Line": 40, + "StartOffset": 1056, + "EndOffset": 1062 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "File": "src/type_map.rs", + "Line": 35, + "StartOffset": 856, + "EndOffset": 862 }, { "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 7, - "StartOffset": 153, - "EndOffset": 158 + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 37, + "StartOffset": 925, + "EndOffset": 929 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 7, - "StartOffset": 183, - "EndOffset": 189 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 7, - "StartOffset": 190, - "EndOffset": 197 + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 37, + "StartOffset": 932, + "EndOffset": 936 }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 325, - "EndOffset": 331 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 333, - "EndOffset": 341 - }, + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 39, + "StartOffset": 1006, + "EndOffset": 1009 + } + ] + }, + "TypeMap.capacity": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", + "File": "src/type_map.rs", + "Line": 150, + "StartOffset": 3540, + "EndOffset": 3623, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e usize {\n self.inner.capacity()\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 342, - "EndOffset": 349 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "src/type_map.rs", + "Line": 152, + "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": 117, + "StartOffset": 2851, + "EndOffset": 2924, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut self) {\n self.inner.clear();\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 351, - "EndOffset": 358 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "src/type_map.rs", + "Line": 119, + "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": 105, + "StartOffset": 2520, + "EndOffset": 2636, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 10, - "StartOffset": 327, - "EndOffset": 333 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 10, - "StartOffset": 335, - "EndOffset": 343 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 10, - "StartOffset": 344, - "EndOffset": 351 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 107, + "StartOffset": 2620, + "EndOffset": 2622 + } + ], + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 10, - "StartOffset": 353, - "EndOffset": 360 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "src/type_map.rs", + "Line": 107, + "StartOffset": 2598, + "EndOffset": 2610 + } + ], + "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 507, - "EndOffset": 513 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 514, - "EndOffset": 522 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 523, - "EndOffset": 530 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 532, - "EndOffset": 539 - }, + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 107, + "StartOffset": 2612, + "EndOffset": 2618 + } + ] + }, + "TypeMap.entry": { + "Exported": true, + "IsMethod": true, + "IsInterfaceMethod": false, + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "File": "src/type_map.rs", + "Line": 132, + "StartOffset": 3170, + "EndOffset": 3367, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, T\u003e {\n Entry {\n inner: self.inner.entry(TypeId::of::\u003cT\u003e()),\n _marker: PhantomData,\n }\n }\n}", + "Receiver": { + "IsPointer": false, + "Type": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" + } + }, + "FunctionCalls": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 13, - "StartOffset": 509, - "EndOffset": 515 - }, + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 135, + "StartOffset": 3306, + "EndOffset": 3308 + } + ], + "MethodCalls": [ { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 13, - "StartOffset": 516, - "EndOffset": 524 - }, + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "src/type_map.rs", + "Line": 135, + "StartOffset": 3292, + "EndOffset": 3297 + } + ], + "Types": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 13, - "StartOffset": 525, - "EndOffset": 532 + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 133, + "StartOffset": 3223, + "EndOffset": 3228 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 13, - "StartOffset": 534, - "EndOffset": 541 + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 133, + "StartOffset": 3233, + "EndOffset": 3239 }, { "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 675, - "EndOffset": 679 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 680, - "EndOffset": 687 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 693, - "EndOffset": 697 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 698, - "EndOffset": 705 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 16, - "StartOffset": 677, - "EndOffset": 681 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 16, - "StartOffset": 682, - "EndOffset": 689 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 16, - "StartOffset": 695, - "EndOffset": 699 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 16, - "StartOffset": 700, - "EndOffset": 707 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 18, - "StartOffset": 891, - "EndOffset": 896 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 18, - "StartOffset": 906, - "EndOffset": 910 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 18, - "StartOffset": 911, - "EndOffset": 918 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 24, - "StartOffset": 1039, - "EndOffset": 1044 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 24, - "StartOffset": 1054, - "EndOffset": 1058 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 24, - "StartOffset": 1059, - "EndOffset": 1066 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1164, - "EndOffset": 1169 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1198, - "EndOffset": 1204 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1205, - "EndOffset": 1212 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 31, - "StartOffset": 1166, - "EndOffset": 1171 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 31, - "StartOffset": 1200, - "EndOffset": 1206 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 31, - "StartOffset": 1207, - "EndOffset": 1214 + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 136, + "StartOffset": 3339, + "EndOffset": 3350 } ] - } - }, - "Vars": {} - }, - "metainfo::convert": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::convert", - "Functions": { - "Converter\u003cHttpConverter\u003e.add_backward_prefix": { - "Exported": false, + }, + "TypeMap.extend": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 118, - "StartOffset": 3588, - "EndOffset": 3648, - "Content": "impl Converter for HttpConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "File": "src/type_map.rs", + "Line": 122, + "StartOffset": 2930, + "EndOffset": 3031, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 118, - "StartOffset": 3632, - "EndOffset": 3639 - } - ], "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 119, - "StartOffset": 3598, - "EndOffset": 3627 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "src/type_map.rs", + "Line": 124, + "StartOffset": 3006, + "EndOffset": 3012 } ], - "GlobalVars": [ + "Types": [ { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 119, - "StartOffset": 3628, - "EndOffset": 3648 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 123, + "StartOffset": 2976, + "EndOffset": 2983 } ] }, - "Converter\u003cHttpConverter\u003e.add_persistent_prefix": { - "Exported": false, + "TypeMap.get": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 110, - "StartOffset": 3278, - "EndOffset": 3374, - "Content": "impl Converter for HttpConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "File": "src/type_map.rs", + "Line": 91, + "StartOffset": 2146, + "EndOffset": 2319, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\n self.inner\n .get(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "MethodCalls": [ + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 111, - "StartOffset": 3322, - "EndOffset": 3351 + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 94, + "StartOffset": 2251, + "EndOffset": 2253 } ], - "Types": [ + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 110, - "StartOffset": 3324, - "EndOffset": 3331 - } - ], - "GlobalVars": [ + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "src/type_map.rs", + "Line": 94, + "StartOffset": 2238, + "EndOffset": 2241 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 111, - "StartOffset": 3352, - "EndOffset": 3374 + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2275, + "EndOffset": 2283 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "File": "src/type_map.rs", + "Line": 95, + "StartOffset": 2298, + "EndOffset": 2310 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 92, + "StartOffset": 2193, + "EndOffset": 2199 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 94, + "StartOffset": 2243, + "EndOffset": 2249 } ] }, - "Converter\u003cHttpConverter\u003e.add_transient_prefix": { - "Exported": false, + "TypeMap.get_mut": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 114, - "StartOffset": 3451, - "EndOffset": 3512, - "Content": "impl Converter for HttpConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "File": "src/type_map.rs", + "Line": 98, + "StartOffset": 2325, + "EndOffset": 2514, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut T\u003e {\n self.inner\n .get_mut(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "MethodCalls": [ + "Results": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 115, - "StartOffset": 3461, - "EndOffset": 3490 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 99, + "StartOffset": 2380, + "EndOffset": 2386 } ], - "Types": [ + "FunctionCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 114, - "StartOffset": 3496, - "EndOffset": 3503 + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 101, + "StartOffset": 2446, + "EndOffset": 2448 } ], - "GlobalVars": [ + "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 115, - "StartOffset": 3491, - "EndOffset": 3512 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "src/type_map.rs", + "Line": 101, + "StartOffset": 2429, + "EndOffset": 2436 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2470, + "EndOffset": 2478 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "File": "src/type_map.rs", + "Line": 102, + "StartOffset": 2493, + "EndOffset": 2505 + } + ], + "Types": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 101, + "StartOffset": 2438, + "EndOffset": 2444 } ] }, - "Converter\u003cHttpConverter\u003e.remove_backward_prefix": { - "Exported": false, + "TypeMap.insert": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 130, - "StartOffset": 4025, - "EndOffset": 4096, - "Content": "impl Converter for HttpConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "File": "src/type_map.rs", + "Line": 86, + "StartOffset": 2003, + "EndOffset": 2140, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: T) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), Box::new(t));\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, + "FunctionCalls": [ + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2110, + "EndOffset": 2112 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "new", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2126, + "EndOffset": 2129 + } + ], "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 131, - "StartOffset": 4035, - "EndOffset": 4066 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2095, + "EndOffset": 2101 } ], "Types": [ { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 130, - "StartOffset": 4072, - "EndOffset": 4078 + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 87, + "StartOffset": 2034, + "EndOffset": 2038 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 130, - "StartOffset": 4079, - "EndOffset": 4086 - } - ], - "GlobalVars": [ + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 87, + "StartOffset": 2041, + "EndOffset": 2045 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 131, - "StartOffset": 4067, - "EndOffset": 4087 + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2102, + "EndOffset": 2108 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 88, + "StartOffset": 2121, + "EndOffset": 2124 } ] }, - "Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { - "Exported": false, + "TypeMap.is_empty": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 122, - "StartOffset": 3723, - "EndOffset": 3796, - "Content": "impl Converter for HttpConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", + "File": "src/type_map.rs", + "Line": 140, + "StartOffset": 3373, + "EndOffset": 3455, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e bool {\n self.inner.is_empty()\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 123, - "StartOffset": 3733, - "EndOffset": 3764 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 122, - "StartOffset": 3772, - "EndOffset": 3778 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 122, - "StartOffset": 3779, - "EndOffset": 3786 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 123, - "StartOffset": 3765, - "EndOffset": 3787 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "src/type_map.rs", + "Line": 142, + "StartOffset": 3439, + "EndOffset": 3447 } ] }, - "Converter\u003cHttpConverter\u003e.remove_transient_prefix": { - "Exported": false, + "TypeMap.iter": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 126, - "StartOffset": 3875, - "EndOffset": 3947, - "Content": "impl Converter for HttpConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "File": "src/type_map.rs", + "Line": 127, + "StartOffset": 3037, + "EndOffset": 3164, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, AnyObject\u003e {\n self.inner.iter()\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 127, - "StartOffset": 3885, - "EndOffset": 3916 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "src/type_map.rs", + "Line": 129, + "StartOffset": 3152, + "EndOffset": 3156 } ], "Types": [ { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 126, - "StartOffset": 3923, - "EndOffset": 3929 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "src/type_map.rs", + "Line": 128, + "StartOffset": 3103, + "EndOffset": 3107 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 126, - "StartOffset": 3930, - "EndOffset": 3937 - } - ], - "GlobalVars": [ + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 128, + "StartOffset": 3112, + "EndOffset": 3118 + }, { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 127, - "StartOffset": 3917, - "EndOffset": 3938 + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 128, + "StartOffset": 3120, + "EndOffset": 3129 } ] }, - "Converter\u003cRpcConverter\u003e.add_backward_prefix": { - "Exported": false, + "TypeMap.len": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 46, - "StartOffset": 1387, - "EndOffset": 1447, - "Content": "impl Converter for RpcConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", + "File": "src/type_map.rs", + "Line": 145, + "StartOffset": 3461, + "EndOffset": 3534, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e usize {\n self.inner.len()\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 46, - "StartOffset": 1431, - "EndOffset": 1438 - } - ], "MethodCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 47, - "StartOffset": 1397, - "EndOffset": 1407 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 47, - "StartOffset": 1408, - "EndOffset": 1427 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "File": "src/type_map.rs", + "Line": 147, + "StartOffset": 3523, + "EndOffset": 3526 } ] }, - "Converter\u003cRpcConverter\u003e.add_persistent_prefix": { - "Exported": false, + "TypeMap.remove": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 38, - "StartOffset": 1118, - "EndOffset": 1213, - "Content": "impl Converter for RpcConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "File": "src/type_map.rs", + "Line": 110, + "StartOffset": 2642, + "EndOffset": 2845, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.inner\n .remove(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "MethodCalls": [ + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 39, - "StartOffset": 1161, - "EndOffset": 1171 + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "File": "src/type_map.rs", + "Line": 113, + "StartOffset": 2756, + "EndOffset": 2758 } ], - "Types": [ + "MethodCalls": [ { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 38, - "StartOffset": 1164, - "EndOffset": 1171 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "remove", + "File": "src/type_map.rs", + "Line": 113, + "StartOffset": 2740, + "EndOffset": 2746 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2780, + "EndOffset": 2788 + }, + { + "ModPath": "", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2803, + "EndOffset": 2811 + }, + { + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2814, + "EndOffset": 2816 + }, + { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "File": "src/type_map.rs", + "Line": 114, + "StartOffset": 2819, + "EndOffset": 2822 } ], - "GlobalVars": [ + "Types": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 39, - "StartOffset": 1172, - "EndOffset": 1193 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "File": "src/type_map.rs", + "Line": 111, + "StartOffset": 2696, + "EndOffset": 2702 + }, + { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 113, + "StartOffset": 2748, + "EndOffset": 2754 } ] }, - "Converter\u003cRpcConverter\u003e.add_transient_prefix": { - "Exported": false, + "TypeMap::with_capacity": { + "Exported": true, "IsMethod": true, "IsInterfaceMethod": false, "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 42, - "StartOffset": 1270, - "EndOffset": 1331, - "Content": "impl Converter for RpcConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "File": "src/type_map.rs", + "Line": 79, + "StartOffset": 1812, + "EndOffset": 1997, + "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e Self {\n TypeMap {\n inner: FxHashMapRand::with_capacity_and_hasher(capacity, Default::default()),\n }\n }\n}", "Receiver": { "IsPointer": false, "Type": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" + "PkgPath": "metainfo::type_map", + "Name": "TypeMap" } }, - "MethodCalls": [ + "FunctionCalls": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 43, - "StartOffset": 1280, - "EndOffset": 1290 - } - ], - "Types": [ + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "with_capacity_and_hasher", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1926, + "EndOffset": 1950 + }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 42, - "StartOffset": 1315, - "EndOffset": 1322 + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1970, + "EndOffset": 1977 } ], - "GlobalVars": [ + "Types": [ { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 43, - "StartOffset": 1291, - "EndOffset": 1311 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 81, + "StartOffset": 1882, + "EndOffset": 1889 + }, + { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1911, + "EndOffset": 1924 + }, + { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "File": "src/type_map.rs", + "Line": 82, + "StartOffset": 1961, + "EndOffset": 1968 } ] - }, - "Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + } + }, + "Types": { + "AnyObject": { "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "TypeKind": "type-parameter", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 58, - "StartOffset": 1766, - "EndOffset": 1837, - "Content": "impl Converter for RpcConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "MethodCalls": [ + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 8, + "StartOffset": 142, + "EndOffset": 197, + "Content": "pub(crate) type AnyObject = Box\u003cdyn Any + Send + Sync\u003e;", + "SubStruct": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 59, - "StartOffset": 1776, - "EndOffset": 1789 - } - ], - "Types": [ + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "File": "src/type_map.rs", + "Line": 8, + "StartOffset": 170, + "EndOffset": 173 + }, { "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 58, - "StartOffset": 1813, - "EndOffset": 1819 + "PkgPath": "core::any", + "Name": "Any", + "File": "src/type_map.rs", + "Line": 8, + "StartOffset": 178, + "EndOffset": 181 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 58, - "StartOffset": 1820, - "EndOffset": 1827 - } - ], - "GlobalVars": [ + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "File": "src/type_map.rs", + "Line": 8, + "StartOffset": 184, + "EndOffset": 188 + }, { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 59, - "StartOffset": 1790, - "EndOffset": 1809 + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "File": "src/type_map.rs", + "Line": 8, + "StartOffset": 191, + "EndOffset": 195 } ] }, - "Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "Entry": { + "Exported": true, + "TypeKind": "struct", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 50, - "StartOffset": 1502, - "EndOffset": 1575, - "Content": "impl Converter for RpcConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "MethodCalls": [ + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 10, + "StartOffset": 199, + "EndOffset": 305, + "Content": "pub struct Entry\u003c'a, K: 'a, V: 'a\u003e {\n inner: MapEntry\u003c'a, K, AnyObject\u003e,\n _marker: PhantomData\u003cV\u003e,\n}", + "SubStruct": [ { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 51, - "StartOffset": 1512, - "EndOffset": 1525 - } - ], - "Types": [ + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "src/type_map.rs", + "Line": 11, + "StartOffset": 247, + "EndOffset": 255 + }, { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 50, - "StartOffset": 1551, - "EndOffset": 1557 + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 11, + "StartOffset": 263, + "EndOffset": 272 }, { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 50, - "StartOffset": 1558, - "EndOffset": 1565 + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "File": "src/type_map.rs", + "Line": 12, + "StartOffset": 288, + "EndOffset": 299 } ], - "GlobalVars": [ - { + "Methods": { + "and_modify": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 51, - "StartOffset": 1526, - "EndOffset": 1547 - } - ] - }, - "Converter\u003cRpcConverter\u003e.remove_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1635, - "EndOffset": 1707, - "Content": "impl Converter for RpcConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify" + }, + "or_default": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "MethodCalls": [ - { + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default" + }, + "or_insert": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 55, - "StartOffset": 1645, - "EndOffset": 1658 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1683, - "EndOffset": 1689 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert" }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1690, - "EndOffset": 1697 - } - ], - "GlobalVars": [ - { + "or_insert_with": { "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 55, - "StartOffset": 1659, - "EndOffset": 1679 + "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" } - ] + } }, - "HttpConverter.add_prefix_and_to_http_format": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, + "TypeMap": { + "Exported": true, + "TypeKind": "struct", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 92, - "StartOffset": 2680, - "EndOffset": 2931, - "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\n let mut buf = String::with_capacity(prefix.len() + key.len());\n buf.push_str(prefix);\n self.to_http_format(key, \u0026mut buf);\n FastStr::from_string(buf)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "File": "src/type_map.rs", + "Line": 66, + "StartOffset": 1577, + "EndOffset": 1670, + "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand\u003cTypeId, AnyObject\u003e,\n}", + "SubStruct": [ { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 94, - "StartOffset": 2721, - "EndOffset": 2734 + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "src/type_map.rs", + "Line": 68, + "StartOffset": 1635, + "EndOffset": 1648 }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 97, - "StartOffset": 2899, - "EndOffset": 2910 - } - ], - "MethodCalls": [ { "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 94, - "StartOffset": 2742, - "EndOffset": 2745 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "File": "src/convert.rs", - "Line": 95, - "StartOffset": 2793, - "EndOffset": 2801 + "PkgPath": "core::any", + "Name": "TypeId", + "File": "src/type_map.rs", + "Line": 68, + "StartOffset": 1649, + "EndOffset": 1655 }, { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 96, - "StartOffset": 2865, - "EndOffset": 2879 + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "File": "src/type_map.rs", + "Line": 68, + "StartOffset": 1657, + "EndOffset": 1666 } ], - "Types": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 93, - "StartOffset": 2757, - "EndOffset": 2764 + "Methods": { + "capacity": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity" }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 94, - "StartOffset": 2713, - "EndOffset": 2719 - } - ] - }, - "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": 100, - "StartOffset": 2970, - "EndOffset": 3230, - "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n Some(FastStr::from_string(buf))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "clear": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 103, - "StartOffset": 3111, - "EndOffset": 3124 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear" }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 105, - "StartOffset": 3204, - "EndOffset": 3215 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "src/convert.rs", - "Line": 102, - "StartOffset": 3003, - "EndOffset": 3015 + "contains": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains" }, - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 103, - "StartOffset": 3129, - "EndOffset": 3132 + "entry": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry" }, - { + "extend": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 104, - "StartOffset": 3139, - "EndOffset": 3152 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 101, - "StartOffset": 3049, - "EndOffset": 3055 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend" }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 101, - "StartOffset": 3056, - "EndOffset": 3063 + "get": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get" }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 103, - "StartOffset": 3103, - "EndOffset": 3109 - } - ] - }, - "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": 66, - "StartOffset": 1925, - "EndOffset": 2298, - "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' =\u003e ch.to_ascii_lowercase(),\n '_' =\u003e '-',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "get_mut": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "src/convert.rs", - "Line": 69, - "StartOffset": 2043, - "EndOffset": 2048 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut" }, - { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "File": "src/convert.rs", - "Line": 71, - "StartOffset": 2145, - "EndOffset": 2163 + "insert": { + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert" }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "File": "src/convert.rs", - "Line": 75, - "StartOffset": 2268, - "EndOffset": 2272 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 68, - "StartOffset": 2057, - "EndOffset": 2063 - } - ] - }, - "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": 245, - "StartOffset": 7293, - "EndOffset": 7490, - "Content": "impl HttpConverter {\n fn to_http_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_http_format(key, \u0026mut buf);\n buf\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { + "is_empty": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 246, - "StartOffset": 7344, - "EndOffset": 7357 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 246, - "StartOffset": 7362, - "EndOffset": 7365 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty" }, - { + "iter": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 247, - "StartOffset": 7390, - "EndOffset": 7404 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 245, - "StartOffset": 7339, - "EndOffset": 7345 + "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;" }, - "HttpConverter.to_rpc_format": { + { + "Path": "use faststr::FastStr;" + } + ] + }, + "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};" + } + ] + }, + "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;" + } + ] + }, + "src/forward.rs": { + "Path": "src/forward.rs", + "Imports": [ + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use crate::AHashMap;" + } + ] + }, + "src/kv.rs": { + "Path": "src/kv.rs", + "Imports": [ + { + "Path": "use ahash::AHashMap;" + }, + { + "Path": "use faststr::FastStr;" + }, + { + "Path": "use paste::paste;" + }, + { + "Path": "use super::*;" + } + ] + }, + "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::*;" + } + ] + }, + "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;" + } + ] + } + } + }, + "rustc-hash@2.0.0": { + "Language": "rust", + "Version": "2.0.0", + "Name": "rustc-hash", + "Dir": "", + "Packages": { + "rustc-hash::random_state": { + "IsMain": false, + "IsTest": false, + "PkgPath": "rustc-hash::random_state", + "Functions": { + "BuildHasher\u003cFxRandomState\u003e.build_hasher": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 79, - "StartOffset": 2313, - "EndOffset": 2665, - "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher", + "File": "random_state.rs", + "Line": 47, + "StartOffset": 1626, + "EndOffset": 1711, + "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(\u0026self) -\u003e Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "src/convert.rs", - "Line": 82, - "StartOffset": 2411, - "EndOffset": 2416 - }, - { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "File": "src/convert.rs", - "Line": 84, - "StartOffset": 2512, - "EndOffset": 2530 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "File": "src/convert.rs", - "Line": 88, - "StartOffset": 2635, - "EndOffset": 2639 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 81, - "StartOffset": 2424, - "EndOffset": 2430 + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" } - ] + } }, - "HttpConverter.to_rpc_format_string": { + "Default\u003cFxRandomState\u003e::default": { "Exported": false, "IsMethod": true, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 251, - "StartOffset": 7515, - "EndOffset": 7686, - "Content": "impl HttpConverter {\n fn to_rpc_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n buf\n }\n}", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "Default\u003cFxRandomState\u003e::default", + "File": "random_state.rs", + "Line": 53, + "StartOffset": 1752, + "EndOffset": 1800, + "Content": "impl Default for FxRandomState {\n fn default() -\u003e Self {\n Self::new()\n }\n}", "Receiver": { "IsPointer": false, "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 252, - "StartOffset": 7542, - "EndOffset": 7555 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 252, - "StartOffset": 7560, - "EndOffset": 7563 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 253, - "StartOffset": 7587, - "EndOffset": 7600 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 251, - "StartOffset": 7560, - "EndOffset": 7566 + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState" } - ] + } + } + }, + "Types": { + "FxHashMapRand": { + "Exported": false, + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashMapRand", + "File": "random_state.rs", + "Line": 4, + "StartOffset": 65, + "EndOffset": 208, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand\u003cK, V\u003e = HashMap\u003cK, V, FxRandomState\u003e;" }, - "RpcConverter.add_prefix": { + "FxHashSetRand": { "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 22, - "StartOffset": 643, - "EndOffset": 877, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 23, - "StartOffset": 720, - "EndOffset": 727 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 24, - "StartOffset": 703, - "EndOffset": 716 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 27, - "StartOffset": 862, - "EndOffset": 873 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 24, - "StartOffset": 724, - "EndOffset": 727 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "File": "src/convert.rs", - "Line": 25, - "StartOffset": 756, - "EndOffset": 764 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 24, - "StartOffset": 695, - "EndOffset": 701 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 27, - "StartOffset": 853, - "EndOffset": 860 + "TypeKind": "type-parameter", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxHashSetRand", + "File": "random_state.rs", + "Line": 7, + "StartOffset": 210, + "EndOffset": 347, + "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand\u003cV\u003e = HashSet\u003cV, FxRandomState\u003e;" + }, + "FxRandomState": { + "Exported": false, + "TypeKind": "struct", + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "FxRandomState", + "File": "random_state.rs", + "Line": 10, + "StartOffset": 349, + "EndOffset": 687, + "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.\npub struct FxRandomState {\n seed: usize,\n}", + "Methods": { + "build_hasher": { + "ModPath": "rustc-hash@2.0.0", + "PkgPath": "rustc-hash::random_state", + "Name": "BuildHasher\u003cFxRandomState\u003e.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": 2899, + "StartOffset": 89098, + "EndOffset": 89108, + "Content": "and_modify" }, - "RpcConverter.remove_prefix": { + "capacity": { "Exported": false, - "IsMethod": true, + "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 30, - "StartOffset": 916, - "EndOffset": 1059, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::from_string(key.to_owned()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 33, - "StartOffset": 1031, - "EndOffset": 1042 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "src/convert.rs", - "Line": 32, - "StartOffset": 949, - "EndOffset": 961 - }, - { - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "File": "src/convert.rs", - "Line": 33, - "StartOffset": 1047, - "EndOffset": 1055 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 31, - "StartOffset": 977, - "EndOffset": 983 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 31, - "StartOffset": 984, - "EndOffset": 991 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "capacity", + "File": "map.rs", + "Line": 348, + "StartOffset": 13112, + "EndOffset": 13120, + "Content": "capacity" }, - "add_http_prefix": { + "clear": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "File": "src/convert.rs", - "Line": 305, - "StartOffset": 9416, - "EndOffset": 9828, - "Content": "#[test]\n fn add_http_prefix() {\n assert_eq!(\n HttpConverter.add_persistent_prefix(\"TEST_KEY\"),\n \"rpc-persist-test-key\",\n );\n assert_eq!(\n HttpConverter.add_transient_prefix(\"TEST_KEY\"),\n \"rpc-transit-test-key\",\n );\n assert_eq!(\n HttpConverter.add_backward_prefix(\"TEST_KEY\"),\n \"rpc-backward-test-key\",\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 307, - "StartOffset": 9433, - "EndOffset": 9442 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 308, - "StartOffset": 9478, - "EndOffset": 9499 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 312, - "StartOffset": 9606, - "EndOffset": 9626 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 316, - "StartOffset": 9733, - "EndOffset": 9752 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 308, - "StartOffset": 9464, - "EndOffset": 9477 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "File": "map.rs", + "Line": 726, + "StartOffset": 24426, + "EndOffset": 24431, + "Content": "clear" }, - "add_rpc_prefix": { + "contains_key": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "File": "src/convert.rs", - "Line": 139, - "StartOffset": 4275, - "EndOffset": 4683, - "Content": "#[test]\n fn add_rpc_prefix() {\n assert_eq!(\n RpcConverter.add_persistent_prefix(\"TEST_KEY\"),\n \"RPC_PERSIST_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_transient_prefix(\"TEST_KEY\"),\n \"RPC_TRANSIT_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_backward_prefix(\"TEST_KEY\"),\n \"RPC_BACKWARD_TEST_KEY\",\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 141, - "StartOffset": 4292, - "EndOffset": 4301 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 142, - "StartOffset": 4335, - "EndOffset": 4356 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 146, - "StartOffset": 4462, - "EndOffset": 4482 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 150, - "StartOffset": 4588, - "EndOffset": 4607 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/convert.rs", - "Line": 142, - "StartOffset": 4322, - "EndOffset": 4334 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "File": "map.rs", + "Line": 1124, + "StartOffset": 37104, + "EndOffset": 37116, + "Content": "contains_key" }, - "check": { + "default": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check", - "File": "src/convert.rs", - "Line": 260, - "StartOffset": 7730, - "EndOffset": 7821, - "Content": "fn check(rpc_style: \u0026str, http_style: \u0026str) {\n assert_eq!(HttpConverter.to_http_format_string(rpc_style), http_style);\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "File": "src/convert.rs", - "Line": 260, - "StartOffset": 7733, - "EndOffset": 7738 - }, - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7770, - "EndOffset": 7779 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7795, - "EndOffset": 7816 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7781, - "EndOffset": 7794 - } - ] - }, - "check_http": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_http", - "File": "src/convert.rs", - "Line": 288, - "StartOffset": 8836, - "EndOffset": 9064, - "Content": "fn check_http(http_style: \u0026str) {\n assert_eq!(\n HttpConverter\n .to_http_format_string(\u0026HttpConverter.to_rpc_format_string(http_style)),\n http_style,\n );\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "File": "src/convert.rs", - "Line": 288, - "StartOffset": 8839, - "EndOffset": 8849 - }, - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 289, - "StartOffset": 8850, - "EndOffset": 8859 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 291, - "StartOffset": 8925, - "EndOffset": 8946 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 291, - "StartOffset": 8962, - "EndOffset": 8982 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 290, - "StartOffset": 8896, - "EndOffset": 8909 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "default", + "File": "map.rs", + "Line": 1405, + "StartOffset": 46194, + "EndOffset": 46201, + "Content": "default" }, - "check_rpc": { + "entry": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "File": "src/convert.rs", - "Line": 282, - "StartOffset": 8594, - "EndOffset": 8822, - "Content": "fn check_rpc(rpc_style: \u0026str) {\n assert_eq!(\n HttpConverter.to_rpc_format_string(\u0026HttpConverter.to_http_format_string(rpc_style)),\n rpc_style,\n );\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "File": "src/convert.rs", - "Line": 282, - "StartOffset": 8597, - "EndOffset": 8606 - }, - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 283, - "StartOffset": 8633, - "EndOffset": 8642 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8691, - "EndOffset": 8711 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8727, - "EndOffset": 8748 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8677, - "EndOffset": 8690 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "entry", + "File": "map.rs", + "Line": 871, + "StartOffset": 29118, + "EndOffset": 29123, + "Content": "entry" }, - "format_bidirect_convert": { + "extend": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "File": "src/convert.rs", - "Line": 280, - "StartOffset": 8577, - "EndOffset": 9379, - "Content": "#[test]\n fn format_bidirect_convert() {\n fn check_rpc(rpc_style: \u0026str) {\n assert_eq!(\n HttpConverter.to_rpc_format_string(\u0026HttpConverter.to_http_format_string(rpc_style)),\n rpc_style,\n );\n }\n fn check_http(http_style: \u0026str) {\n assert_eq!(\n HttpConverter\n .to_http_format_string(\u0026HttpConverter.to_rpc_format_string(http_style)),\n http_style,\n );\n }\n check_rpc(\"RPC_PERSIST_TEST_KEY\");\n check_rpc(\"RPC_TRANSIT_TEST_KEY\");\n check_rpc(\"RPC_BACKWARD_TEST_KEY\");\n check_rpc(\"TEST_KEY\");\n check_http(\"rpc-persist-test-key\");\n check_http(\"rpc-transit-test-key\");\n check_http(\"rpc-backward-test-key\");\n check_http(\"test-key\");\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 283, - "StartOffset": 8633, - "EndOffset": 8642 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8691, - "EndOffset": 8711 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8727, - "EndOffset": 8748 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 284, - "StartOffset": 8677, - "EndOffset": 8690 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "extend", + "File": "map.rs", + "Line": 3245, + "StartOffset": 98957, + "EndOffset": 98963, + "Content": "extend" }, - "http_format_convert_test": { + "get": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "File": "src/convert.rs", - "Line": 258, - "StartOffset": 7713, - "EndOffset": 8102, - "Content": "#[test]\n fn http_format_convert_test() {\n fn check(rpc_style: \u0026str, http_style: \u0026str) {\n assert_eq!(HttpConverter.to_http_format_string(rpc_style), http_style);\n }\n check(\"RPC_PERSIST_TEST_KEY\", \"rpc-persist-test-key\");\n check(\"RPC_TRANSIT_TEST_KEY\", \"rpc-transit-test-key\");\n check(\"RPC_BACKWARD_TEST_KEY\", \"rpc-backward-test-key\");\n check(\"TEST_KEY\", \"test-key\");\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7770, - "EndOffset": 7779 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7795, - "EndOffset": 7816 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 261, - "StartOffset": 7781, - "EndOffset": 7794 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get", + "File": "map.rs", + "Line": 893, + "StartOffset": 29785, + "EndOffset": 29788, + "Content": "get" }, - "http_prefix_bidirect": { + "get_mut": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "File": "src/convert.rs", - "Line": 361, - "StartOffset": 10945, - "EndOffset": 12437, - "Content": "#[test]\n fn http_prefix_bidirect() {\n // remove after add\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\u0026HttpConverter.add_persistent_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\u0026HttpConverter.add_transient_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\u0026HttpConverter.add_backward_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n\n // add after remove\n assert_eq!(\n HttpConverter.add_persistent_prefix(\n \u0026HttpConverter\n .remove_persistent_prefix(\"rpc-persist-test-key\")\n .unwrap()\n ),\n \"rpc-persist-test-key\",\n );\n assert_eq!(\n HttpConverter.add_transient_prefix(\n \u0026HttpConverter\n .remove_transient_prefix(\"rpc-transit-test-key\")\n .unwrap()\n ),\n \"rpc-transit-test-key\",\n );\n assert_eq!(\n HttpConverter.add_backward_prefix(\n \u0026HttpConverter\n .remove_backward_prefix(\"rpc-backward-test-key\")\n .unwrap()\n ),\n \"rpc-backward-test-key\",\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 364, - "StartOffset": 10994, - "EndOffset": 11003 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 366, - "StartOffset": 11051, - "EndOffset": 11075 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 366, - "StartOffset": 11091, - "EndOffset": 11112 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "src/convert.rs", - "Line": 367, - "StartOffset": 11077, - "EndOffset": 11085 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 372, - "StartOffset": 11259, - "EndOffset": 11282 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 372, - "StartOffset": 11298, - "EndOffset": 11318 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 378, - "StartOffset": 11465, - "EndOffset": 11487 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 378, - "StartOffset": 11503, - "EndOffset": 11522 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/convert.rs", - "Line": 388, - "StartOffset": 11782, - "EndOffset": 11788 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 365, - "StartOffset": 11026, - "EndOffset": 11039 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "get_mut", + "File": "map.rs", + "Line": 1152, + "StartOffset": 37852, + "EndOffset": 37859, + "Content": "get_mut" }, - "remove_http_prefix": { + "insert": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "File": "src/convert.rs", - "Line": 321, - "StartOffset": 9844, - "EndOffset": 10929, - "Content": "#[test]\n fn remove_http_prefix() {\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\"rpc-persist-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\"rpc-transit-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\"rpc-backward-test-key\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n HttpConverter\n .remove_persistent_prefix(\"rpc-persist_test-key\")\n .as_deref(),\n None,\n );\n assert_eq!(\n HttpConverter\n .remove_transient_prefix(\"rpc_transit-test-key\")\n .as_deref(),\n None,\n );\n assert_eq!(\n HttpConverter\n .remove_backward_prefix(\"rpc-bbbbdddd-test-key\")\n .as_deref(),\n None,\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 323, - "StartOffset": 9861, - "EndOffset": 9870 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 325, - "StartOffset": 9920, - "EndOffset": 9944 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "src/convert.rs", - "Line": 326, - "StartOffset": 9946, - "EndOffset": 9954 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 331, - "StartOffset": 10102, - "EndOffset": 10125 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 337, - "StartOffset": 10283, - "EndOffset": 10305 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 324, - "StartOffset": 9895, - "EndOffset": 9908 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "insert", + "File": "map.rs", + "Line": 1188, + "StartOffset": 39046, + "EndOffset": 39052, + "Content": "insert" }, - "remove_rpc_prefix": { + "is_empty": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "File": "src/convert.rs", - "Line": 155, - "StartOffset": 4699, - "EndOffset": 5777, - "Content": "#[test]\n fn remove_rpc_prefix() {\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\"RPC_TRANSIT_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\"RPC_BACKWARD_TEST_KEY\")\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST-TEST_KEY\")\n .as_deref(),\n None,\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\"RPC-TRANSIT_TEST_KEY\")\n .as_deref(),\n None,\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\"RPC_BBBBDDDD_TEST_KEY\")\n .as_deref(),\n None,\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 157, - "StartOffset": 4716, - "EndOffset": 4725 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 159, - "StartOffset": 4774, - "EndOffset": 4798 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "src/convert.rs", - "Line": 160, - "StartOffset": 4799, - "EndOffset": 4807 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 165, - "StartOffset": 4955, - "EndOffset": 4978 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 171, - "StartOffset": 5135, - "EndOffset": 5157 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/convert.rs", - "Line": 158, - "StartOffset": 4749, - "EndOffset": 4761 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "is_empty", + "File": "map.rs", + "Line": 604, + "StartOffset": 20378, + "EndOffset": 20386, + "Content": "is_empty" }, - "rpc_format_convert_test": { + "iter": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_format_convert_test", - "File": "src/convert.rs", - "Line": 269, - "StartOffset": 8146, - "EndOffset": 8533, - "Content": "#[test]\n fn rpc_format_convert_test() {\n fn check(http_style: \u0026str, rpc_style: \u0026str) {\n assert_eq!(HttpConverter.to_rpc_format_string(http_style), rpc_style);\n }\n check(\"rpc-persist-test-key\", \"RPC_PERSIST_TEST_KEY\");\n check(\"rpc-transit-test-key\", \"RPC_TRANSIT_TEST_KEY\");\n check(\"rpc-backward-test-key\", \"RPC_BACKWARD_TEST_KEY\");\n check(\"test-key\", \"TEST_KEY\");\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 272, - "StartOffset": 8202, - "EndOffset": 8211 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "File": "src/convert.rs", - "Line": 272, - "StartOffset": 8227, - "EndOffset": 8247 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 272, - "StartOffset": 8213, - "EndOffset": 8226 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "File": "map.rs", + "Line": 534, + "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": 586, + "StartOffset": 19963, + "EndOffset": 19966, + "Content": "len" }, - "rpc_prefix_bidirect": { + "or_insert_with": { "Exported": false, "IsMethod": false, "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "File": "src/convert.rs", - "Line": 195, - "StartOffset": 5793, - "EndOffset": 7272, - "Content": "#[test]\n fn rpc_prefix_bidirect() {\n // remove after add\n assert_eq!(\n RpcConverter\n .remove_persistent_prefix(\u0026RpcConverter.add_persistent_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_transient_prefix(\u0026RpcConverter.add_transient_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n assert_eq!(\n RpcConverter\n .remove_backward_prefix(\u0026RpcConverter.add_backward_prefix(\"TEST_KEY\"))\n .as_deref(),\n Some(\"TEST_KEY\"),\n );\n\n // add after remove\n assert_eq!(\n RpcConverter.add_persistent_prefix(\n \u0026RpcConverter\n .remove_persistent_prefix(\"RPC_PERSIST_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_PERSIST_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_transient_prefix(\n \u0026RpcConverter\n .remove_transient_prefix(\"RPC_TRANSIT_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_TRANSIT_TEST_KEY\",\n );\n assert_eq!(\n RpcConverter.add_backward_prefix(\n \u0026RpcConverter\n .remove_backward_prefix(\"RPC_BACKWARD_TEST_KEY\")\n .unwrap()\n ),\n \"RPC_BACKWARD_TEST_KEY\",\n );\n }", - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "src/convert.rs", - "Line": 198, - "StartOffset": 5841, - "EndOffset": 5850 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 200, - "StartOffset": 5898, - "EndOffset": 5922 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 200, - "StartOffset": 5937, - "EndOffset": 5958 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "src/convert.rs", - "Line": 201, - "StartOffset": 5923, - "EndOffset": 5931 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 206, - "StartOffset": 6104, - "EndOffset": 6127 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 206, - "StartOffset": 6142, - "EndOffset": 6162 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 212, - "StartOffset": 6308, - "EndOffset": 6330 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 212, - "StartOffset": 6345, - "EndOffset": 6364 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/convert.rs", - "Line": 222, - "StartOffset": 6621, - "EndOffset": 6627 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/convert.rs", - "Line": 199, - "StartOffset": 5873, - "EndOffset": 5885 - } - ] + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "or_insert_with", + "File": "map.rs", + "Line": 2821, + "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": 2848, + "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": 1243, + "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": 330, + "StartOffset": 12430, + "EndOffset": 12454, + "Content": "with_capacity_and_hasher" } }, "Types": { - "Converter": { - "Exported": true, - "TypeKind": "interface", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/convert.rs", - "Line": 8, - "StartOffset": -1, - "EndOffset": 543, - "Content": "pub trait Converter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 9, - "StartOffset": 232, - "EndOffset": 239 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 10, - "StartOffset": 253, - "EndOffset": 260 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 12, - "StartOffset": 369, - "EndOffset": 376 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 14, - "StartOffset": 455, - "EndOffset": 461 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 14, - "StartOffset": 462, - "EndOffset": 469 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 15, - "StartOffset": 455, - "EndOffset": 461 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 15, - "StartOffset": 462, - "EndOffset": 469 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 16, - "StartOffset": 524, - "EndOffset": 530 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 16, - "StartOffset": 531, - "EndOffset": 538 - } - ] - }, - "HttpConverter": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 63, - "StartOffset": -1, - "EndOffset": 1918, - "Content": "pub struct HttpConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.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" - } - } + "Entry": { + "Exported": false, + "TypeKind": "enum", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Entry", + "File": "map.rs", + "Line": 2238, + "StartOffset": 70549, + "EndOffset": 70554, + "Content": "Entry" }, - "RpcConverter": { - "Exported": true, + "Iter": { + "Exported": false, "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/convert.rs", - "Line": 19, - "StartOffset": -1, - "EndOffset": 636, - "Content": "pub struct RpcConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix" - }, - "add_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix" - }, - "add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix" - }, - "remove_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix" - }, - "remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix" - } - } + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "File": "map.rs", + "Line": 1485, + "StartOffset": 48646, + "EndOffset": 48650, + "Content": "Iter" } }, - "Vars": { - "ch": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "ch", - "File": "src/convert.rs", - "Line": 83, - "StartOffset": 2460, - "EndOffset": 2608, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format" - }, - "Content": "let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };" - }, - "key": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "key", - "File": "src/convert.rs", - "Line": 32, - "StartOffset": 935, - "EndOffset": 971, - "Type": { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix" - }, - "Content": "let key = key.strip_prefix(prefix)?;" - }, - "mut buf": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut buf", - "File": "src/convert.rs", - "Line": 103, - "StartOffset": 3089, - "EndOffset": 3136, - "Type": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String" - }, - "Content": "let mut buf = String::with_capacity(key.len());" - }, - "mut res": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut res", - "File": "src/convert.rs", - "Line": 24, - "StartOffset": 681, - "EndOffset": 743, - "Type": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String" - }, - "Content": "let mut res = String::with_capacity(prefix.len() + key.len());" - } - } + "Vars": {} }, - "metainfo::faststr_map": { + "std::macros": { "IsMain": false, "IsTest": false, - "PkgPath": "metainfo::faststr_map", + "PkgPath": "std::macros", "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": 1984, - "EndOffset": 2038, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 2014, - "EndOffset": 2022 - } - ] - }, - "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": 1360, - "EndOffset": 1406, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 1390, - "EndOffset": 1395 - } - ] - }, - "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": 1109, - "EndOffset": 1174, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 46, - "StartOffset": 1161, - "EndOffset": 1163 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/faststr_map.rs", - "Line": 46, - "StartOffset": 1139, - "EndOffset": 1151 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 46, - "StartOffset": 1153, - "EndOffset": 1159 - } - ] - }, - "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": 1680, - "EndOffset": 1768, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, FastStr\u003e {\n self.inner.entry(TypeId::of::\u003cT\u003e())\n }\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": 1720, - "EndOffset": 1725 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1730, - "EndOffset": 1736 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1738, - "EndOffset": 1745 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 71, - "StartOffset": 1724, - "EndOffset": 1726 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/faststr_map.rs", - "Line": 71, - "StartOffset": 1710, - "EndOffset": 1715 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 71, - "StartOffset": 1716, - "EndOffset": 1722 - } - ] - }, - "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": 1439, - "EndOffset": 1505, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/faststr_map.rs", - "Line": 61, - "StartOffset": 1469, - "EndOffset": 1475 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 60, - "StartOffset": 1472, - "EndOffset": 1482 - } - ] - }, - "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": 853, - "EndOffset": 925, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.inner.get(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 887, - "EndOffset": 893 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 895, - "EndOffset": 902 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 36, - "StartOffset": 896, - "EndOffset": 898 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/faststr_map.rs", - "Line": 36, - "StartOffset": 883, - "EndOffset": 886 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 36, - "StartOffset": 888, - "EndOffset": 894 - } - ] - }, - "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": 973, - "EndOffset": 1057, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut FastStr\u003e {\n self.inner.get_mut(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1015, - "EndOffset": 1021 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1027, - "EndOffset": 1034 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 41, - "StartOffset": 1020, - "EndOffset": 1022 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/faststr_map.rs", - "Line": 41, - "StartOffset": 1003, - "EndOffset": 1010 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 41, - "StartOffset": 1012, - "EndOffset": 1018 - } - ] - }, - "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": 714, - "EndOffset": 799, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: FastStr) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), t);\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 31, - "StartOffset": 759, - "EndOffset": 761 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "src/faststr_map.rs", - "Line": 31, - "StartOffset": 744, - "EndOffset": 750 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 732, - "EndOffset": 736 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 739, - "EndOffset": 743 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 769, - "EndOffset": 776 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 31, - "StartOffset": 751, - "EndOffset": 757 - } - ] - }, - "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": 1817, - "EndOffset": 1870, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 1847, - "EndOffset": 1855 - } - ] - }, - "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": 1549, - "EndOffset": 1649, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, FastStr\u003e {\n self.inner.iter()\n }\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": 1602, - "EndOffset": 1606 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 65, - "StartOffset": 1611, - "EndOffset": 1617 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 65, - "StartOffset": 1619, - "EndOffset": 1626 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/faststr_map.rs", - "Line": 66, - "StartOffset": 1579, - "EndOffset": 1583 - } - ] - }, - "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": 1905, - "EndOffset": 1954, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 1935, - "EndOffset": 1938 - } - ] - }, - "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": 1231, - "EndOffset": 1309, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.inner.remove(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1272, - "EndOffset": 1278 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1279, - "EndOffset": 1286 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 51, - "StartOffset": 1277, - "EndOffset": 1279 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/faststr_map.rs", - "Line": 51, - "StartOffset": 1261, - "EndOffset": 1267 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 51, - "StartOffset": 1269, - "EndOffset": 1275 - } - ] - }, - "FastStrMap::new": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::new", - "File": "src/faststr_map.rs", - "Line": 15, - "StartOffset": 391, - "EndOffset": 511, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn new() -\u003e Self {\n Self {\n inner: FxHashMapRand::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": "default", - "File": "src/faststr_map.rs", - "Line": 18, - "StartOffset": 480, - "EndOffset": 487 - } - ], - "Types": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 18, - "StartOffset": 465, - "EndOffset": 478 - } - ] - }, - "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": 526, - "EndOffset": 699, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 623, - "EndOffset": 647 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 667, - "EndOffset": 674 - } - ], - "Types": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 608, - "EndOffset": 621 - }, - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/faststr_map.rs", - "Line": 25, - "StartOffset": 658, - "EndOffset": 665 - } - ] - } - }, - "Types": { - "FastStrMap": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 6, - "StartOffset": -1, - "EndOffset": 342, - "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\u003cFastStr\u003e and Into\u003cFastStr\u003e.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand\u003cTypeId, FastStr\u003e,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 11, - "StartOffset": 328, - "EndOffset": 341 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 11, - "StartOffset": 342, - "EndOffset": 348 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 11, - "StartOffset": 350, - "EndOffset": 357 - } - ], - "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": -1, - "EndOffset": 1700, - "Content": "pub trait Forward {\n fn get_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_persistent\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_upstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 69, - "EndOffset": 74 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 99, - "EndOffset": 105 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 106, - "EndOffset": 113 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 88, - "EndOffset": 93 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 118, - "EndOffset": 124 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 125, - "EndOffset": 132 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 8, - "StartOffset": 159, - "EndOffset": 164 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 8, - "StartOffset": 189, - "EndOffset": 195 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 8, - "StartOffset": 196, - "EndOffset": 203 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 314, - "EndOffset": 320 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 322, - "EndOffset": 330 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 331, - "EndOffset": 338 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 340, - "EndOffset": 347 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 314, - "EndOffset": 320 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 322, - "EndOffset": 330 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 331, - "EndOffset": 338 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 340, - "EndOffset": 347 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 12, - "StartOffset": 387, - "EndOffset": 393 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 12, - "StartOffset": 395, - "EndOffset": 403 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 12, - "StartOffset": 404, - "EndOffset": 411 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 12, - "StartOffset": 413, - "EndOffset": 420 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 16, - "StartOffset": 566, - "EndOffset": 572 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 16, - "StartOffset": 573, - "EndOffset": 581 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 16, - "StartOffset": 582, - "EndOffset": 589 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 16, - "StartOffset": 591, - "EndOffset": 598 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 19, - "StartOffset": 686, - "EndOffset": 692 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 19, - "StartOffset": 693, - "EndOffset": 701 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 19, - "StartOffset": 702, - "EndOffset": 709 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 19, - "StartOffset": 711, - "EndOffset": 718 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 762, - "EndOffset": 766 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 767, - "EndOffset": 774 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 780, - "EndOffset": 784 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 785, - "EndOffset": 792 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 762, - "EndOffset": 766 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 767, - "EndOffset": 774 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 780, - "EndOffset": 784 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 785, - "EndOffset": 792 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 23, - "StartOffset": 849, - "EndOffset": 853 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 23, - "StartOffset": 854, - "EndOffset": 861 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 23, - "StartOffset": 867, - "EndOffset": 871 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 23, - "StartOffset": 872, - "EndOffset": 879 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 25, - "StartOffset": 1045, - "EndOffset": 1050 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 25, - "StartOffset": 1060, - "EndOffset": 1064 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 25, - "StartOffset": 1065, - "EndOffset": 1072 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 30, - "StartOffset": 1174, - "EndOffset": 1179 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 30, - "StartOffset": 1189, - "EndOffset": 1193 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 30, - "StartOffset": 1194, - "EndOffset": 1201 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 36, - "StartOffset": 1319, - "EndOffset": 1324 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 36, - "StartOffset": 1334, - "EndOffset": 1338 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 36, - "StartOffset": 1339, - "EndOffset": 1346 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 41, - "StartOffset": 1449, - "EndOffset": 1454 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 41, - "StartOffset": 1464, - "EndOffset": 1468 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 41, - "StartOffset": 1469, - "EndOffset": 1476 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1572, - "EndOffset": 1577 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1606, - "EndOffset": 1612 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1613, - "EndOffset": 1620 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1572, - "EndOffset": 1577 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1606, - "EndOffset": 1612 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1613, - "EndOffset": 1620 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 49, - "StartOffset": 1647, - "EndOffset": 1652 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 49, - "StartOffset": 1681, - "EndOffset": 1687 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 49, - "StartOffset": 1688, - "EndOffset": 1695 - } - ] - } - }, - "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": 116, - "StartOffset": 2987, - "EndOffset": 3260, - "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 pub fn clear(\u0026mut 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": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/kv.rs", - "Line": 117, - "StartOffset": 3025, - "EndOffset": 3031 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/kv.rs", - "Line": 118, - "StartOffset": 3028, - "EndOffset": 3033 - } - ] - }, - "Node.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/kv.rs", - "Line": 90, - "StartOffset": 2250, - "EndOffset": 2972, - "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 pub fn extend(\u0026mut 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": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/kv.rs", - "Line": 92, - "StartOffset": 2322, - "EndOffset": 2329 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/kv.rs", - "Line": 95, - "StartOffset": 2453, - "EndOffset": 2459 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/kv.rs", - "Line": 95, - "StartOffset": 2462, - "EndOffset": 2468 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/kv.rs", - "Line": 95, - "StartOffset": 2471, - "EndOffset": 2477 - } - ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl", - "File": "src/kv.rs", - "Line": 24, - "StartOffset": -1, - "EndOffset": 988, - "Content": "macro_rules! del_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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}" - }, - "get_all_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/kv.rs", - "Line": 55, - "StartOffset": -1, - "EndOffset": 1632, - "Content": "macro_rules! get_all_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_all_ $name s\u003e](\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.$name.as_ref()\n }\n }\n };\n}" - }, - "get_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "File": "src/kv.rs", - "Line": 39, - "StartOffset": -1, - "EndOffset": 1406, - "Content": "macro_rules! get_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) =\u003e {\n v.get(key).cloned()\n }\n None =\u003e None,\n }\n }\n }\n };\n}" - }, - "set_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "File": "src/kv.rs", - "Line": 7, - "StartOffset": -1, - "EndOffset": 604, - "Content": "macro_rules! set_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}" - }, - "test_add_stale": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "test_add_stale", - "File": "src/kv.rs", - "Line": 135, - "StartOffset": 3321, - "EndOffset": 3441, - "Content": "#[test]\n fn test_add_stale() {\n let mut node = Node::default();\n node.set_stale(\"key\", \"value\");\n println!(\"{node:?}\");\n }", - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "File": "src/kv.rs", - "Line": 138, - "StartOffset": 3369, - "EndOffset": 3378 - }, - { - "ModPath": "std", - "PkgPath": "std::macros", - "Name": "println", - "File": "src/kv.rs", - "Line": 139, - "StartOffset": 3404, - "EndOffset": 3411 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/kv.rs", - "Line": 137, - "StartOffset": 3353, - "EndOffset": 3357 - } - ] - } - }, - "Types": { - "Node": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/kv.rs", - "Line": 65, - "StartOffset": -1, - "EndOffset": 1870, - "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n transient: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n // this is called stale because upstream and downstream all use this.\n stale: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1690, - "EndOffset": 1696 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1697, - "EndOffset": 1705 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1706, - "EndOffset": 1713 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1715, - "EndOffset": 1722 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 68, - "StartOffset": 1707, - "EndOffset": 1713 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 68, - "StartOffset": 1714, - "EndOffset": 1722 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 68, - "StartOffset": 1723, - "EndOffset": 1730 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 68, - "StartOffset": 1732, - "EndOffset": 1739 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 70, - "StartOffset": 1806, - "EndOffset": 1812 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 70, - "StartOffset": 1813, - "EndOffset": 1821 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 70, - "StartOffset": 1822, - "EndOffset": 1829 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 70, - "StartOffset": 1831, - "EndOffset": 1838 - } - ], - "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": -1, - "EndOffset": 95, - "Content": "const DEFAULT_CAPACITY: usize = 10;" - }, - "mut node": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "mut node", - "File": "src/kv.rs", - "Line": 137, - "StartOffset": 3338, - "EndOffset": 3369, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node" - }, - "Content": "let mut node = Node::default();" - } - } - }, - "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": 1074, - "EndOffset": 1360, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn and_modify\u003cF: FnOnce(\u0026mut V)\u003e(self, f: F) -\u003e 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "and_modify", - "File": "src/type_map.rs", - "Line": 45, - "StartOffset": 1082, - "EndOffset": 1092 - }, - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 45, - "StartOffset": 1096, - "EndOffset": 1102 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "File": "src/type_map.rs", - "Line": 50, - "StartOffset": 1226, - "EndOffset": 1236 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 51, - "StartOffset": 1232, - "EndOffset": 1244 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 51, - "StartOffset": 1247, - "EndOffset": 1253 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 45, - "StartOffset": 1096, - "EndOffset": 1102 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 47, - "StartOffset": 1157, - "EndOffset": 1161 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 47, - "StartOffset": 1164, - "EndOffset": 1168 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 49, - "StartOffset": 1198, - "EndOffset": 1203 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 53, - "StartOffset": 1326, - "EndOffset": 1337 - } - ] - }, - "Entry.or_default": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "File": "src/type_map.rs", - "Line": 57, - "StartOffset": 1375, - "EndOffset": 1532, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -\u003e \u0026'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", - "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": 1423, - "EndOffset": 1433 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "File": "src/type_map.rs", - "Line": 63, - "StartOffset": 1552, - "EndOffset": 1559 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "File": "src/type_map.rs", - "Line": 63, - "StartOffset": 1534, - "EndOffset": 1548 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/type_map.rs", - "Line": 61, - "StartOffset": 1478, - "EndOffset": 1485 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 61, - "StartOffset": 1488, - "EndOffset": 1492 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 61, - "StartOffset": 1495, - "EndOffset": 1499 - } - ] - }, - "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": 310, - "EndOffset": 525, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -\u003e \u0026'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" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 499, - "EndOffset": 502 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 476, - "EndOffset": 490 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 23, - "StartOffset": 465, - "EndOffset": 477 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 23, - "StartOffset": 480, - "EndOffset": 486 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 20, - "StartOffset": 416, - "EndOffset": 420 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 20, - "StartOffset": 423, - "EndOffset": 427 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 494, - "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": 564, - "EndOffset": 772, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with\u003cF: FnOnce() -\u003e V\u003e(self, default: F) -\u003e \u0026'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" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 31, - "StartOffset": 744, - "EndOffset": 747 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "src/type_map.rs", - "Line": 31, - "StartOffset": 721, - "EndOffset": 735 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 32, - "StartOffset": 710, - "EndOffset": 722 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 32, - "StartOffset": 725, - "EndOffset": 731 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 27, - "StartOffset": 590, - "EndOffset": 596 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 29, - "StartOffset": 661, - "EndOffset": 665 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 29, - "StartOffset": 668, - "EndOffset": 672 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 31, - "StartOffset": 739, - "EndOffset": 742 - } - ] - }, - "Entry.or_insert_with_key": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "File": "src/type_map.rs", - "Line": 35, - "StartOffset": 811, - "EndOffset": 1035, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with_key\u003cF: FnOnce(\u0026K) -\u003e V\u003e(self, default: F) -\u003e \u0026'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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 1004, - "EndOffset": 1007 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 974, - "EndOffset": 992 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 41, - "StartOffset": 963, - "EndOffset": 975 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 41, - "StartOffset": 978, - "EndOffset": 984 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 36, - "StartOffset": 841, - "EndOffset": 847 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 38, - "StartOffset": 914, - "EndOffset": 918 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 38, - "StartOffset": 921, - "EndOffset": 925 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 999, - "EndOffset": 1002 - } - ] - }, - "TypeMap.capacity": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity", - "File": "src/type_map.rs", - "Line": 151, - "StartOffset": 3538, - "EndOffset": 3592, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 3568, - "EndOffset": 3576 - } - ] - }, - "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": 2849, - "EndOffset": 2895, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 2879, - "EndOffset": 2884 - } - ] - }, - "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": 2518, - "EndOffset": 2583, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 108, - "StartOffset": 2570, - "EndOffset": 2572 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/type_map.rs", - "Line": 108, - "StartOffset": 2548, - "EndOffset": 2560 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 108, - "StartOffset": 2562, - "EndOffset": 2568 - } - ] - }, - "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": 3168, - "EndOffset": 3356, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, T\u003e {\n Entry {\n inner: self.inner.entry(TypeId::of::\u003cT\u003e()),\n _marker: PhantomData,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 136, - "StartOffset": 3289, - "EndOffset": 3291 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/type_map.rs", - "Line": 136, - "StartOffset": 3275, - "EndOffset": 3280 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 134, - "StartOffset": 3208, - "EndOffset": 3213 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 134, - "StartOffset": 3218, - "EndOffset": 3224 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 137, - "StartOffset": 3282, - "EndOffset": 3293 - } - ] - }, - "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": 2928, - "EndOffset": 2991, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\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": 2961, - "EndOffset": 2968 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/type_map.rs", - "Line": 125, - "StartOffset": 2958, - "EndOffset": 2964 - } - ] - }, - "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": 2144, - "EndOffset": 2266, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\n self.inner\n .get(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2231, - "EndOffset": 2233 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2218, - "EndOffset": 2221 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 96, - "StartOffset": 2237, - "EndOffset": 2245 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "File": "src/type_map.rs", - "Line": 96, - "StartOffset": 2260, - "EndOffset": 2272 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 93, - "StartOffset": 2178, - "EndOffset": 2184 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2223, - "EndOffset": 2229 - } - ] - }, - "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": 2323, - "EndOffset": 2461, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut T\u003e {\n self.inner\n .get_mut(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2426, - "EndOffset": 2428 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2409, - "EndOffset": 2416 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 103, - "StartOffset": 2428, - "EndOffset": 2436 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 103, - "StartOffset": 2451, - "EndOffset": 2463 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 100, - "StartOffset": 2365, - "EndOffset": 2371 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2418, - "EndOffset": 2424 - } - ] - }, - "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": 2001, - "EndOffset": 2080, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: T) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), Box::new(t));\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 89, - "StartOffset": 2046, - "EndOffset": 2048 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 89, - "StartOffset": 2062, - "EndOffset": 2065 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "src/type_map.rs", - "Line": 89, - "StartOffset": 2031, - "EndOffset": 2037 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2019, - "EndOffset": 2023 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2026, - "EndOffset": 2030 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 89, - "StartOffset": 2038, - "EndOffset": 2044 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 89, - "StartOffset": 2057, - "EndOffset": 2060 - } - ] - }, - "TypeMap.is_empty": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty", - "File": "src/type_map.rs", - "Line": 141, - "StartOffset": 3371, - "EndOffset": 3424, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 3401, - "EndOffset": 3409 - } - ] - }, - "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": 3035, - "EndOffset": 3137, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, AnyObject\u003e {\n self.inner.iter()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/type_map.rs", - "Line": 130, - "StartOffset": 3065, - "EndOffset": 3069 - } - ], - "Types": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3088, - "EndOffset": 3092 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3097, - "EndOffset": 3103 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3105, - "EndOffset": 3114 - } - ] - }, - "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": 3459, - "EndOffset": 3508, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 3489, - "EndOffset": 3492 - } - ] - }, - "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": 2640, - "EndOffset": 2771, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.inner\n .remove(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2736, - "EndOffset": 2738 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2720, - "EndOffset": 2726 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 115, - "StartOffset": 2739, - "EndOffset": 2747 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "File": "src/type_map.rs", - "Line": 115, - "StartOffset": 2762, - "EndOffset": 2770 - }, - { - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "File": "src/type_map.rs", - "Line": 115, - "StartOffset": 2773, - "EndOffset": 2775 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/type_map.rs", - "Line": 115, - "StartOffset": 2778, - "EndOffset": 2781 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 112, - "StartOffset": 2681, - "EndOffset": 2687 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2728, - "EndOffset": 2734 - } - ] - }, - "TypeMap::new": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::new", - "File": "src/type_map.rs", - "Line": 73, - "StartOffset": 1675, - "EndOffset": 1795, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn new() -\u003e Self {\n TypeMap {\n inner: FxHashMapRand::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": "default", - "File": "src/type_map.rs", - "Line": 76, - "StartOffset": 1761, - "EndOffset": 1768 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 75, - "StartOffset": 1708, - "EndOffset": 1715 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 76, - "StartOffset": 1746, - "EndOffset": 1759 - } - ] - }, - "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": 1810, - "EndOffset": 1986, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 1907, - "EndOffset": 1931 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1951, - "EndOffset": 1958 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 82, - "StartOffset": 1829, - "EndOffset": 1836 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1892, - "EndOffset": 1905 - }, - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/type_map.rs", - "Line": 83, - "StartOffset": 1942, - "EndOffset": 1949 - } - ] - } - }, - "Types": { - "AnyObject": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": -1, - "EndOffset": 195, - "Content": "pub(crate) type AnyObject = Box\u003cdyn Any + Send + Sync\u003e;", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": 168, - "EndOffset": 171 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": 176, - "EndOffset": 179 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": 182, - "EndOffset": 186 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 9, - "StartOffset": 189, - "EndOffset": 193 - } - ] - }, - "Entry": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 11, - "StartOffset": -1, - "EndOffset": 275, - "Content": "pub struct Entry\u003c'a, K: 'a, V: 'a\u003e {\n inner: MapEntry\u003c'a, K, AnyObject\u003e,\n _marker: PhantomData\u003cV\u003e,\n}", - "SubStruct": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 12, - "StartOffset": 209, - "EndOffset": 217 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 12, - "StartOffset": 225, - "EndOffset": 234 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 13, - "StartOffset": 248, - "EndOffset": 259 - } - ], - "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": -1, - "EndOffset": 1624, - "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand\u003cTypeId, AnyObject\u003e,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 69, - "StartOffset": 1613, - "EndOffset": 1626 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 69, - "StartOffset": 1627, - "EndOffset": 1633 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 69, - "StartOffset": 1635, - "EndOffset": 1644 - } - ], - "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": { - "v": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "v", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 955, - "EndOffset": 1023, - "Type": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key" - }, - "Content": "let v = self.inner.or_insert_with_key(|key| Box::new(default(key)));" - } - } - } - }, - "Dependencies": {}, - "Files": { - ".github/CODEOWNERS": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/CODEOWNERS" - }, - ".github/ISSUE_TEMPLATE/bug_report.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/bug_report.md" - }, - ".github/ISSUE_TEMPLATE/feature_request.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/feature_request.md" - }, - ".github/PULL_REQUEST_TEMPLATE.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/PULL_REQUEST_TEMPLATE.md" - }, - ".github/assets/volo-feishu-dev-group.png": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-dev-group.png" - }, - ".github/assets/volo-feishu-user-group.png": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-user-group.png" - }, - ".github/workflows/ci.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/ci.yaml" - }, - ".github/workflows/dependency-review.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/dependency-review.yaml" - }, - ".github/workflows/security.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/security.yaml" - }, - ".gitignore": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.gitignore" - }, - "CHANGELOG.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CHANGELOG.md" - }, - "CODE_OF_CONDUCT.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CODE_OF_CONDUCT.md" - }, - "CONTRIBUTING.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CONTRIBUTING.md" - }, - "CREDITS.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CREDITS.md" - }, - "Cargo.lock": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.lock" - }, - "Cargo.toml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.toml" - }, - "LICENSE-APACHE": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-APACHE" - }, - "LICENSE-MIT": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-MIT" - }, - "README.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/README.md" - }, - "ROADMAP.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/ROADMAP.md" - }, - "SECURITY.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SECURITY.md" - }, - "SUPPORT.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SUPPORT.md" - }, - "rustfmt.toml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/rustfmt.toml" - }, - "src/backward.rs": { - "Path": "src/backward.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - } - ] - }, - "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};" - } - ] - }, - "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;" - } - ] - }, - "src/forward.rs": { - "Path": "src/forward.rs", - "Imports": [ - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use crate::AHashMap;" - } - ] - }, - "src/kv.rs": { - "Path": "src/kv.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use paste::paste;" - }, - { - "Path": "use super::*;" - } - ] - }, - "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::*;" - } - ] - }, - "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;" - } - ] - } - } - }, - "rustc-hash@2.0.0": { - "Language": "rust", - "Version": "2.0.0", - "Name": "rustc-hash", - "Dir": "", - "Packages": { - "rustc-hash::random_state": { - "IsMain": false, - "IsTest": false, - "PkgPath": "rustc-hash::random_state", - "Functions": { - "BuildHasher\u003cFxRandomState\u003e.build_hasher": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher", - "File": "random_state.rs", - "Line": 48, - "StartOffset": 1624, - "EndOffset": 1671, - "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(\u0026self) -\u003e Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - }, - "Default\u003cFxRandomState\u003e::default": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "random_state.rs", - "Line": 54, - "StartOffset": 1718, - "EndOffset": 1779, - "Content": "impl Default for FxRandomState {\n fn default() -\u003e Self {\n Self::new()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - }, - "FxRandomState::new": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState::new", - "File": "random_state.rs", - "Line": 21, - "StartOffset": 692, - "EndOffset": 1528, - "Content": "impl FxRandomState {\n /// Constructs a new `FxRandomState` that is initialized with random seed.\n /// Constructs a new `FxRandomState` that is initialized with random seed.\n pub fn new() -\u003e FxRandomState {\n use rand::Rng;\n use std::{cell::Cell, thread_local};\n\n // This mirrors what `std::collections::hash_map::RandomState` does, as of 2024-01-14.\n //\n // Basically\n // 1. Cache result of the rng in a thread local, so repeatedly\n // creating maps is cheaper\n // 2. Change the cached result on every creation, so maps created\n // on the same thread don't have the same iteration order\n thread_local!(static SEED: Cell\u003cusize\u003e = {\n Cell::new(rand::thread_rng().gen())\n });\n\n SEED.with(|seed| {\n let s = seed.get();\n seed.set(s.wrapping_add(1));\n FxRandomState { seed: s }\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - }, - "random_states_are_different": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "random_states_are_different", - "File": "random_state.rs", - "Line": 65, - "StartOffset": 1884, - "EndOffset": 2278, - "Content": "#[test]\n fn random_states_are_different() {\n let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n let b = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n\n // That's the whole point of them being random!\n //\n // N.B.: `FxRandomState` uses a thread-local set to a random value and then incremented,\n // which means that this is *guaranteed* to pass :\u003e\n assert_ne!(a.hasher().seed, b.hasher().seed);\n }" - }, - "random_states_are_different_cross_thread": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "random_states_are_different_cross_thread", - "File": "random_state.rs", - "Line": 77, - "StartOffset": 2337, - "EndOffset": 2984, - "Content": "#[test]\n fn random_states_are_different_cross_thread() {\n // This is similar to the test above, but uses two different threads, so they both get\n // completely random, unrelated values.\n //\n // This means that this test is technically flaky, but the probability of it failing is\n // `1 / 2.pow(bit_size_of::\u003cusize\u003e())`. Or 1/1.7e19 for 64 bit platforms or 1/4294967295\n // for 32 bit platforms. I suppose this is acceptable.\n let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();\n let b = thread::spawn(|| FxHashMapRand::\u003c\u0026str, u32\u003e::default())\n .join()\n .unwrap();\n\n assert_ne!(a.hasher().seed, b.hasher().seed);\n }" - } - }, - "Types": { - "FxHashMapRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "random_state.rs", - "Line": 5, - "StartOffset": -1, - "EndOffset": 124, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand\u003cK, V\u003e = HashMap\u003cK, V, FxRandomState\u003e;" - }, - "FxHashSetRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashSetRand", - "File": "random_state.rs", - "Line": 8, - "StartOffset": -1, - "EndOffset": 263, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand\u003cV\u003e = HashSet\u003cV, FxRandomState\u003e;" - }, - "FxRandomState": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState", - "File": "random_state.rs", - "Line": 11, - "StartOffset": -1, - "EndOffset": 669, - "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.\npub struct FxRandomState {\n seed: usize,\n}", - "Methods": { - "build_hasher": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher" - } - } - }, - "Hasher": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Hasher", - "File": "random_state.rs", - "Line": 46, - "StartOffset": 1547, - "EndOffset": 1570, - "Content": "type Hasher = FxHasher;" - } - }, - "Vars": { - "a": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "a", - "File": "random_state.rs", - "Line": 85, - "StartOffset": 2753, - "EndOffset": 2799, - "Content": "let a = FxHashMapRand::\u003c\u0026str, u32\u003e::default();" - }, - "b": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "b", - "File": "random_state.rs", - "Line": 86, - "StartOffset": 2816, - "EndOffset": 2957, - "Content": "let b = thread::spawn(|| FxHashMapRand::\u003c\u0026str, u32\u003e::default())\n .join()\n .unwrap();" - }, - "s": { - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "s", - "File": "random_state.rs", - "Line": 38, - "StartOffset": 1397, - "EndOffset": 1416, - "Content": "let s = seed.get();" - } - } - } - }, - "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": 89035, - "EndOffset": 89045, - "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": 13061, - "EndOffset": 13069, - "Content": "capacity" - }, - "clear": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "map.rs", - "Line": 727, - "StartOffset": 24375, - "EndOffset": 24380, - "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": 37028, - "EndOffset": 37040, - "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": 46179, - "EndOffset": 46186, - "Content": "default" - }, - "entry": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "map.rs", - "Line": 872, - "StartOffset": 29067, - "EndOffset": 29072, - "Content": "entry" - }, - "extend": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "map.rs", - "Line": 3246, - "StartOffset": 98942, - "EndOffset": 98948, - "Content": "extend" - }, - "get": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "map.rs", - "Line": 894, - "StartOffset": 29770, - "EndOffset": 29773, - "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": 37801, - "EndOffset": 37808, - "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": 38976, - "EndOffset": 38982, - "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": 20327, - "EndOffset": 20335, - "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": 18496, - "EndOffset": 18500, - "Content": "iter" - }, - "len": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "map.rs", - "Line": 587, - "StartOffset": 19912, - "EndOffset": 19915, - "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": 86535, - "EndOffset": 86549, - "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": 87569, - "EndOffset": 87587, - "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": 40814, - "EndOffset": 40820, - "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": 12364, - "EndOffset": 12388, - "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": 70485, - "EndOffset": 70490, - "Content": "Entry" - }, - "Iter": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "map.rs", - "Line": 1486, - "StartOffset": 48579, - "EndOffset": 48583, - "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": 4259, - "EndOffset": 4266, - "Content": "println" - } - }, - "Types": {}, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - ".github/CODEOWNERS": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/CODEOWNERS" - }, - ".github/ISSUE_TEMPLATE/bug_report.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/bug_report.md" - }, - ".github/ISSUE_TEMPLATE/feature_request.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/ISSUE_TEMPLATE/feature_request.md" - }, - ".github/PULL_REQUEST_TEMPLATE.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/PULL_REQUEST_TEMPLATE.md" - }, - ".github/assets/volo-feishu-dev-group.png": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-dev-group.png" - }, - ".github/assets/volo-feishu-user-group.png": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/assets/volo-feishu-user-group.png" - }, - ".github/workflows/ci.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/ci.yaml" - }, - ".github/workflows/dependency-review.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/dependency-review.yaml" - }, - ".github/workflows/security.yaml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.github/workflows/security.yaml" - }, - ".gitignore": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/.gitignore" - }, - "CHANGELOG.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CHANGELOG.md" - }, - "CODE_OF_CONDUCT.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CODE_OF_CONDUCT.md" - }, - "CONTRIBUTING.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CONTRIBUTING.md" - }, - "CREDITS.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/CREDITS.md" - }, - "Cargo.lock": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.lock" - }, - "Cargo.toml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/Cargo.toml" - }, - "LICENSE-APACHE": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-APACHE" - }, - "LICENSE-MIT": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/LICENSE-MIT" - }, - "README.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/README.md" - }, - "ROADMAP.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/ROADMAP.md" - }, - "SECURITY.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SECURITY.md" - }, - "SUPPORT.md": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/SUPPORT.md" - }, - "macros.rs": { - "Path": "macros.rs" - }, - "map.rs": { - "Path": "map.rs" - }, - "rustfmt.toml": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/rustfmt.toml" - }, - "src/backward.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/backward.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - } - ] - }, - "src/convert.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/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};" - } - ] - }, - "src/faststr_map.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/faststr_map.rs", - "Imports": [ - { - "Path": "use std::{any::TypeId, collections::hash_map::Entry};" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use rustc_hash::FxHashMapRand;" - } - ] - }, - "src/forward.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/forward.rs", - "Imports": [ - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use crate::AHashMap;" - } - ] - }, - "src/kv.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/kv.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use paste::paste;" - }, - { - "Path": "use super::*;" - } - ] - }, - "src/lib.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/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::*;" - } - ] - }, - "src/type_map.rs": { - "Path": "/Users/bytedance/golang/work/abcoder/tmp/metainfo/src/type_map.rs", - "Imports": [ - { - "Path": "use std::{any::{Any, TypeId},collections::hash_map::Entry as MapEntry,marker::PhantomData,};" - }, - { - "Path": "use rustc_hash::FxHashMapRand;" - } - ] - } - } - } - }, - "Graph": { - "?alloc::boxed#Box": { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?alloc::boxed#new": { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - } - ] - }, - "?alloc::boxed::convert#downcast": { - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?alloc::str#to_owned": { - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 3 - } - ] - }, - "?alloc::string#String": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut buf", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut res", - "Line": 0 - } - ] - }, - "?alloc::string#push": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 9 - } - ] - }, - "?alloc::string#push_str": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 3 - } - ] - }, - "?alloc::string#with_capacity": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - } - ] - }, - "?alloc::sync#Arc": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 21 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mi", - "Line": 0 - } - ] - }, - "?alloc::sync#as_ref": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 6 - } - ] - }, - "?alloc::sync#clone": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 23 - } - ] - }, - "?alloc::sync#new": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 21 - } - ] - }, - "?core::any#Any": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?core::any#TypeId": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - } - ] - }, - "?core::any#downcast_mut": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 4 - } - ] - }, - "?core::any#downcast_ref": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 4 - } - ] - }, - "?core::any#of": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - } - ] - }, - "?core::char::methods#to_ascii_lowercase": { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 5 - } - ] - }, - "?core::char::methods#to_ascii_uppercase": { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 5 - } - ] - }, - "?core::convert#AsRef": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 36 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 42 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 43 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 44 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - } - ] - }, - "?core::convert#Into": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 36 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - } - ] - }, - "?core::convert#as_ref": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "key", - "Line": 0 - } - ] - }, - "?core::default#Default": { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - } - ] - }, - "?core::default#default": { - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 6 - } - ] - }, - "?core::fmt#Formatter": { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Formatter", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 0 - } - ] - }, - "?core::fmt#Result": { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Result", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 0 - } - ] - }, - "?core::fmt#debug_struct": { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 1 - } - ] - }, - "?core::fmt::builders#finish": { - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 1 - } - ] - }, - "?core::iter::traits::iterator#map": { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 22 - } - ] - }, - "?core::macros#assert": { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 22 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 20 - } - ] - }, - "?core::macros#assert_eq": { - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_http", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_format_convert_test", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 10 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 19 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 23 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 17 - } - ] - }, - "?core::marker#PhantomData": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 2 - } - ] - }, - "?core::marker#Send": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - } - ] - }, - "?core::marker#Sync": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - } - ] - }, - "?core::ops::function#FnOnce": { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 1 - } - ] - }, - "?core::option#Option": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 42 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 43 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 44 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 32 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 34 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 38 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 39 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 1 - } - ] - }, - "?core::option#and_then": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 4 - } - ] - }, - "?core::option#as_deref": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 5 - } - ] - }, - "?core::option#as_mut": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 26 - } - ] - }, - "?core::option#as_ref": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 1 - } - ] - }, - "?core::option#clone": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 10 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "forward_node", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "backward_node", - "Line": 0 - } - ] - }, - "?core::option#get_or_insert_with": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - } - ] - }, - "?core::option#is_none": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 23 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 20 - } - ] - }, - "?core::option#is_some": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_some", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 14 - } - ] - }, - "?core::option#map": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?core::option#or_else": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - } - ] - }, - "?core::option#take": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 19 - } - ] - }, - "?core::option#unwrap": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 19 + "println": { + "Exported": false, + "IsMethod": false, + "IsInterfaceMethod": false, + "ModPath": "std", + "PkgPath": "std::macros", + "Name": "println", + "File": "macros.rs", + "Line": 137, + "StartOffset": 4320, + "EndOffset": 4327, + "Content": "println" + } + }, + "Types": {}, + "Vars": {} + } + }, + "Dependencies": {}, + "Files": { + "macros.rs": { + "Path": "macros.rs" }, + "map.rs": { + "Path": "map.rs" + } + } + } + }, + "Graph": { + "?alloc::boxed#Box": { + "ModPath": "", + "PkgPath": "alloc::boxed", + "Name": "Box", + "Type": "TYPE", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", "Line": 5 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 22 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 6 + "Name": "Entry.or_insert_with", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 + "Name": "Entry.or_insert_with_key", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 6 + "Name": "TypeMap.insert", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 7 + "Name": "AnyObject", + "Line": 0 } ] }, - "?core::option#unwrap_or": { + "?alloc::boxed#new": { "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", + "PkgPath": "alloc::boxed", + "Name": "new", "Type": "FUNC", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 7 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 7 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 7 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 12 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 } ] }, - "?core::result#ok": { + "?alloc::boxed::convert#downcast": { "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", + "PkgPath": "alloc::boxed::convert", + "Name": "downcast", "Type": "FUNC", "Dependencies": null, "References": [ @@ -20343,10 +12427,10 @@ } ] }, - "?core::str#chars": { + "?alloc::str#to_owned": { "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", + "PkgPath": "alloc::str", + "Name": "to_owned", "Type": "FUNC", "Dependencies": null, "References": [ @@ -20354,259 +12438,244 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", + "Name": "RpcConverter.remove_prefix", "Line": 3 } ] }, - "?core::str#len": { + "?alloc::string#String": { "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Type": "FUNC", + "PkgPath": "alloc::string", + "Name": "String", + "Type": "TYPE", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 1 + "Name": "RpcConverter.add_prefix", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", + "Name": "HttpConverter.to_http_format", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", + "Name": "HttpConverter.to_rpc_format", "Line": 2 - } - ] - }, - "?core::str#strip_prefix": { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Type": "FUNC", - "Dependencies": null, - "References": [ + }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 2 + "Name": "HttpConverter.to_rpc_format_string", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 2 + "Name": "HttpConverter.to_http_format_string", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "key", - "Line": 0 + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 } ] }, - "ahash@0.8.11?ahash::hash_map#AHashMap": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Type": "TYPE", + "?alloc::string#push": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "Type": "FUNC", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 9 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 9 + } + ] + }, + "?alloc::string#push_str": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 3 + } + ] + }, + "?alloc::string#with_capacity": { + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 + } + ] + }, + "?alloc::sync#Arc": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Type": "TYPE", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 + "Name": "MetaInfo.derive", + "Line": 21 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 + "Name": "MetaInfo::from_node", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 0 - }, + "Name": "MetaInfo", + "Line": 31 + } + ] + }, + "?alloc::sync#as_ref": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 2 + "Name": "MetaInfo.get_string", + "Line": 9 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 17 + "Name": "MetaInfo.contains_string", + "Line": 13 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 2 + "Name": "MetaInfo.contains_faststr", + "Line": 13 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 0 + "Name": "MetaInfo.get", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 + "Name": "MetaInfo.contains", + "Line": 13 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "mut map", - "Line": 0 + "Name": "MetaInfo.get_faststr", + "Line": 9 } ] }, - "ahash@0.8.11?ahash::hash_map#AHashMap.get": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", + "?alloc::sync#clone": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", "Type": "FUNC", "Dependencies": null, "References": [ @@ -20614,29 +12683,15 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 10 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 10 + "Name": "MetaInfo.derive", + "Line": 23 } ] }, - "ahash@0.8.11?ahash::hash_map#AHashMap.insert": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", + "?alloc::sync#new": { + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", "Type": "FUNC", "Dependencies": null, "References": [ @@ -20644,408 +12699,465 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 5 + "Name": "MetaInfo.derive", + "Line": 21 } ] }, - "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Type": "FUNC", + "?core::any#Any": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "Any", + "Type": "TYPE", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 } ] }, - "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", + "?core::any#TypeId": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Type": "TYPE", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 15 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 17 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#Extend\u003cAHashMap\u003e.extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Type": "FUNC", - "Dependencies": null, - "References": [ + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 16 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 13 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 19 - } - ] - }, - "faststr@0.2.19?faststr#FastStr": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Type": "TYPE", - "Dependencies": null, - "References": [ + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 + } + ] + }, + "?core::any#downcast_mut": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_mut", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 7 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 6 + } + ] + }, + "?core::any#downcast_ref": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "downcast_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 4 + } + ] + }, + "?core::any#of": { + "ModPath": "", + "PkgPath": "core::any", + "Name": "of", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 2 + } + ] + }, + "?core::char::methods#to_ascii_lowercase": { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 5 + } + ] + }, + "?core::char::methods#to_ascii_uppercase": { + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 5 + } + ] + }, + "?core::convert#AsRef": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Type": "TYPE", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", + "PkgPath": "metainfo::backward", + "Name": "Backward", "Line": 14 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::forward", "Name": "Forward", - "Line": 17 + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::forward", "Name": "Forward", - "Line": 18 + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::forward", "Name": "Forward", - "Line": 18 + "Line": 3 }, { "Kind": "Reference", @@ -21095,5864 +13207,5397 @@ "PkgPath": "metainfo::forward", "Name": "Forward", "Line": 44 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 0 - }, + } + ] + }, + "?core::convert#Into": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Type": "TYPE", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 0 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 0 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 0 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 1 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 2 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 14 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 4 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 7 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 8 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 3 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 20 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 2 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 25 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 2 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 31 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 0 - }, + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 36 + } + ] + }, + "?core::convert#as_ref": { + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "MetaInfo.get_string", - "Line": 2 + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 2 + "Name": "MetaInfo.contains_string", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 22 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 2 + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 0 + "Name": "MetaInfo.remove_string", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", "Line": 5 } ] }, - "faststr@0.2.19?faststr#FastStr::from_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Type": "FUNC", + "?core::default#Default": { + "ModPath": "", + "PkgPath": "core::default", + "Name": "Default", + "Type": "TYPE", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 5 - }, + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 + } + ] + }, + "?core::default#default": { + "ModPath": "", + "PkgPath": "core::default", + "Name": "default", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 6 } ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "?core::fmt#debug_struct": { + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 } - ], - "References": null + ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "?core::fmt::builders#finish": { + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", + "PkgPath": "metainfo", + "Name": "Debug\u003cMetaInfo\u003e.fmt", "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "?core::iter::traits::iterator#map": { + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 1 + "Line": 18 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 22 } - ], - "References": null + ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ + "?core::marker#PhantomData": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "PhantomData", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 1 + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 9 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 1 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry", + "Line": 2 } - ], - "References": null + ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ + "?core::marker#Send": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 + "Name": "MetaInfo.insert_faststr", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 6 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 } - ], - "References": null + ] }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ + "?core::marker#Sync": { + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 + "Name": "MetaInfo.insert_faststr", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 6 + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_default", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", + "Line": 3 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#DEFAULT_MAP_SIZE": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Type": "VAR", - "Dependencies": null, - "References": [ + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", + "Line": 3 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 + "PkgPath": "metainfo::type_map", + "Name": "AnyObject", + "Line": 0 } ] }, - "metainfo?metainfo#Debug\u003cMetaInfo\u003e.fmt": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Type": "FUNC", - "Dependencies": [ + "?core::ops::function#FnOnce": { + "ModPath": "", + "PkgPath": "core::ops::function", + "Name": "FnOnce", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Formatter", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Result", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "Type": "FUNC", - "Dependencies": [ + "?core::option#Option": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 3 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", + "Name": "MetaInfo.remove_faststr", "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", "Line": 3 - } - ], - "References": [ + }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 8 - } - ] - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ + "Name": "MetaInfo", + "Line": 31 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 3 + "Name": "MetaInfo", + "Line": 32 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 34 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 38 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 3 - } - ], - "References": [ + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 39 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 8 - } - ] - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 1 + }, { - "Kind": "Dependency", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 1 + }, + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::kv", - "Name": "get_all_impl", + "Name": "Node", "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Type": "FUNC", - "Dependencies": [ + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::kv", - "Name": "get_all_impl", + "Name": "Node", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 6 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - } - ], - "References": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 2 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 3 - } - ] - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - } - ], - "References": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 4 - } - ] - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 42 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 43 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 44 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 6 + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter", + "Name": "Converter", "Line": 6 - } - ], - "References": [ + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 3 + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 7 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 8 } ] }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "?core::option#and_then": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 + "Name": "MetaInfo.get_string", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 } - ], + ] + }, + "?core::option#as_mut": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Type": "FUNC", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "rpc_forward_test", + "Name": "MetaInfo.extend", + "Line": 26 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", "Line": 4 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Type": "VAR", - "Dependencies": null, - "References": [ + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Type": "VAR", - "Dependencies": null, - "References": [ + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 5 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 5 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", "Line": 1 } ] }, - "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Type": "VAR", + "?core::option#as_ref": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Type": "FUNC", "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", "Line": 1 - } - ] - }, - "metainfo?metainfo#Homura": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Homura", - "Type": "TYPE", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#Madoka": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Madoka", - "Type": "TYPE", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#Magi": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Magi", - "Type": "TYPE", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#Mami": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Mami", - "Type": "TYPE", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#MetaInfo": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 31 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 32 - }, - { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 32 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 33 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 33 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 34 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Line": 4 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 34 + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_string", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 38 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 38 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 39 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 39 - } - ], - "References": [ + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 8 + }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_metainfo", + "Name": "MetaInfo.contains", "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "Line": 6 + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 8 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 2 - }, + "Name": "MetaInfo.get_faststr", + "Line": 4 + } + ] + }, + "?core::option#clone": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "clone", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 3 - }, + "Name": "MetaInfo.derive", + "Line": 10 + } + ] + }, + "?core::option#get_or_insert_with": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 + "Name": "MetaInfo.extend", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 2 + "Name": "MetaInfo.insert_faststr", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 2 + "Name": "MetaInfo.insert_string", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 2 - }, + "Name": "MetaInfo.insert", + "Line": 4 + } + ] + }, + "?core::option#is_none": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "is_none", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 16 + "Name": "MetaInfo.extend", + "Line": 23 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 2 + "Name": "MetaInfo.derive", + "Line": 7 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 2 + "Name": "MetaInfo.ensure_backward_node", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 0 + "Name": "MetaInfo.ensure_forward_node", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 5 - }, + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 2 + } + ] + }, + "?core::option#map": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Type": "FUNC", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "mut other", - "Line": 0 + "Name": "MetaInfo.contains_string", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "mut m2", - "Line": 0 + "Name": "MetaInfo.contains_faststr", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "m2", - "Line": 0 + "Name": "MetaInfo.contains", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "new", - "Line": 0 + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 12 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut metainfo", - "Line": 0 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 } ] }, - "metainfo?metainfo#MetaInfo.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", + "?core::option#or_else": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "or_else", "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 - }, + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 9 - }, - { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "Line": 12 + "PkgPath": "metainfo", + "Name": "MetaInfo.get", + "Line": 3 }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 15 - } - ], - "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 12 + "Name": "MetaInfo.get_faststr", + "Line": 6 } ] }, - "metainfo?metainfo#MetaInfo.contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", + "?core::option#take": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 - } - ], + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 8 + "Name": "MetaInfo.derive", + "Line": 19 } ] }, - "metainfo?metainfo#MetaInfo.contains_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", + "?core::option#unwrap": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 7 + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 26 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.contains_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.and_modify", "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "Entry.or_insert_with_key", + "Line": 6 } - ], - "References": null + ] }, - "metainfo?metainfo#MetaInfo.derive": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", + "?core::option#unwrap_or": { + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Line": 21 - }, + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 23 + "Name": "MetaInfo.contains_string", + "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "Line": 10 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains", + "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "Line": 19 - }, + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 12 + } + ] + }, + "?core::result#ok": { + "ModPath": "", + "PkgPath": "core::result", + "Name": "ok", + "Type": "FUNC", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "Line": 23 - }, + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 + } + ] + }, + "?core::str#chars": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "Type": "FUNC", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 0 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 21 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format", + "Line": 3 } - ], - "References": null + ] }, - "metainfo?metainfo#MetaInfo.ensure_backward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", + "?core::str#len": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 1 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", "Line": 2 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_rpc_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 3 } - ], - "References": null + ] }, - "metainfo?metainfo#MetaInfo.ensure_forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", + "?core::str#strip_prefix": { + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 1 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", "Line": 2 } - ], - "References": null + ] }, - "metainfo?metainfo#MetaInfo.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Type": "FUNC", - "Dependencies": [ + "ahash@0.8.11?ahash::hash_map#AHashMap": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 6 + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 12 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 18 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 6 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Line": 7 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Line": 13 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 19 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 23 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 26 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 26 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 26 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 3 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 12 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 18 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 }, { - "Kind": "Dependency", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#AHashMap.get": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 6 + "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", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 15 + "Name": "MetaInfo.insert_string", + "Line": 5 } ] }, - "metainfo?metainfo#MetaInfo.get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", + "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 3 + "Kind": "Reference", + "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", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 12 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 3 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", + "Line": 4 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 15 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Line": 3 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 17 + } + ] + }, + "ahash@0.8.11?ahash::hash_map#Extend\u003cAHashMap\u003e.extend": { + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Type": "FUNC", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Line": 13 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 6 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 16 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 19 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 5 } - ], + ] + }, + "faststr@0.2.19?faststr#FastStr": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Type": "TYPE", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 10 + "Name": "MetaInfo.insert_faststr", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 19 + "Name": "MetaInfo.get_string", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 5 + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 22 + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 0 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 14 + "Name": "MetaInfo.remove_faststr", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 17 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_all_backword_transients_with_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Type": "FUNC", - "Dependencies": [ + "Name": "MetaInfo.insert_string", + "Line": 2 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 10 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 15 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 8 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 11 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Line": 16 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 17 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Line": 18 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 33 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - } - ], - "References": [ + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 1 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "new_cap", - "Line": 0 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 1 + }, { - "Kind": "Dependency", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + }, + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 10 + "Name": "Node", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "Line": 17 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 8 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 12 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 12 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 12 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Line": 19 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 21 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Line": 22 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 29 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", + "PkgPath": "metainfo::backward", + "Name": "Backward", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 17 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 22 - } - ], - "References": [ + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 8 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "transients", - "Line": 0 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 9 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "persistents", - "Line": 0 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 + }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 11 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 5 + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 12 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Line": 6 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 14 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 9 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 20 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 26 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Line": 27 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.get_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 1 + }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 2 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Type": "FUNC", - "Dependencies": [ + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 5 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 11 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 14 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 16 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 7 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 17 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 18 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_composition", + "PkgPath": "metainfo::forward", + "Name": "Forward", "Line": 18 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 20 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 7 - } - ] - }, - "metainfo?metainfo#MetaInfo.insert_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Type": "FUNC", - "Dependencies": [ + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 25 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 4 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 31 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 36 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 5 + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 42 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 43 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::forward", + "Name": "Forward", + "Line": 44 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 0 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 4 + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", + "Line": 5 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": null - }, - "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 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "Line": 5 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 0 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 4 + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 1 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 4 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", + "PkgPath": "metainfo::convert", + "Name": "Converter", "Line": 4 }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - } - ], - "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Line": 12 + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", + "PkgPath": "metainfo::convert", + "Name": "Converter", "Line": 7 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 19 + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 8 } ] }, - "metainfo?metainfo#MetaInfo.remove_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", + "faststr@0.2.19?faststr#FastStr::from_string": { + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.add_prefix", "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 6 - }, - { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 6 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 5 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter.remove_prefix", "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 5 } - ], - "References": null + ] }, - "metainfo?metainfo#MetaInfo.remove_string": { + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "and_then", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", "Name": "as_ref", - "Line": 6 - }, + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 3 + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 + "Name": "as_ref", + "Line": 1 } ], "References": null }, - "metainfo?metainfo#MetaInfo::from": { + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::from", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 6 + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 6 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 1 } ], - "References": [ + "References": null + }, + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 12 + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 1 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 25 + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 1 } - ] + ], + "References": null }, - "metainfo?metainfo#MetaInfo::from_node": { + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", "Type": "FUNC", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Line": 7 + }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 2 + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - } - ], - "References": [ + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, { - "Kind": "Reference", + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 23 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 } - ] + ], + "References": null }, - "metainfo?metainfo#MetaInfo::new": { + "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::new", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 + "Name": "set_impl", + "Line": 7 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", + "PkgPath": "core::convert", + "Name": "as_ref", "Line": 5 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Line": 2 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_clear", - "Line": 2 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_remove", - "Line": 2 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 + } + ], + "References": null + }, + "metainfo?metainfo#DEFAULT_MAP_SIZE": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Type": "VAR", + "Dependencies": null, + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 2 + "Name": "MetaInfo.extend", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_composition", - "Line": 16 + "Name": "MetaInfo.insert_faststr", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_integers", - "Line": 2 + "Name": "MetaInfo.insert_string", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_extend", - "Line": 5 + "Name": "MetaInfo.insert", + "Line": 4 } ] }, - "metainfo?metainfo#MyType": { + "metainfo?metainfo#Debug\u003cMetaInfo\u003e.fmt": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MyType", - "Type": "TYPE", - "Dependencies": null, + "Name": "Debug\u003cMetaInfo\u003e.fmt", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt", + "Name": "debug_struct", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::fmt::builders", + "Name": "finish", + "Line": 1 + } + ], "References": null }, - "metainfo?metainfo#RPC_PREFIX_BACKWARD": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Type": "VAR", - "Dependencies": null, - "References": [ + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 1 + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", "Line": 1 } - ] + ], + "References": null }, - "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Type": "VAR", - "Dependencies": null, - "References": [ + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 3 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 1 + "Name": "HttpConverter", + "Line": 3 } - ] + ], + "References": null }, - "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Type": "VAR", - "Dependencies": null, - "References": [ + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 3 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 1 + "Name": "RpcConverter", + "Line": 3 } - ] + ], + "References": null }, - "metainfo?metainfo#backward_node": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_transients": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "backward_node", - "Type": "VAR", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "Type": "FUNC", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "clone", - "Line": 0 + "Name": "as_ref", + "Line": 1 } ], "References": null }, - "metainfo?metainfo#del_impl": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_upstreams": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "del_impl", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", "Type": "FUNC", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "forward_node", - "Type": "VAR", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 2 + }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "clone", - "Line": 0 + "Name": "as_ref", + "Line": 1 } ], "References": null }, - "metainfo?metainfo#get_impl": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "get_impl", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", "Type": "FUNC", - "Dependencies": null, - "References": [ + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "rpc_forward_test", + "Name": "set_impl", + "Line": 7 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", "Line": 5 }, { - "Kind": "Reference", + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 + }, + { + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 5 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 } - ] + ], + "References": null }, - "metainfo?metainfo#http_forward_test": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "http_forward_test", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 + "Name": "set_impl", + "Line": 7 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "PkgPath": "core::convert", + "Name": "as_ref", "Line": 5 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "Line": 5 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 3 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 0 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 4 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 0 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 5 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter", + "Line": 6 + } + ], + "References": null + }, + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 8 + "Name": "set_impl", + "Line": 7 }, { "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Line": 10 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 - } - ], - "References": [ + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 6 + }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "map", + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", "Line": 0 - } - ] - }, - "metainfo?metainfo#key": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "key", - "Type": "VAR", - "Dependencies": [ + }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::convert", - "Name": "as_ref", + "Name": "Into", "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#m2": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "m2", - "Type": "VAR", - "Dependencies": [ + }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", "Line": 0 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 } ], "References": null }, - "metainfo?metainfo#map": { + "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "map", - "Type": "VAR", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "http_forward_test", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#mi": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mi", - "Type": "VAR", - "Dependencies": [ + "Name": "set_impl", + "Line": 7 + }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#mut m2": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut m2", - "Type": "VAR", - "Dependencies": [ + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 5 + }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#mut map": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut map", - "Type": "VAR", - "Dependencies": [ + }, { "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#mut metainfo": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut metainfo", - "Type": "VAR", - "Dependencies": [ + }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo#mut other": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "mut other", - "Type": "VAR", - "Dependencies": [ + }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 0 + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Line": 6 } ], "References": null }, - "metainfo?metainfo#new": { + "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "new", + "Name": "HTTP_PREFIX_BACKWARD", "Type": "VAR", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 0 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo#new_cap": { + "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "new_cap", + "Name": "HTTP_PREFIX_PERSISTENT", "Type": "VAR", - "Dependencies": [ + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 1 + }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 0 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo#persistents": { + "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "persistents", + "Name": "HTTP_PREFIX_TRANSIENT", "Type": "VAR", - "Dependencies": [ + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 0 + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo#rpc_forward_test": { + "metainfo?metainfo#MetaInfo": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "rpc_forward_test", - "Type": "FUNC", + "Name": "MetaInfo", + "Type": "TYPE", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 31 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 5 + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 31 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "Line": 5 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 32 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 3 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 32 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 33 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 34 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 4 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 34 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "unwrap", - "Line": 5 + "Name": "Option", + "Line": 38 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 8 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 38 }, { "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Line": 10 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 39 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 39 } ], - "References": null - }, - "metainfo?metainfo#set_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Type": "FUNC", - "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 7 + "Name": "MetaInfo.extend", + "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 7 + "Name": "MetaInfo.derive", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 7 + "Name": "MetaInfo::from_node", + "Line": 2 + } + ] + }, + "metainfo?metainfo#MetaInfo.clear": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 7 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", + "Line": 6 }, { - "Kind": "Reference", + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "clear", + "Line": 9 + }, + { + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 7 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Line": 12 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 7 + "PkgPath": "metainfo::kv", + "Name": "Node.clear", + "Line": 15 } - ] + ], + "References": null }, - "metainfo?metainfo#test_clear": { + "metainfo?metainfo#MetaInfo.contains": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_clear", + "Name": "MetaInfo.contains", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 - }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 8 + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 19 + "PkgPath": "core::option", + "Name": "map", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 8 + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 7 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 12 + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.contains_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.contains_faststr", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 19 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.contains", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "unwrap", - "Line": 19 + "Name": "unwrap_or", + "Line": 7 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 } ], "References": null }, - "metainfo?metainfo#test_composition": { + "metainfo?metainfo#MetaInfo.contains_string": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_composition", + "Name": "MetaInfo.contains_string", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 16 + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 22 + "PkgPath": "core::option", + "Name": "map", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 23 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "contains_key", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 18 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 22 + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap_or", + "Line": 7 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 22 + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 13 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 16 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 } ], "References": null }, - "metainfo?metainfo#test_extend": { + "metainfo?metainfo#MetaInfo.derive": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_extend", + "Name": "MetaInfo.derive", "Type": "FUNC", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "new", + "Line": 21 + }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 5 + "Name": "MetaInfo::from_node", + "Line": 23 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 17 + "PkgPath": "core::option", + "Name": "is_none", + "Line": 7 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 20 + "PkgPath": "core::option", + "Name": "clone", + "Line": 10 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 7 + "ModPath": "", + "PkgPath": "core::option", + "Name": "take", + "Line": 19 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 15 + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "clone", + "Line": 23 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 17 + "Name": "MetaInfo", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 19 - }, + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 21 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.ensure_backward_node": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "is_none", - "Line": 20 + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 5 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 } ], "References": null }, - "metainfo?metainfo#test_integers": { + "metainfo?metainfo#MetaInfo.ensure_forward_node": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_integers", + "Name": "MetaInfo.ensure_forward_node", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 - }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 14 + "PkgPath": "core::option", + "Name": "is_none", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "Line": 25 - }, + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 2 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.extend": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.extend", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Line": 25 + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 12 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 14 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", + "Line": 18 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "is_some", - "Line": 14 + "Name": "get_or_insert_with", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", + "Line": 7 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 25 - } - ], - "References": null - }, - "metainfo?metainfo#test_metainfo": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "test_metainfo", - "Type": "FUNC", - "Dependencies": [ + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Line": 13 + }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 5 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", + "Line": 19 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 10 + "PkgPath": "core::option", + "Name": "is_none", + "Line": 23 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 13 + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 26 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "unwrap", + "Line": 26 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 7 + "PkgPath": "metainfo::kv", + "Name": "Node.extend", + "Line": 26 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 10 + "Name": "MetaInfo", + "Line": 3 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", "Line": 12 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 13 + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 18 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 5 + "Name": "DEFAULT_MAP_SIZE", + "Line": 6 } ], "References": null }, - "metainfo?metainfo#test_remove": { + "metainfo?metainfo#MetaInfo.get": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "test_remove", + "Name": "MetaInfo.get", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::new", - "Line": 2 - }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from", - "Line": 12 + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "PkgPath": "core::option", + "Name": "and_then", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "is_some", - "Line": 5 + "Name": "or_else", + "Line": 3 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 7 + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "is_none", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", + "Name": "Option", "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 12 } ], "References": null }, - "metainfo?metainfo#transients": { + "metainfo?metainfo#MetaInfo.get_all_backword_transients_with_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "transients", - "Type": "VAR", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo::backward#Backward": { - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Type": "TYPE", - "Dependencies": [ + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 10 + }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 15 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "Option", - "Line": 2 + "Name": "as_ref", + "Line": 8 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 11 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 3 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "Extend\u003cAHashMap\u003e.extend", + "Line": 16 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 17 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "Line": 18 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 18 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 5 + "Line": 4 }, { "Kind": "Dependency", "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", "Name": "AHashMap", - "Line": 5 + "Line": 4 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 5 + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + } + ], + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Line": 1 }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "Line": 1 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 6 + "ModPath": "metainfo", + "PkgPath": "metainfo::kv", + "Name": "get_all_impl", + "Line": 10 }, { "Kind": "Dependency", "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 6 + "Name": "AHashMap::with_capacity", + "Line": 17 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 8 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 + "ModPath": "", + "PkgPath": "core::option", + "Name": "map", + "Line": 12 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "len", + "Line": 12 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "Option", - "Line": 8 + "Name": "unwrap_or", + "Line": 12 }, { "Kind": "Dependency", "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 8 + "Name": "Extend\u003cAHashMap\u003e.extend", + "Line": 19 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 8 + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "iter", + "Line": 21 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 8 + "ModPath": "", + "PkgPath": "core::iter::traits::iterator", + "Name": "map", + "Line": 22 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Line": 29 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 9 + "Line": 4 }, { "Kind": "Dependency", "ModPath": "ahash@0.8.11", "PkgPath": "ahash::hash_map", "Name": "AHashMap", - "Line": 9 + "Line": 4 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 9 + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 9 - }, + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter", + "Line": 6 + } + ], + "References": [ { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 11 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", + "Line": 3 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 - }, + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", + "Line": 3 + } + ] + }, + "metainfo?metainfo#MetaInfo.get_faststr": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_faststr", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 4 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 12 + "PkgPath": "core::option", + "Name": "and_then", + "Line": 5 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 12 + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 12 + "PkgPath": "core::option", + "Name": "or_else", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 14 + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 9 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 14 + "PkgPath": "core::option", + "Name": "Option", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 14 + "Line": 2 }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 5 + } + ], + "References": null + }, + "metainfo?metainfo#MetaInfo.get_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.get_string", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 20 + "PkgPath": "core::option", + "Name": "as_ref", + "Line": 4 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 20 + "PkgPath": "core::option", + "Name": "and_then", + "Line": 5 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 20 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.get", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 26 + "Name": "as_ref", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "Option", - "Line": 26 + "Name": "or_else", + "Line": 6 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 26 + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "as_ref", + "Line": 9 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::convert", "Name": "AsRef", - "Line": 27 + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 27 + "Line": 2 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 27 + "Line": 2 } ], "References": null }, - "metainfo?metainfo::convert#Converter": { + "metainfo?metainfo#MetaInfo.insert": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Type": "TYPE", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert", + "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 6 + "PkgPath": "core::marker", + "Name": "Send", + "Line": 2 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 4 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 + } + ], + "References": null + }, + "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": "", "PkgPath": "core::option", - "Name": "Option", - "Line": 7 + "Name": "get_or_insert_with", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 7 + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::marker", + "Name": "Send", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 8 + "PkgPath": "core::marker", + "Name": "Sync", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 8 - } - ], - "References": [ + "Line": 2 + }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 6 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap", + "Line": 4 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 6 + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 } - ] + ], + "References": null }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_backward_prefix": { + "metainfo?metainfo#MetaInfo.insert_string": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "PkgPath": "metainfo", + "Name": "MetaInfo.insert_string", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap::with_capacity", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "Line": 11 + "ModPath": "", + "PkgPath": "core::option", + "Name": "get_or_insert_with", + "Line": 4 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 17 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.insert", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 0 + "Line": 2 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "Line": 3 + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 4 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 5 + "PkgPath": "metainfo", + "Name": "DEFAULT_MAP_SIZE", + "Line": 4 } - ] + ], + "References": null }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_transient_prefix": { + "metainfo?metainfo#MetaInfo.remove": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 4 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "Line": 7 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 4 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 11 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 3 } - ] + ], + "References": null }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_backward_prefix": { + "metainfo?metainfo#MetaInfo.remove_faststr": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_faststr", "Type": "FUNC", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 6 + }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 6 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 0 + "Line": 3 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 1 + "Line": 3 } ], - "References": [ + "References": null + }, + "metainfo?metainfo#MetaInfo.remove_string": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove_string", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 16 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "as_mut", + "Line": 5 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 17 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "and_then", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap.remove", "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ + }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "as_ref", + "Line": 6 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 0 + "Line": 3 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 1 + "Line": 3 } ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 6 - } - ] + "References": null }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_transient_prefix": { + "metainfo?metainfo#MetaInfo::from_node": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "PkgPath": "metainfo", + "Name": "MetaInfo::from_node", "Type": "FUNC", "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::sync", + "Name": "Arc", + "Line": 2 + }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 + "PkgPath": "metainfo", + "Name": "MetaInfo", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Line": 3 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 1 + "PkgPath": "metainfo::kv", + "Name": "Node", + "Line": 3 } ], "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 10 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 11 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 6 + "Name": "MetaInfo.derive", + "Line": 23 } ] }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_backward_prefix": { + "metainfo?metainfo#RPC_PREFIX_BACKWARD": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 1 - } - ], + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Type": "VAR", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "Line": 11 + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 17 + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Line": 1 } ] }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_persistent_prefix": { + "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 1 - } - ], + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Type": "VAR", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "Line": 3 + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 5 + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 1 } ] }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_transient_prefix": { + "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 1 - } - ], + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Type": "VAR", + "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "Line": 7 + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 11 + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", + "Line": 1 } ] }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + "metainfo?metainfo#del_impl": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "PkgPath": "metainfo", + "Name": "del_impl", "Type": "FUNC", - "Dependencies": [ + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#get_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "get_impl", + "Type": "FUNC", + "Dependencies": null, + "References": null + }, + "metainfo?metainfo#set_impl": { + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "set_impl", + "Type": "FUNC", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 0 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 7 }, { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 7 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": [ + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 7 + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 17 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 7 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 16 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 7 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 7 } ] }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { + "metainfo?metainfo::backward#Backward": { "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Type": "FUNC", + "PkgPath": "metainfo::backward", + "Name": "Backward", + "Type": "TYPE", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 0 + "Line": 2 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 4 + "Line": 2 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Type": "FUNC", - "Dependencies": [ { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 0 + "Line": 3 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 0 + "Line": 3 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 10 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 5 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "Line": 2 + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 5 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check", - "Line": 1 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_http", - "Line": 2 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", - "Line": 3 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 4 + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "Line": 3 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", - "Line": 3 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Line": 4 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 8 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_format_convert_test", - "Line": 3 + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 8 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "Line": 1 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 6 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 6 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 9 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 + "Kind": "Dependency", + "ModPath": "ahash@0.8.11", + "PkgPath": "ahash::hash_map", + "Name": "AHashMap", + "Line": 9 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 2 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 9 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 + "Name": "FastStr", + "Line": 9 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 2 + "PkgPath": "core::convert", + "Name": "Into", + "Line": 11 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Line": 3 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 11 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 4 + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 11 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 1 + "Line": 11 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Line": 1 + "PkgPath": "core::convert", + "Name": "Into", + "Line": 12 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 1 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 12 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 1 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 3 + "PkgPath": "core::convert", + "Name": "Into", + "Line": 12 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 + "Name": "FastStr", + "Line": 12 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Line": 2 + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 14 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 3 + "PkgPath": "core::convert", + "Name": "Into", + "Line": 14 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 4 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 14 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 20 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::convert", + "Name": "Into", + "Line": 20 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 1 + "Line": 20 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 1 + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 26 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Type": "FUNC", - "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "Line": 3 + "PkgPath": "core::option", + "Name": "Option", + "Line": 26 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "Line": 5 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 26 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Line": 9 + "PkgPath": "core::convert", + "Name": "AsRef", + "Line": 27 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 2 + "PkgPath": "core::option", + "Name": "Option", + "Line": 27 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 4 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 27 } - ] + ], + "References": null }, - "metainfo?metainfo::convert#HttpConverter.to_http_format_string": { + "metainfo?metainfo::convert#Converter": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Type": "FUNC", + "Name": "Converter", + "Type": "TYPE", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", "Line": 1 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 1 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 2 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 2 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 4 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 0 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_http", - "Line": 3 + "PkgPath": "core::option", + "Name": "Option", + "Line": 6 }, { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 4 + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 6 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "Line": 3 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Type": "FUNC", - "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "Line": 3 + "PkgPath": "core::option", + "Name": "Option", + "Line": 7 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "Line": 5 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 7 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Line": 9 + "PkgPath": "core::option", + "Name": "Option", + "Line": 8 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 8 } ], "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 4 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "ch", - "Line": 0 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 6 } ] }, - "metainfo?metainfo::convert#HttpConverter.to_rpc_format_string": { + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_backward_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.add_prefix_and_to_http_format", "Line": 1 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_BACKWARD", "Line": 1 - }, + } + ], + "References": null + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 2 + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", "Line": 0 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check_http", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 4 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_format_convert_test", - "Line": 3 + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", + "Line": 1 } - ] + ], + "References": null }, - "metainfo?metainfo::convert#RpcConverter": { + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_transient_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", - "Line": 4 - }, + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 + "Name": "HttpConverter.add_prefix_and_to_http_format", + "Line": 1 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Name": "HTTP_PREFIX_TRANSIENT", "Line": 1 - }, + } + ], + "References": null + }, + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 6 - }, + "Name": "HTTP_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", "Line": 6 } ] }, - "metainfo?metainfo::convert#RpcConverter.add_prefix": { + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Line": 3 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 + "PkgPath": "core::option", + "Name": "Option", + "Line": 0 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 1 + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 0 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_PERSISTENT", "Line": 1 - }, + } + ], + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 6 } ] }, - "metainfo?metainfo::convert#RpcConverter.remove_prefix": { + "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_transient_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "Line": 3 + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", "Name": "Option", - "Line": 1 + "Line": 0 }, { "Kind": "Dependency", "ModPath": "faststr@0.2.19", "PkgPath": "faststr", "Name": "FastStr", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 1 + "Line": 0 }, { - "Kind": "Reference", + "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "PkgPath": "metainfo", + "Name": "HTTP_PREFIX_TRANSIENT", "Line": 1 - }, + } + ], + "References": [ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 1 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 6 } ] }, - "metainfo?metainfo::convert#add_http_prefix": { + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_backward_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_http_prefix", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 2 - }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 3 + "Name": "RpcConverter.add_prefix", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Line": 7 - }, + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_persistent_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 11 + "Name": "RpcConverter.add_prefix", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 1 } ], "References": null }, - "metainfo?metainfo::convert#add_rpc_prefix": { + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_transient_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "add_rpc_prefix", + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 2 - }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 3 + "Name": "RpcConverter.add_prefix", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 7 - }, + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", + "Line": 1 + } + ], + "References": null + }, + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_backward_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", + "Type": "FUNC", + "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Line": 11 + "Name": "RpcConverter.remove_prefix", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 3 + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_BACKWARD", + "Line": 1 } ], - "References": null - }, - "metainfo?metainfo::convert#add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Type": "UNKNOWN", - "Dependencies": null, "References": [ { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 29 + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 } ] }, - "metainfo?metainfo::convert#ch": { + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "ch", - "Type": "VAR", + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 0 + "Name": "RpcConverter.remove_prefix", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_PERSISTENT", + "Line": 1 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 6 + } + ] }, - "metainfo?metainfo::convert#check": { + "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_transient_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "check", + "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "Name": "RpcConverter.remove_prefix", "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", + "PkgPath": "metainfo", + "Name": "RPC_PREFIX_TRANSIENT", "Line": 1 - }, + } + ], + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 1 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 6 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#check_http": { + "metainfo?metainfo::convert#HttpConverter": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "check_http", - "Type": "FUNC", - "Dependencies": [ + "Name": "HttpConverter", + "Type": "TYPE", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 0 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", + "Line": 6 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 1 + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", + "Line": 6 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 3 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", "Line": 3 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 2 + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", + "Line": 6 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#check_rpc": { + "metainfo?metainfo::convert#HttpConverter.add_prefix_and_to_http_format": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "check_rpc", + "Name": "HttpConverter.add_prefix_and_to_http_format", "Type": "FUNC", "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Line": 0 - }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", + "PkgPath": "alloc::string", + "Name": "with_capacity", "Line": 2 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 2 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo::convert#format_bidirect_convert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "format_bidirect_convert", - "Type": "FUNC", - "Dependencies": [ + }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "PkgPath": "alloc::string", + "Name": "push_str", "Line": 3 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", + "Name": "HttpConverter.to_http_format", "Line": 4 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 4 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 4 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 } ], "References": [ @@ -26960,173 +18605,191 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "check_rpc", - "Line": 0 + "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "check_http", - "Line": 0 + "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", + "Line": 1 } ] }, - "metainfo?metainfo::convert#http_format_convert_test": { + "metainfo?metainfo::convert#HttpConverter.remove_prefix_and_to_rpc_format": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "http_format_convert_test", + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "PkgPath": "alloc::string", + "Name": "with_capacity", "Line": 3 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 3 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "check", - "Line": 0 - } - ] - }, - "metainfo?metainfo::convert#http_prefix_bidirect": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "http_prefix_bidirect", - "Type": "FUNC", - "Dependencies": [ + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Line": 2 + }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "PkgPath": "core::str", + "Name": "len", "Line": 3 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 5 + "Name": "HttpConverter.to_rpc_format", + "Line": 4 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 5 + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 }, { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "Line": 6 + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 }, { "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 3 + } + ], + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 11 + "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Line": 11 + "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 17 + "Line": 1 + } + ] + }, + "metainfo?metainfo::convert#HttpConverter.to_http_format": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Type": "FUNC", + "Dependencies": [ + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "chars", + "Line": 3 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 17 + "ModPath": "", + "PkgPath": "core::char::methods", + "Name": "to_ascii_lowercase", + "Line": 5 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 27 + "PkgPath": "alloc::string", + "Name": "push", + "Line": 9 }, { "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter", + "Name": "HttpConverter.add_prefix_and_to_http_format", "Line": 4 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format_string", + "Line": 2 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#key": { + "metainfo?metainfo::convert#HttpConverter.to_http_format_string": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "key", - "Type": "VAR", + "Name": "HttpConverter.to_http_format_string", + "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo::convert#mut buf": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut buf", - "Type": "VAR", - "Dependencies": [ + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 1 + }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo::convert#mut res": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "mut res", - "Type": "VAR", - "Dependencies": [ + "PkgPath": "core::str", + "Name": "len", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "HttpConverter.to_http_format", + "Line": 2 + }, { "Kind": "Dependency", "ModPath": "", @@ -27137,216 +18800,300 @@ ], "References": null }, - "metainfo?metainfo::convert#remove_http_prefix": { + "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "remove_http_prefix", + "Name": "HttpConverter.to_rpc_format", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 4 + "PkgPath": "core::str", + "Name": "chars", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", + "PkgPath": "core::char::methods", + "Name": "to_ascii_uppercase", "Line": 5 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 10 + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push", + "Line": 9 }, { "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + } + ], + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 16 + "Name": "HttpConverter.to_rpc_format_string", + "Line": 2 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 + "Name": "HttpConverter.remove_prefix_and_to_rpc_format", + "Line": 4 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#remove_rpc_prefix": { + "metainfo?metainfo::convert#HttpConverter.to_rpc_format_string": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "remove_rpc_prefix", + "Name": "HttpConverter.to_rpc_format_string", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "Line": 2 + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 1 }, { "Kind": "Dependency", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 4 + "Name": "HttpConverter.to_rpc_format", + "Line": 2 }, { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "Line": 5 + "PkgPath": "alloc::string", + "Name": "String", + "Line": 0 + } + ], + "References": null + }, + "metainfo?metainfo::convert#RpcConverter": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "RpcConverter", + "Type": "TYPE", + "Dependencies": null, + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 10 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", + "Line": 6 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 16 + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", + "Line": 6 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", + "PkgPath": "metainfo", + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", "Line": 3 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", + "Line": 6 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#rpc_format_convert_test": { + "metainfo?metainfo::convert#RpcConverter.add_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "rpc_format_convert_test", + "Name": "RpcConverter.add_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "PkgPath": "alloc::string", + "Name": "with_capacity", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", + "Line": 5 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::str", + "Name": "len", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "push_str", "Line": 3 }, { "Kind": "Dependency", + "ModPath": "", + "PkgPath": "alloc::string", + "Name": "String", + "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 5 + } + ], + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 3 + "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 + "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", + "Line": 1 + }, + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", + "Line": 1 } - ], - "References": null + ] }, - "metainfo?metainfo::convert#rpc_prefix_bidirect": { + "metainfo?metainfo::convert#RpcConverter.remove_prefix": { "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "rpc_prefix_bidirect", + "Name": "RpcConverter.remove_prefix", "Type": "FUNC", "Dependencies": [ { "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr::from_string", "Line": 3 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 5 + "ModPath": "", + "PkgPath": "core::str", + "Name": "strip_prefix", + "Line": 2 }, { "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 5 + "ModPath": "", + "PkgPath": "alloc::str", + "Name": "to_owned", + "Line": 3 }, { "Kind": "Dependency", "ModPath": "", "PkgPath": "core::option", - "Name": "as_deref", - "Line": 6 + "Name": "Option", + "Line": 1 }, { "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + } + ], + "References": [ + { + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 11 + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 11 + "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", + "Line": 1 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::convert", "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 17 - }, + "Line": 1 + } + ] + }, + "metainfo?metainfo::convert#add_transient_prefix": { + "ModPath": "metainfo", + "PkgPath": "metainfo::convert", + "Name": "add_transient_prefix", + "Type": "UNKNOWN", + "Dependencies": null, + "References": [ { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 27 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 18 }, { - "Kind": "Dependency", + "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 4 + "PkgPath": "metainfo", + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 29 } - ], - "References": null + ] }, "metainfo?metainfo::faststr_map#FastStrMap": { "ModPath": "metainfo", @@ -27381,22 +19128,22 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 + "Name": "MetaInfo.extend", + "Line": 18 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 18 + "Name": "MetaInfo.insert_faststr", + "Line": 4 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 + "Name": "MetaInfo.get_faststr", + "Line": 5 }, { "Kind": "Reference", @@ -27573,6 +19320,20 @@ "Name": "get", "Line": 2 }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, { "Kind": "Dependency", "ModPath": "", @@ -27708,6 +19469,27 @@ "PkgPath": "std::collections::hash::map", "Name": "iter", "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "std", + "PkgPath": "std::collections::hash::map", + "Name": "Iter", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 } ], "References": null @@ -27748,6 +19530,20 @@ "Name": "remove", "Line": 2 }, + { + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 + }, + { + "Kind": "Dependency", + "ModPath": "faststr@0.2.19", + "PkgPath": "faststr", + "Name": "FastStr", + "Line": 1 + }, { "Kind": "Dependency", "ModPath": "", @@ -27766,29 +19562,6 @@ } ] }, - "metainfo?metainfo::faststr_map#FastStrMap::new": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::new", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 3 - } - ], - "References": null - }, "metainfo?metainfo::faststr_map#FastStrMap::with_capacity": { "ModPath": "metainfo", "PkgPath": "metainfo::faststr_map", @@ -28387,22 +20160,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "test_add_stale", + "PkgPath": "metainfo", + "Name": "MetaInfo.ensure_backward_node", "Line": 2 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "mut node", - "Line": 0 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", + "Name": "MetaInfo.ensure_forward_node", "Line": 2 }, { @@ -28412,13 +20178,6 @@ "Name": "MetaInfo::from_node", "Line": 3 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Line": 2 - }, { "Kind": "Reference", "ModPath": "metainfo", @@ -28530,50 +20289,50 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 10 + "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", + "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", + "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 10 + "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "Line": 2 + "Name": "MetaInfo.get_all_backword_transients_with_prefix", + "Line": 10 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 2 + "Name": "MetaInfo.get_all_persistents_and_transients", + "Line": 10 } ] }, @@ -28585,66 +20344,12 @@ "Dependencies": null, "References": null }, - "metainfo?metainfo::kv#mut node": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "mut node", - "Type": "VAR", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 0 - } - ], - "References": null - }, "metainfo?metainfo::kv#set_impl": { "ModPath": "metainfo", "PkgPath": "metainfo::kv", "Name": "set_impl", "Type": "FUNC", "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "test_add_stale", - "Line": 3 - } - ] - }, - "metainfo?metainfo::kv#test_add_stale": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "test_add_stale", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::macros", - "Name": "println", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - } - ], "References": null }, "metainfo?metainfo::type_map#AnyObject": { @@ -28739,15 +20444,15 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 1 + "Name": "Entry.and_modify", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 5 + "Name": "TypeMap.entry", + "Line": 1 } ] }, @@ -29089,15 +20794,15 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "Name": "MetaInfo.extend", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 + "Name": "MetaInfo.insert", + "Line": 4 }, { "Kind": "Reference", @@ -29110,14 +20815,14 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 2 + "Name": "TypeMap.extend", + "Line": 1 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::type_map", - "Name": "TypeMap::new", + "Name": "TypeMap::with_capacity", "Line": 2 } ] @@ -29256,6 +20961,13 @@ "PkgPath": "std::collections::hash::map", "Name": "extend", "Line": 2 + }, + { + "Kind": "Dependency", + "ModPath": "metainfo", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 1 } ], "References": [ @@ -29361,13 +21073,6 @@ "Name": "downcast_mut", "Line": 4 }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, { "Kind": "Dependency", "ModPath": "", @@ -29562,59 +21267,29 @@ "Line": 4 }, { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - } - ] - }, - "metainfo?metainfo::type_map#TypeMap::new": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::new", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 + "Kind": "Dependency", + "ModPath": "", + "PkgPath": "core::option", + "Name": "Option", + "Line": 1 }, { "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", + "ModPath": "", + "PkgPath": "core::any", + "Name": "TypeId", "Line": 3 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo", + "Name": "MetaInfo.remove", + "Line": 4 + } + ] }, "metainfo?metainfo::type_map#TypeMap::with_capacity": { "ModPath": "metainfo", @@ -29663,34 +21338,18 @@ "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 + "Name": "MetaInfo.extend", + "Line": 6 }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 + "Name": "MetaInfo.insert", + "Line": 4 } ] }, - "metainfo?metainfo::type_map#v": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "v", - "Type": "VAR", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "Line": 0 - } - ], - "References": null - }, "rustc-hash@2.0.0?rustc-hash::random_state#Default\u003cFxRandomState\u003e::default": { "ModPath": "rustc-hash@2.0.0", "PkgPath": "rustc-hash::random_state", @@ -29701,15 +21360,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", "Line": 3 } ] @@ -29724,44 +21383,30 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::new", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap::with_capacity", "Line": 3 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 + "Name": "FastStrMap", + "Line": 5 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::new", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap", + "Line": 2 } ] }, @@ -29788,6 +21433,13 @@ "Type": "TYPE", "Dependencies": null, "References": [ + { + "Kind": "Reference", + "ModPath": "metainfo", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", + "Line": 1 + }, { "Kind": "Reference", "ModPath": "metainfo", @@ -29823,15 +21475,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.capacity", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.capacity", "Line": 2 } ] @@ -29846,29 +21498,29 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 2 + "PkgPath": "metainfo", + "Name": "MetaInfo.clear", + "Line": 9 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 9 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.clear", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", + "PkgPath": "metainfo::kv", + "Name": "Node.clear", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.clear", "Line": 2 } ] @@ -29887,42 +21539,19 @@ "Name": "MetaInfo.contains_string", "Line": 6 }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::faststr_map", "Name": "FastStrMap.contains", "Line": 2 - } - ] - }, - "std?std::collections::hash::map#default": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "default", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::new", - "Line": 3 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::new", - "Line": 3 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.contains", + "Line": 2 } ] }, @@ -29936,16 +21565,16 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 3 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.entry", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.entry", + "Line": 3 } ] }, @@ -29959,15 +21588,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.extend", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.extend", "Line": 2 } ] @@ -29982,16 +21611,16 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get", + "Line": 3 } ] }, @@ -30005,16 +21634,16 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.get_mut", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.get_mut", + "Line": 3 } ] }, @@ -30028,15 +21657,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.insert", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.insert", "Line": 2 } ] @@ -30051,15 +21680,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.is_empty", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.is_empty", "Line": 2 } ] @@ -30088,15 +21717,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.iter", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.iter", "Line": 2 } ] @@ -30125,15 +21754,15 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len", + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.len", "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.len", "Line": 2 } ] @@ -30174,13 +21803,6 @@ "PkgPath": "metainfo::type_map", "Name": "Entry.or_insert_with_key", "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "v", - "Line": 0 } ] }, @@ -30194,16 +21816,16 @@ { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 + "PkgPath": "metainfo::faststr_map", + "Name": "FastStrMap.remove", + "Line": 2 }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap.remove", + "Line": 3 } ] }, @@ -30214,35 +21836,19 @@ "Type": "FUNC", "Dependencies": null, "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - }, { "Kind": "Reference", "ModPath": "metainfo", "PkgPath": "metainfo::faststr_map", "Name": "FastStrMap::with_capacity", "Line": 3 - } - ] - }, - "std?std::macros#println": { - "ModPath": "std", - "PkgPath": "std::macros", - "Name": "println", - "Type": "FUNC", - "Dependencies": null, - "References": [ + }, { "Kind": "Reference", "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "test_add_stale", - "Line": 4 + "PkgPath": "metainfo::type_map", + "Name": "TypeMap::with_capacity", + "Line": 3 } ] } diff --git a/docs/parser-zh.md b/docs/parser-zh.md index d06524cc..8b37227c 100644 --- a/docs/parser-zh.md +++ b/docs/parser-zh.md @@ -9,14 +9,13 @@ - uniast:统一 AST 结构的 golang 定义 - lsp:LSP 协议处理 client,提供了 文件解析、引用查找、语法树解析、定义查找等接口,以及**通用的语言规范 LanguageSpec 接口** - collect:负责基于 LSP 符号收集和导出 UniAST,是核心运算逻辑 -- rust:主体是对 lsp#Spec 接口的 rust 语言规范实现。此外还有具体 lsp(rust-analyzer)的一些具体调用逻辑,以及针对按 id 查找的实现 -- go: go 的 parser 和 writer 实现 +- {language}:主体是对 lsp#Spec 接口的对应 {language} 规范的实现。此外还有具体 LSP server 的一些具体调用逻辑 ## 运算过程 ![lang-parser](../images/lang-parser.png) -1. 通过命令行参数识别语言启动对应 lsp server,并传入初始化参数 +1. 通过命令行参数识别语言启动对应 LSP server,并传入初始化参数 2. 遍历仓库文件,调用 `textDocument/documentSymbol` 方法获取每个文件的所有符号。对于每个符号 1. 调用 `textDocument/semanticTokens/range` 方法获取符号代码中的 tokens 2. 识别出有效实体的 token,调用 `textDocument/definition` 跳转到对应符号位置,从而建立节点依赖关系 @@ -26,15 +25,15 @@ 由于 UniAST 并不完全等价 LSP, 因此需要实现一些特定语言专属的行为接口才能进行转换。参考 lang/rust 包,大体需要实现以下能力: -- GetDefaultLSP():映射用户输入 language 到具体的 lsp.Language,以及对应的 lsp 名称 -- CheckRepo():检查用户仓库情况,根据各语言规范额处理工具链等问题,并返回默认打开的第一个文件(用于触发 lsp-server),以及等候 sever 初始化完成的时间(根据仓库大小来决定) +- GetDefaultLSP():映射用户输入 language 到具体的 lsp.Language,以及对应的 LSP 名称 +- CheckRepo():检查用户仓库情况,根据各语言规范额处理工具链等问题,并返回默认打开的第一个文件(用于触发 LSP server),以及等候 sever 初始化完成的时间(根据仓库大小来决定) - **LanguageSpec interface**: 核心模块,用于处理非 LSP 通用的语法信息、比如判断一个 token 是否是标准库的符号、函数签名解析等: -- ModulePatcher: 后处理模块,用于处理语言特殊的信息收集。比如 rust 的 use 符号收集(lsp 不收集)。可以不实现 +- ModulePatcher: 后处理模块,用于处理语言特殊的信息收集。比如 rust 的 use 符号收集(LSP 不收集)。可以不实现 ### LaunguageSpec ``` -用于在 lsp 符号收集过程中转换为 UniAST 所需信息,并且这些信息非 LSP 通用定义 +用于在 LSP 符号收集过程中转换为 UniAST 所需信息,并且这些信息非 LSP 通用定义 ```go diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index 148f062c..f41fa280 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -3,9 +3,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 -## Identity 节点唯一标识 +# Identity 节点唯一标识 -为了保证精确查询和可扩展存储,约定 **ModPath+PkgPath+SymbolName** 为 AST Node 的全球唯一标识**。 +为了保证精确查询和可扩展存储,约定 `ModPath?PkgPath#SymbolName` 为 AST Node 的全球唯一标识。 ```json @@ -60,12 +60,13 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 -## 结构体定义(Go) +# 结构定义 +## Go Struct 形式 - 代码详见 [Repository](/lang/uniast/ast.go) 定义 -## JSON 定义 +## JSON 形式 以下以 [cloudwego/localsession](https://github.com/cloudwego/localsession.git) 库解析为示例介绍 @@ -153,7 +154,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json -// manager.go + { "Path": "manager.go", "Imports": [], @@ -629,12 +630,14 @@ const ( "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "Line": 1 + "Name": "SESSION_CONFIG_KEY", + "Line": 1, + "Desc": "", + "Codes": "" } ``` -- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE +- Kind: 关系类型,目前包括 Dependency 和 Reference,分别表示依赖和引用。 - ModPath: 模块路径,见【Identity】介绍 @@ -645,8 +648,7 @@ const ( - Name: 变量名称 - -- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) +- Line: 产生关系的位置在主节点代码的相对行号(从0开始) ## 完整JSON示例 @@ -821,7 +823,6 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json -// manager.go { "Path": "manager.go", "Imports": [], @@ -905,10 +906,10 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.BindSession", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3290, "EndOffset": 3573, - "Content": "// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(Identity SessionIdentity, s Session) {\n\tshard := self.shards[uint64(Identity)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(Identity, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionIdentity(Identity)\n\t}\n}", + "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}", "Receiver": { "IsPointer": true, "Type": { @@ -921,9 +922,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionIdentity", + "Name": "SessionID", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3386, "EndOffset": 3398 }, @@ -932,7 +933,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3400, "EndOffset": 3409 } @@ -941,9 +942,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionIdentity", + "Name": "transmitSessionID", "File": "manager.go", - "Line": 140, + "Line": 139, "StartOffset": 3547, "EndOffset": 3564 } @@ -954,7 +955,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "com/cloudwego/localsession.Store", "File": "manager.go", - "Line": 137, + "Line": 136, "StartOffset": 3485, "EndOffset": 3490 } @@ -976,7 +977,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 - File:所在的文件名 -- Line:**起始位置文件的行号** +- Line:**起始位置文件的行号**(从0开始) - StartOffset:代码起始位置**相对文件头的字节偏移量** @@ -1024,18 +1025,20 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ###### Dependency -表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别 +表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别。 + +- 注意:UniAST**一般只收集非标准库的依赖**(下同),因为我们认为对于标准库节点是LLM已经具备的公开知识。 ``` { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionIdentity", + "Name": "SessionID", "File": "manager.go", - "Line": 140, - "StartOffset": 3547, - "EndOffset": 3564 + "Line": 133, + "StartOffset": 3386, + "EndOffset": 3398 } ``` @@ -1051,7 +1054,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 - File:依赖点(不是被依赖节点)token所处的代码文件 -- Line:依赖点(不是被依赖节点)token所处的代码行 +- Line:依赖点(不是被依赖节点)token所处的文件代码行(从零开始) - StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 @@ -1068,35 +1071,64 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json { "Exported": true, - "TypeKind": "interface", + "TypeKind": "struct", "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}", - "InlineStruct": [ - {} // dependency + "Name": "SessionManager", + "File": "manager.go", + "Line": 45, + "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": 49, + "StartOffset": 1479, + "EndOffset": 1493 + } ], "Methods": { - "Get": { + "BindSession": { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session.Get" + "Name": "SessionManager.BindSession" }, - "IsValid": { + "Close": { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session.IsValid" + "Name": "SessionManager.Close" }, - "WithValue": { + "GC": { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session.WithValue" + "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" } - } + }, + "Implements": [] } ``` @@ -1137,7 +1169,25 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 - 注意这里不应该包括 InlineStruct 的 methods -- Implements:该类型实现了哪些接口**Identity** +- Implements:该类型实现了哪些接口的**Identity**列表,如: +```json +//github.com/cloudwego/localsession?github.com/cloudwego/localsession#ManagerOptions +"Implements": [ + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Session" + }, + { + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "Session" + } +] +``` + + + ##### Var @@ -1154,7 +1204,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "defaultShardCap", "File": "manager.go", - "Line": 53, + "Line": 52, "StartOffset": 1501, "EndOffset": 1521, "Type": { @@ -1187,7 +1237,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 - IsConst:是否为常量 -- Type:其类型对应的Identity(不包括 go 原始类型),go内置类型可以只有name(如 string, uint) +- Type:其类型对应的Identity(**包括 go 原始类型**),go内置类型可以只有name(如 string, uint) - Content:定义代码,如 `var A int = 1 ` @@ -1413,7 +1463,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json { - "Identity": "/Users/bytedance/golang/work/abcoder/tmp/localsession", + "id": "/Users/bytedance/golang/work/abcoder/tmp/localsession", "Modules": { "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, "github.com/cloudwego/localsession": {} @@ -1422,7 +1472,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 } ``` -- Identity: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径作为Identity +- id: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径 - Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 @@ -1489,7 +1539,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 ```json -// manager.go + { "Path": "manager.go", "Imports": [], @@ -1982,7 +2032,7 @@ const ( - Name: 变量名称 -- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) +- Line: 产生关系的位置在主节点代码的行号(从零开始) ## 完整JSON示例 From bf11747fb38f25dda3bd28c67a396589dabc4b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Sat, 19 Apr 2025 16:25:35 +0800 Subject: [PATCH 09/15] fix:(go_ast) get receiver name bug --- docs/localsession.json | 364 ++++++++++++------------------ docs/uniast-zh.md | 18 +- lang/golang/parser/go_ast_test.go | 60 ----- lang/golang/parser/pkg_test.go | 6 +- lang/golang/parser/utils.go | 4 +- 5 files changed, 161 insertions(+), 291 deletions(-) diff --git a/docs/localsession.json b/docs/localsession.json index d5536d25..335de182 100644 --- a/docs/localsession.json +++ b/docs/localsession.json @@ -121,7 +121,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.BindSession", + "Name": "SessionManager.BindSession", "File": "gls.go", "Line": 118, "StartOffset": 3422, @@ -189,7 +189,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GetSession", + "Name": "SessionManager.GetSession", "File": "gls.go", "Line": 107, "StartOffset": 3153, @@ -413,7 +413,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Close", + "Name": "SessionManager.Close", "File": "gls.go", "Line": 69, "StartOffset": 2200, @@ -663,7 +663,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Disable", + "Name": "SessionMap.Disable", "File": "session.go", "Line": 116, "StartOffset": 3162, @@ -892,7 +892,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Store", + "Name": "shard.Store", "File": "manager.go", "Line": 136, "StartOffset": 3485, @@ -1030,7 +1030,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Load", + "Name": "shard.Load", "File": "manager.go", "Line": 116, "StartOffset": 3030, @@ -1116,7 +1116,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Load", + "Name": "shard.Load", "File": "manager.go", "Line": 151, "StartOffset": 3902, @@ -1125,7 +1125,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Delete", + "Name": "shard.Delete", "File": "manager.go", "Line": 153, "StartOffset": 3928, @@ -1157,7 +1157,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GC", + "Name": "SessionManager.GC", "File": "manager.go", "Line": 193, "StartOffset": 4857, @@ -1308,7 +1308,7 @@ { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.UnbindSession", + "Name": "SessionManager.UnbindSession", "File": "gls.go", "Line": 132, "StartOffset": 3832, @@ -2726,7 +2726,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.BindSession", + "Name": "SessionManager.BindSession", "Line": 4 }, { @@ -2778,7 +2778,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GetSession", + "Name": "SessionManager.GetSession", "Line": 4 }, { @@ -2939,7 +2939,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Close", + "Name": "SessionManager.Close", "Line": 6 }, { @@ -3130,7 +3130,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Disable", + "Name": "SessionMap.Disable", "Line": 4 } ], @@ -3147,8 +3147,8 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "Line": 9 + "Name": "clearSessionID", + "Line": 5 }, { "Kind": "Reference", @@ -3161,8 +3161,8 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 5 + "Name": "transmitSessionID", + "Line": 9 } ] }, @@ -3193,15 +3193,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 + "Name": "newShard", + "Line": 2 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 2 + "Name": "SessionManager.GC", + "Line": 8 } ] }, @@ -3248,15 +3248,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.WithValue", - "Line": 2 + "Name": "NewSessionCtx", + "Line": 3 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtx", - "Line": 3 + "Name": "SessionCtx.WithValue", + "Line": 2 }, { "Kind": "Reference", @@ -3342,28 +3342,28 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 12 + "Name": "BindSession", + "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 4 + "Name": "getSessionID", + "Line": 12 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 + "Name": "CurSession", + "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", + "Name": "UnbindSession", "Line": 4 }, { @@ -3377,8 +3377,8 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "Line": 4 + "Name": "SessionManager.GC", + "Line": 8 } ] }, @@ -3430,11 +3430,19 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Store", + "Name": "shard.Store", "Line": 3 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3442,7 +3450,15 @@ "Name": "SessionManager.Close", "Type": "FUNC", "Dependencies": null, - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3472,7 +3488,15 @@ "Line": 8 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3491,11 +3515,19 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Load", + "Name": "shard.Load", "Line": 2 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3522,18 +3554,26 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Load", + "Name": "shard.Load", "Line": 3 }, { "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Delete", + "Name": "shard.Delete", "Line": 5 } ], - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3545,7 +3585,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GC", + "Name": "SessionManager.GC", "Line": 7 } ], @@ -3581,7 +3621,15 @@ "Name": "SessionMap.Disable", "Type": "FUNC", "Dependencies": null, - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -3632,7 +3680,7 @@ "Kind": "Dependency", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.UnbindSession", + "Name": "SessionManager.UnbindSession", "Line": 4 }, { @@ -3736,157 +3784,6 @@ } ] }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.BindSession": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.BindSession", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 4 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Close": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Close", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 6 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Delete": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Delete", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.UnbindSession", - "Line": 5 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Disable": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Disable", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionMapWithTimeout", - "Line": 4 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.GC": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GC", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.startGC", - "Line": 7 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.GetSession": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.GetSession", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 4 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Load": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Load", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GetSession", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.UnbindSession", - "Line": 3 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.Store": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Store", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.BindSession", - "Line": 3 - } - ] - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#com/cloudwego/localsession.UnbindSession": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.UnbindSession", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "Line": 4 - } - ] - }, "github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerObj": { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", @@ -3913,22 +3810,22 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", + "Name": "BindSession", "Line": 1 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 1 + "Name": "InitDefaultManager", + "Line": 5 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 5 + "Name": "CurSession", + "Line": 1 }, { "Kind": "Reference", @@ -3990,7 +3887,7 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", + "Name": "clearSessionID", "Line": 1 }, { @@ -4004,7 +3901,7 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", + "Name": "transmitSessionID", "Line": 1 } ] @@ -4066,14 +3963,14 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", + "Name": "BindSession", "Line": 4 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", + "Name": "CurSession", "Line": 4 }, { @@ -4096,15 +3993,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "Line": 3 + "Name": "clearSessionID", + "Line": 8 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 8 + "Name": "transmitSessionID", + "Line": 3 } ] }, @@ -4164,15 +4061,15 @@ "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "Line": 16 + "Name": "clearSessionID", + "Line": 14 }, { "Kind": "Reference", "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 14 + "Name": "transmitSessionID", + "Line": 16 } ] }, @@ -4205,7 +4102,15 @@ "Name": "shard.Delete", "Type": "FUNC", "Dependencies": null, - "References": null + "References": [ + { + "Kind": "Reference", + "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", @@ -4213,7 +4118,22 @@ "Name": "shard.Load", "Type": "FUNC", "Dependencies": null, - "References": null + "References": [ + { + "Kind": "Reference", + "ModPath": "github.com/cloudwego/localsession", + "PkgPath": "github.com/cloudwego/localsession", + "Name": "SessionManager.GetSession", + "Line": 2 + }, + { + "Kind": "Reference", + "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", @@ -4221,7 +4141,15 @@ "Name": "shard.Store", "Type": "FUNC", "Dependencies": null, - "References": null + "References": [ + { + "Kind": "Reference", + "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", diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index f41fa280..942b0afb 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -1623,10 +1623,10 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "SessionManager.BindSession", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3290, "EndOffset": 3573, - "Content": "// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(Identity SessionIdentity, s Session) {\n\tshard := self.shards[uint64(Identity)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(Identity, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionIdentity(Identity)\n\t}\n}", + "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}", "Receiver": { "IsPointer": true, "Type": { @@ -1639,9 +1639,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionIdentity", + "Name": "SessionID", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3386, "EndOffset": 3398 }, @@ -1650,7 +1650,7 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "Session", "File": "manager.go", - "Line": 134, + "Line": 133, "StartOffset": 3400, "EndOffset": 3409 } @@ -1659,9 +1659,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionIdentity", + "Name": "transmitSessionID", "File": "manager.go", - "Line": 140, + "Line": 139, "StartOffset": 3547, "EndOffset": 3564 } @@ -1670,9 +1670,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 { "ModPath": "github.com/cloudwego/localsession", "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Store", + "Name": "shard.Store", "File": "manager.go", - "Line": 137, + "Line": 136, "StartOffset": 3485, "EndOffset": 3490 } diff --git a/lang/golang/parser/go_ast_test.go b/lang/golang/parser/go_ast_test.go index 834a8998..6907dfc7 100644 --- a/lang/golang/parser/go_ast_test.go +++ b/lang/golang/parser/go_ast_test.go @@ -20,69 +20,9 @@ import ( "testing" . "github.com/cloudwego/abcoder/lang/uniast" - "github.com/davecgh/go-spew/spew" "github.com/stretchr/testify/require" ) -func Test_goParser_GeMainOnDepends(t *testing.T) { - type fields struct { - modName string - homePageDir string - opts Options - } - tests := []struct { - name string - fields fields - }{ - { - name: "test", - fields: fields{ - homePageDir: "../../../../../tmp/cloudwego/kitex", - opts: Options{ - ReferCodeDepth: 1, - CollectComment: true, - }, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - p := newGoParser(tt.fields.modName, tt.fields.homePageDir, tt.fields.opts) - n, err := p.getNode(NewIdentity("github.com/cloudwego/kitex", "github.com/cloudwego/kitex/pkg/generic", "ParseContent")) - if err != nil { - t.Fatal(err) - } - if n == nil { - t.Fatal("nil get node") - } - spew.Dump(p) - pj, err := json.MarshalIndent(n, "", " ") - if err != nil { - t.Fatal(err) - } - println(string(pj)) - ids, err := p.searchName("main") - if err != nil { - t.Log(err.Error()) - } - if len(ids) == 0 { - t.Fatal("not found") - } - spew.Dump(ids) - dep, e := p.getNode(Identity{"github.com/cloudwego/kitex", "github.com/cloudwego/kitex/pkg/generic", "BinaryThriftGeneric"}) - if e != nil { - t.Fatal(e) - } - spew.Dump(dep.(*Function).Content) - var repo = NewRepository(tt.fields.modName) - for _, id := range ids { - loadNode(p, id.PkgPath, id.Name, &repo) - } - spew.Dump(repo) - }) - } -} - func TestCases(t *testing.T) { type fields struct { mod string diff --git a/lang/golang/parser/pkg_test.go b/lang/golang/parser/pkg_test.go index 305eda23..7c9ea858 100644 --- a/lang/golang/parser/pkg_test.go +++ b/lang/golang/parser/pkg_test.go @@ -40,7 +40,7 @@ func Test_goParser_ParseRepo(t *testing.T) { name: "test", fields: fields{ modName: "github.com/cloudwego/localsession", - homePageDir: "../../../../tmp/localsession", + homePageDir: "../../../tmp/localsession", }, }, } @@ -93,7 +93,7 @@ func Test_goParser_ParseDirs(t *testing.T) { { name: "test", args: args{ - homePageDir: "../../../../testdata/golang", + homePageDir: "../../../testdata/golang", modName: "a.b/c", pkg: "a.b/c/cmd", opts: Options{ @@ -166,7 +166,7 @@ func Test_goParser_ParseNode(t *testing.T) { name: "test", fields: fields{ modName: "github.com/cloudwego/localsession", - homePageDir: "../../../../../tmp/localsession", + homePageDir: "../../../tmp/localsession", }, args: args{ pkgPath: "github.com/modern-go/gls", diff --git a/lang/golang/parser/utils.go b/lang/golang/parser/utils.go index 0785979a..eed93e36 100644 --- a/lang/golang/parser/utils.go +++ b/lang/golang/parser/utils.go @@ -186,7 +186,9 @@ func getTypeKind(n ast.Expr) TypeKind { func getNamedType(typ types.Type) (ty types.Object, isPointer bool) { if pt, ok := typ.(*types.Pointer); ok { typ = pt.Elem() - } else if name, ok := typ.(*types.Named); ok { + isPointer = true + } + if name, ok := typ.(*types.Named); ok { return name.Obj(), isPointer } return nil, isPointer From 0df218df7c3c96eb79dc83d8279585868be90a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Sat, 19 Apr 2025 16:26:59 +0800 Subject: [PATCH 10/15] remove rust ci --- .github/workflows/rust.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index 8d0ecea0..00000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Rust - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Build - run: cargo build --verbose - # - name: Run tests - # run: cargo test --verbose From 7cc7021e3556c1090f86433ff632f1ce12d61548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Sat, 19 Apr 2025 16:58:00 +0800 Subject: [PATCH 11/15] tmp remove line CI --- .github/workflows/simple_checks.yml | 18 ------------------ script/check_all_linenos.sh | 17 ++++++----------- script/make_parser.sh | 20 -------------------- 3 files changed, 6 insertions(+), 49 deletions(-) delete mode 100644 .github/workflows/simple_checks.yml delete mode 100755 script/make_parser.sh diff --git a/.github/workflows/simple_checks.yml b/.github/workflows/simple_checks.yml deleted file mode 100644 index 9fddb195..00000000 --- a/.github/workflows/simple_checks.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Simple Checks - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: prepare rls - run: rustup component add rust-analyzer - - name: check linenos - run: ./script/check_all_linenos.sh - diff --git a/script/check_all_linenos.sh b/script/check_all_linenos.sh index 3f8c617a..5d397943 100755 --- a/script/check_all_linenos.sh +++ b/script/check_all_linenos.sh @@ -15,23 +15,18 @@ root=$(dirname $(realpath $(dirname $0))) cd $root -echo "[Making parser]" -./script/make_parser.sh -echo "[Done making parser]" -parser=tools/parser/lang mkdir -p testdata/jsons do_test() { + name="ast" lang=$1 srcpath=$2 - name=$3 flags=$4 - echo $name... - $parser -d -v --no-need-comment collect $lang $srcpath > testdata/jsons/$name.json 2>testdata/jsons/$name.log - cat testdata/jsons/$name.log - python script/check_lineno.py --json testdata/jsons/$name.json --base $srcpath $flags > testdata/jsons/$name.check + echo "go run . parse $lang $srcpath -verbose --no-need-comment > testdata/jsons/$name.json" + go run . parse $lang $srcpath -verbose --no-need-comment > testdata/jsons/$name.json + python3 script/check_lineno.py --json testdata/jsons/$name.json --base $srcpath $flags > testdata/jsons/$name.check if grep -q "All functions verified successfully!" testdata/jsons/$name.check; then echo " [PASS]" @@ -40,5 +35,5 @@ do_test() { exit 1 fi } -do_test go src/lang go "--zero_linebase" -do_test rust testdata/rust2-wobyted rust2 "--zero_linebase --implheads" +do_test go testdata/golang "--zero_linebase" +do_test rust testdata/rust2 "--zero_linebase --implheads" diff --git a/script/make_parser.sh b/script/make_parser.sh deleted file mode 100755 index af107282..00000000 --- a/script/make_parser.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# 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. - -root=$(dirname $(realpath $(dirname $0))) - -# make lang -cd $root/src/lang -go build -o ../../tools/parser/lang . From 0c83536a142f6459b3a48d5b1d894dd513254a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Sun, 20 Apr 2025 00:44:26 +0800 Subject: [PATCH 12/15] add NewIdentityFromString() --- lang/uniast/ast.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lang/uniast/ast.go b/lang/uniast/ast.go index efbe6368..9f93694c 100644 --- a/lang/uniast/ast.go +++ b/lang/uniast/ast.go @@ -256,6 +256,21 @@ func NewIdentity(mod, pkg, name string) Identity { return Identity{ModPath: mod, PkgPath: pkg, Name: name} } +func NewIdentityFromString(str string) (ret Identity) { + sp := strings.Split(str, "?") + if len(sp) == 2 { + ret.ModPath = sp[0] + str = sp[1] + } + sp = strings.Split(str, "#") + if len(sp) == 2 { + ret.PkgPath = sp[0] + str = sp[1] + } + ret.Name = str + return ret +} + // return full packagepath.name func (i Identity) String() string { return i.PkgPath + "#" + i.Name From cef3f6fc6675f2121ed73af821cd2a466ece77d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Mon, 21 Apr 2025 13:01:47 +0800 Subject: [PATCH 13/15] move example json to huggingface --- README.md | 10 +- docs/localsession.json | 4391 -------- docs/metainfo.json | 21856 --------------------------------------- docs/uniast-zh.md | 4 +- 4 files changed, 7 insertions(+), 26254 deletions(-) delete mode 100644 docs/localsession.json delete mode 100644 docs/metainfo.json diff --git a/README.md b/README.md index 1b801b7f..f5b123d9 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,15 @@ ABCoder, an AI-oriented code-processing SDK, is designed to enhance coding conte - Universal Abstract Syntax Tree (UniAST), an language-independent, AI-friendly specification of code information, providing a flexible and structrual coding context for both AI and hunman. -- General Parser Interface, parses abitary-language codes to UniAST. +- General Parser, parses abitary-language codes to UniAST. -- General Writer Interface, transforms UniAST back to codes. +- General Writer, transforms UniAST back to codes. -- (Comming Soon) General Iterator Interface, provides a set of functions or tools to help developers to implement their agents without deep knowledge of the UniAST structure. +- (Comming Soon) General Iterator, a framework for visiting the UniAST easily and implementing batch-code-processing workflows. -- (Comming Soon) Code RAG, provides a set of tools to help the LLM understand your codes much deeper than ever. +- (Comming Soon) Code RAG, provides a set of tools and functions to help the LLM understand your codes much deeper than ever. -Based on these features, developers can easily implement or enhance their AI-assisted-coding applications, such as reviewing, optimizing, translating... +Based on these features, developers can easily implement or enhance their AI-assisted-coding applications, such as reviewing, optimizing, translating, etc. ## Universal-Abstract-Syntax-Tree Specification diff --git a/docs/localsession.json b/docs/localsession.json deleted file mode 100644 index 335de182..00000000 --- a/docs/localsession.json +++ /dev/null @@ -1,4391 +0,0 @@ -{ - "id": "/Users/bytedance/golang/work/abcoder/tmp/localsession", - "Modules": { - "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": { - "Language": "go", - "Version": "v0.0.0-20230728082804-614d0af6619b", - "Name": "github.com/bytedance/gopkg", - "Dir": "", - "Packages": { - "github.com/bytedance/gopkg/cloud/metainfo": { - "IsMain": false, - "IsTest": false, - "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", - "Functions": { - "CountPersistentValues": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", - "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", - "Name": "CountPersistentValues", - "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 214, - "StartOffset": 0, - "EndOffset": 0, - "Content": "// CountPersistentValues counts the length of persisten KV pairs\nfunc CountPersistentValues(ctx context.Context) int {\n\tif n := getNode(ctx); n == nil {\n\t\treturn 0\n\t} else {\n\t\treturn len(n.persistent)\n\t}\n}" - }, - "GetAllPersistentValues": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", - "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", - "Name": "GetAllPersistentValues", - "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 146, - "StartOffset": 0, - "EndOffset": 0, - "Content": "// GetAllPersistentValues retrieves all persistent values.\nfunc GetAllPersistentValues(ctx context.Context) (m map[string]string) {\n\tif n := getNode(ctx); n != nil {\n\t\tif cnt := len(n.persistent); cnt \u003e 0 {\n\t\t\tm = make(map[string]string, cnt)\n\t\t\tfor _, kv := range n.persistent {\n\t\t\t\tm[kv.key] = kv.val\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}" - }, - "RangePersistentValues": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", - "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", - "Name": "RangePersistentValues", - "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 160, - "StartOffset": 0, - "EndOffset": 0, - "Content": "// RangePersistentValues calls f sequentially for each persistent kv.\n// If f returns false, range stops the iteration.\nfunc RangePersistentValues(ctx context.Context, f func(k, v string) bool) {\n\tn := getNode(ctx)\n\tif n == nil {\n\t\treturn\n\t}\n\n\tfor _, kv := range n.persistent {\n\t\tif !f(kv.key, kv.val) {\n\t\t\tbreak\n\t\t}\n\t}\n}" - }, - "WithPersistentValues": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", - "PkgPath": "github.com/bytedance/gopkg/cloud/metainfo", - "Name": "WithPersistentValues", - "File": "../../../../pkg/mod/github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b/cloud/metainfo/info.go", - "Line": 233, - "StartOffset": 0, - "EndOffset": 0, - "Content": "// WithPersistentValues sets the values into the context by the given keys.\n// This value will be propagated to the services along the RPC call chain.\nfunc WithPersistentValues(ctx context.Context, kvs ...string) context.Context {\n\tif len(kvs)%2 != 0 {\n\t\tpanic(\"len(kvs) must be even\")\n\t}\n\n\tkvLen := len(kvs) / 2\n\n\tif ctx == nil || len(kvs) == 0 {\n\t\treturn ctx\n\t}\n\n\tvar n *node\n\tif m := getNode(ctx); m != nil {\n\t\tnn := *m\n\t\tn = \u0026nn\n\t\tn.persistent = make([]kv, len(m.persistent), len(m.persistent)+kvLen)\n\t\tcopy(n.persistent, m.persistent)\n\t} else {\n\t\tn = \u0026node{\n\t\t\tpersistent: make([]kv, 0, kvLen),\n\t\t}\n\t}\n\n\tfor i := 0; i \u003c kvLen; i++ {\n\t\tkey := getKey(kvs, i)\n\t\tval := getValue(kvs, i)\n\n\t\tif len(key) == 0 || len(val) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif idx, ok := search(n.persistent, key); ok {\n\t\t\tif n.persistent[idx].val != val {\n\t\t\t\tn.persistent[idx].val = val\n\t\t\t}\n\t\t} else {\n\t\t\tn.persistent = append(n.persistent, kv{key: key, val: val})\n\t\t}\n\t}\n\n\treturn withNode(ctx, n)\n}" - } - }, - "Types": {}, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": {} - }, - "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": 114, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "gls.go", - "Line": 114, - "StartOffset": 3347, - "EndOffset": 3356 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "goID", - "File": "gls.go", - "Line": 118, - "StartOffset": 3444, - "EndOffset": 3448 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.BindSession", - "File": "gls.go", - "Line": 118, - "StartOffset": 3422, - "EndOffset": 3433 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "gls.go", - "Line": 118, - "StartOffset": 3434, - "EndOffset": 3443 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "File": "gls.go", - "Line": 115, - "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": 103, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "gls.go", - "Line": 103, - "StartOffset": 3054, - "EndOffset": 3061 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "goID", - "File": "gls.go", - "Line": 107, - "StartOffset": 3174, - "EndOffset": 3178 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GetSession", - "File": "gls.go", - "Line": 107, - "StartOffset": 3153, - "EndOffset": 3163 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "gls.go", - "Line": 107, - "StartOffset": 3164, - "EndOffset": 3173 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "File": "gls.go", - "Line": 104, - "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": 41, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "gls.go", - "Line": 41, - "StartOffset": 1372, - "EndOffset": 1386 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "gls.go", - "Line": 42, - "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": 50, - "StartOffset": 1548, - "EndOffset": 1667, - "Content": "// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "File": "gls.go", - "Line": 50, - "StartOffset": 1622, - "EndOffset": 1637 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "File": "gls.go", - "Line": 51, - "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": 136, - "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}", - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "File": "gls.go", - "Line": 137, - "StartOffset": 3974, - "EndOffset": 3984 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "GoSession", - "File": "gls.go", - "Line": 139, - "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": 146, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "gls.go", - "Line": 146, - "StartOffset": 4142, - "EndOffset": 4151 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "File": "gls.go", - "Line": 152, - "StartOffset": 4289, - "EndOffset": 4302 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "File": "gls.go", - "Line": 155, - "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": 63, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "gls.go", - "Line": 63, - "StartOffset": 2032, - "EndOffset": 2051 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "checkEnvOptions", - "File": "gls.go", - "Line": 66, - "StartOffset": 2123, - "EndOffset": 2138 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionManager", - "File": "gls.go", - "Line": 71, - "StartOffset": 2221, - "EndOffset": 2238 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.Close", - "File": "gls.go", - "Line": 69, - "StartOffset": 2200, - "EndOffset": 2205 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "File": "gls.go", - "Line": 68, - "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": 43, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "File": "session.go", - "Line": 43, - "StartOffset": 1315, - "EndOffset": 1325 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "File": "session.go", - "Line": 46, - "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": 54, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "File": "session.go", - "Line": 54, - "StartOffset": 1604, - "EndOffset": 1614 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtx", - "File": "session.go", - "Line": 55, - "StartOffset": 1625, - "EndOffset": 1638 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.Disable", - "File": "session.go", - "Line": 58, - "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": 62, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "manager.go", - "Line": 62, - "StartOffset": 1804, - "EndOffset": 1823 - } - ], - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "File": "manager.go", - "Line": 62, - "StartOffset": 1825, - "EndOffset": 1839 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "File": "manager.go", - "Line": 68, - "StartOffset": 2004, - "EndOffset": 2012 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.startGC", - "File": "manager.go", - "Line": 76, - "StartOffset": 2112, - "EndOffset": 2119 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard", - "File": "manager.go", - "Line": 66, - "StartOffset": 1940, - "EndOffset": 1945 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "File": "manager.go", - "Line": 70, - "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": 101, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionMap", - "File": "session.go", - "Line": 101, - "StartOffset": 2776, - "EndOffset": 2787 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionMap", - "File": "session.go", - "Line": 104, - "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": 112, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionMap", - "File": "session.go", - "Line": 112, - "StartOffset": 3075, - "EndOffset": 3086 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionMap", - "File": "session.go", - "Line": 113, - "StartOffset": 3097, - "EndOffset": 3110 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionMap.Disable", - "File": "session.go", - "Line": 116, - "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": 29, - "StartOffset": 821, - "EndOffset": 892, - "Content": "// 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": 26, - "StartOffset": 751, - "EndOffset": 818, - "Content": "// 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": 32, - "StartOffset": 895, - "EndOffset": 1025, - "Content": "// 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": 64, - "StartOffset": 1722, - "EndOffset": 1813, - "Content": "// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}", - "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": 69, - "StartOffset": 1815, - "EndOffset": 1924, - "Content": "// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}", - "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": 79, - "StartOffset": 2056, - "EndOffset": 2177, - "Content": "// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}", - "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": 74, - "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}", - "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": 84, - "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}", - "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": 84, - "StartOffset": 2313, - "EndOffset": 2320 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "File": "session.go", - "Line": 86, - "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": 133, - "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}", - "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": 133, - "StartOffset": 3386, - "EndOffset": 3398 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 133, - "StartOffset": 3400, - "EndOffset": 3409 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "File": "manager.go", - "Line": 139, - "StartOffset": 3547, - "EndOffset": 3564 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Store", - "File": "manager.go", - "Line": 136, - "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": 199, - "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}", - "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": 162, - "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}", - "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": 173, - "StartOffset": 4348, - "EndOffset": 4355 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "manager.go", - "Line": 170, - "StartOffset": 4257, - "EndOffset": 4266 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 170, - "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": 114, - "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}", - "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": 114, - "StartOffset": 2912, - "EndOffset": 2924 - } - ], - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 114, - "StartOffset": 2927, - "EndOffset": 2934 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "File": "manager.go", - "Line": 124, - "StartOffset": 3153, - "EndOffset": 3165 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Load", - "File": "manager.go", - "Line": 116, - "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": 82, - "StartOffset": 2140, - "EndOffset": 2252, - "Content": "// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}", - "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": 82, - "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": 148, - "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}", - "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": 148, - "StartOffset": 3805, - "EndOffset": 3817 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "File": "manager.go", - "Line": 157, - "StartOffset": 3991, - "EndOffset": 4005 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Load", - "File": "manager.go", - "Line": 151, - "StartOffset": 3902, - "EndOffset": 3906 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Delete", - "File": "manager.go", - "Line": 153, - "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": 186, - "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}", - "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": 193, - "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": 130, - "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}", - "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": 138, - "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}", - "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": 152, - "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}", - "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": 122, - "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}", - "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": 163, - "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}", - "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": 163, - "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": 128, - "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}", - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "goID", - "File": "gls.go", - "Line": 132, - "StartOffset": 3856, - "EndOffset": 3860 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.UnbindSession", - "File": "gls.go", - "Line": 132, - "StartOffset": 3832, - "EndOffset": 3845 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "gls.go", - "Line": 132, - "StartOffset": 3846, - "EndOffset": 3855 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "File": "gls.go", - "Line": 129, - "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": 76, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "gls.go", - "Line": 76, - "StartOffset": 2300, - "EndOffset": 2320 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SESSION_CONFIG_KEY", - "File": "gls.go", - "Line": 77, - "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": 72, - "StartOffset": 1629, - "EndOffset": 1891, - "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}", - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "File": "stubs.go", - "Line": 73, - "StartOffset": 1659, - "EndOffset": 1671 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "setPprofLabel", - "File": "stubs.go", - "Line": 86, - "StartOffset": 1872, - "EndOffset": 1885 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "labelMap", - "File": "stubs.go", - "Line": 80, - "StartOffset": 1774, - "EndOffset": 1782 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Pprof_Label_Session_ID", - "File": "stubs.go", - "Line": 77, - "StartOffset": 1720, - "EndOffset": 1742 - } - ] - }, - "getPproLabel": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "File": "stubs.go", - "Line": 33, - "StartOffset": 872, - "EndOffset": 963, - "Content": "//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "labelMap", - "File": "stubs.go", - "Line": 33, - "StartOffset": 954, - "EndOffset": 963 - } - ] - }, - "getSessionID": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "File": "stubs.go", - "Line": 56, - "StartOffset": 1338, - "EndOffset": 1627, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "stubs.go", - "Line": 56, - "StartOffset": 1359, - "EndOffset": 1368 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "File": "stubs.go", - "Line": 57, - "StartOffset": 1384, - "EndOffset": 1396 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "stubs.go", - "Line": 68, - "StartOffset": 1603, - "EndOffset": 1612 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Pprof_Label_Session_ID", - "File": "stubs.go", - "Line": 61, - "StartOffset": 1453, - "EndOffset": 1475 - } - ] - }, - "goID": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "goID", - "File": "stubs.go", - "Line": 23, - "StartOffset": 676, - "EndOffset": 741, - "Content": "//go:nocheckptr\nfunc goID() uint64 {\n\treturn uint64(gls.GoID())\n}", - "FunctionCalls": [ - { - "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", - "PkgPath": "github.com/modern-go/gls", - "Name": "GoID", - "File": "stubs.go", - "Line": 24, - "StartOffset": 732, - "EndOffset": 736 - } - ] - }, - "newShard": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "File": "manager.go", - "Line": 54, - "StartOffset": 1523, - "EndOffset": 1634, - "Content": "func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard", - "File": "manager.go", - "Line": 54, - "StartOffset": 1539, - "EndOffset": 1545 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard", - "File": "manager.go", - "Line": 55, - "StartOffset": 1560, - "EndOffset": 1565 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "manager.go", - "Line": 56, - "StartOffset": 1585, - "EndOffset": 1594 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 56, - "StartOffset": 1595, - "EndOffset": 1602 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultShardCap", - "File": "manager.go", - "Line": 56, - "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": 30, - "StartOffset": 776, - "EndOffset": 870, - "Content": "//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "labelMap", - "File": "stubs.go", - "Line": 30, - "StartOffset": 858, - "EndOffset": 869 - } - ] - }, - "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": 106, - "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}", - "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": 106, - "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": 89, - "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}", - "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": 89, - "StartOffset": 2340, - "EndOffset": 2352 - } - ], - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 89, - "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": 100, - "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}", - "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": 100, - "StartOffset": 2600, - "EndOffset": 2612 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 100, - "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": 37, - "StartOffset": 1013, - "EndOffset": 1336, - "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\t\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "stubs.go", - "Line": 37, - "StartOffset": 1036, - "EndOffset": 1048 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "File": "stubs.go", - "Line": 38, - "StartOffset": 1058, - "EndOffset": 1070 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "setPprofLabel", - "File": "stubs.go", - "Line": 53, - "StartOffset": 1317, - "EndOffset": 1330 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "labelMap", - "File": "stubs.go", - "Line": 40, - "StartOffset": 1081, - "EndOffset": 1089 - } - ], - "GlobalVars": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Pprof_Label_Session_ID", - "File": "stubs.go", - "Line": 46, - "StartOffset": 1202, - "EndOffset": 1224 - } - ] - } - }, - "Types": { - "ManagerOptions": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "File": "manager.go", - "Line": 23, - "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": 24, - "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": 37, - "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" - }, - { - "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": 87, - "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": 45, - "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": 49, - "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": 94, - "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": 27, - "StartOffset": 743, - "EndOffset": 774, - "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": 39, - "StartOffset": 1272, - "EndOffset": 1340, - "Content": "type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}", - "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": 35, - "StartOffset": 971, - "EndOffset": 1011, - "Content": "const Pprof_Label_Session_ID = \"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": 33, - "StartOffset": 1142, - "EndOffset": 1193, - "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 = \"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": 36, - "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": 37, - "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": 52, - "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": 103, - "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}", - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "GetDefaultManager", - "File": "backup/metainfo.go", - "Line": 104, - "StartOffset": 2652, - "EndOffset": 2669 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "File": "backup/metainfo.go", - "Line": 107, - "StartOffset": 2707, - "EndOffset": 2718 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtx", - "File": "backup/metainfo.go", - "Line": 107, - "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": 111, - "StartOffset": 2755, - "EndOffset": 2829, - "Content": "// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}", - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "File": "backup/metainfo.go", - "Line": 112, - "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": 35, - "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}", - "Results": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "Options", - "File": "backup/metainfo.go", - "Line": 35, - "StartOffset": 1006, - "EndOffset": 1013 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "DefaultManagerOptions", - "File": "backup/metainfo.go", - "Line": 38, - "StartOffset": 1089, - "EndOffset": 1110 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "Options", - "File": "backup/metainfo.go", - "Line": 36, - "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": 44, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "Options", - "File": "backup/metainfo.go", - "Line": 44, - "StartOffset": 1234, - "EndOffset": 1246 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "File": "backup/metainfo.go", - "Line": 46, - "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": 53, - "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}", - "Params": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "BackupHandler", - "File": "backup/metainfo.go", - "Line": 53, - "StartOffset": 1538, - "EndOffset": 1559 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "File": "backup/metainfo.go", - "Line": 57, - "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": 75, - "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": 78, - "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": 83, - "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": 96, - "StartOffset": 2520, - "EndOffset": 2540 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.Export", - "File": "backup/metainfo.go", - "Line": 65, - "StartOffset": 1752, - "EndOffset": 1758 - } - ], - "Types": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "File": "backup/metainfo.go", - "Line": 61, - "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": 26, - "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": 29, - "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": 31, - "StartOffset": 934, - "EndOffset": 961 - } - ] - } - }, - "Vars": {} - } - }, - "Dependencies": { - "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b", - "github.com/modern-go/gls": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", - "github.com/stretchr/testify": "github.com/stretchr/testify@v1.7.0" - }, - "Files": { - ".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" - }, - "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" - }, - "check_branch_name.sh": { - "Path": "check_branch_name.sh" - }, - "example_test.go": { - "Path": "example_test.go" - }, - "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/modern-go/gls\"" - } - ], - "Package": "github.com/cloudwego/localsession" - } - } - }, - "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5": { - "Language": "go", - "Version": "v0.0.0-20220109145502-612d0167dce5", - "Name": "github.com/modern-go/gls", - "Dir": "", - "Packages": { - "github.com/modern-go/gls": { - "IsMain": false, - "IsTest": false, - "PkgPath": "github.com/modern-go/gls", - "Functions": { - "GoID": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", - "PkgPath": "github.com/modern-go/gls", - "Name": "GoID", - "File": "../../../../pkg/mod/github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5/goid.go", - "Line": 20, - "StartOffset": 0, - "EndOffset": 0, - "Content": "// GoID returns the goroutine id of current goroutine\nfunc GoID() int64 {\n\tg := getg()\n\tp_goid := (*int64)(unsafe.Pointer(g + goidOffset))\n\treturn *p_goid\n}" - } - }, - "Types": {}, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": {} - } - }, - "Graph": { - "?#int": { - "ModPath": "", - "PkgPath": "", - "Name": "int", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultShardCap", - "Line": 0 - } - ] - }, - "?sync#Once": { - "ModPath": "", - "PkgPath": "sync", - "Name": "Once", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerOnce", - "Line": 0 - } - ] - }, - "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": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands", - "Line": 25 - } - ] - }, - "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": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands", - "Line": 30 - } - ] - }, - "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": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands", - "Line": 43 - } - ] - }, - "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": "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "GoSession", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Go", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": "defaultManagerObj", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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 - } - ], - "References": null - }, - "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": "UnbindSession", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 9 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "DefaultManagerOptions", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "Options", - "Line": 2 - } - ] - }, - "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", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtxWithTimeout", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": "NewSessionCtx", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.Disable", - "Line": 4 - } - ], - "References": null - }, - "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": "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 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "Line": 8 - } - ], - "References": [ - { - "Kind": "Reference", - "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", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "NewSessionMap", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionMap.Disable", - "Line": 4 - } - ], - "References": null - }, - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "Line": 9 - } - ] - }, - "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": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 - } - ] - }, - "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", - "Dependencies": null, - "References": null - }, - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": null - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionCtx", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionCtx.WithValue", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands", - "Line": 8 - } - ] - }, - "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": null, - "References": [ - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": null, - "References": null - }, - "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": null, - "References": null - }, - "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": "SessionCtx", - "Line": 2 - } - ], - "References": null - }, - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionID": { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GC", - "Line": 8 - } - ] - }, - "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionManager", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultManagerObj", - "Line": 0 - } - ] - }, - "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": "transmitSessionID", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Store", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "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 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "getSessionID", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Load", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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": null, - "References": null - }, - "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": "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 - } - ], - "References": [ - { - "Kind": "Reference", - "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 - } - ], - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionMap", - "Line": 3 - } - ] - }, - "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": null, - "References": [ - { - "Kind": "Reference", - "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": null, - "References": null - }, - "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": null, - "References": null - }, - "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": null, - "References": null - }, - "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": null, - "References": null - }, - "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "GoSession", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "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": "SESSION_CONFIG_KEY", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "Reference", - "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", - "Line": 0 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "GetDefaultManager", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "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", - "Line": 0 - } - ], - "References": null - }, - "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", - "Line": 0 - } - ], - "References": [ - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getSessionID", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "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": "getPproLabel", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Pprof_Label_Session_ID", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "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/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", - "PkgPath": "github.com/modern-go/gls", - "Name": "GoID", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "BindSession", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "CurSession", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "UnbindSession", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 8 - }, - { - "Kind": "Reference", - "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", - "Line": 1 - }, - { - "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": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "clearSessionID", - "Line": 14 - }, - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "NewSessionManager", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "newShard", - "Line": 1 - } - ] - }, - "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": null, - "References": [ - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.GetSession", - "Line": 2 - }, - { - "Kind": "Reference", - "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": null, - "References": [ - { - "Kind": "Reference", - "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": "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": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.BindSession", - "Line": 6 - } - ] - }, - "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 - } - ], - "References": null - }, - "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", - "Dependencies": null, - "References": null - }, - "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 - } - ], - "References": null - }, - "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", - "Name": "DefaultManagerOptions", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "Options", - "Line": 1 - } - ], - "References": null - }, - "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", - "Name": "InitDefaultManager", - "Line": 2 - } - ], - "References": null - }, - "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", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "ManagerOptions", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "DefaultOptions", - "Line": 1 - } - ] - }, - "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", - "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": null - }, - "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5?github.com/modern-go/gls#GoID": { - "ModPath": "github.com/modern-go/gls@v0.0.0-20220109145502-612d0167dce5", - "PkgPath": "github.com/modern-go/gls", - "Name": "GoID", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "goID", - "Line": 1 - } - ] - } - } -} \ No newline at end of file diff --git a/docs/metainfo.json b/docs/metainfo.json deleted file mode 100644 index 8e0888ec..00000000 --- a/docs/metainfo.json +++ /dev/null @@ -1,21856 +0,0 @@ -{ - "id": "/Users/bytedance/golang/work/abcoder/tmp/metainfo", - "Modules": { - "": { - "Language": "rust", - "Version": "", - "Name": "", - "Dir": "", - "Packages": { - "alloc::boxed": { - "IsMain": false, - "IsTest": false, - "PkgPath": "alloc::boxed", - "Functions": { - "new": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "boxed.rs", - "Line": 272, - "StartOffset": 10263, - "EndOffset": 10266, - "Content": "new" - } - }, - "Types": { - "Box": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "boxed.rs", - "Line": 230, - "StartOffset": 8963, - "EndOffset": 8966, - "Content": "Box" - } - }, - "Vars": {} - }, - "alloc::boxed::convert": { - "IsMain": false, - "IsTest": false, - "PkgPath": "alloc::boxed::convert", - "Functions": { - "downcast": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "File": "convert.rs", - "Line": 481, - "StartOffset": 14499, - "EndOffset": 14507, - "Content": "downcast" - } - }, - "Types": {}, - "Vars": {} - }, - "alloc::str": { - "IsMain": false, - "IsTest": false, - "PkgPath": "alloc::str", - "Functions": { - "to_owned": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "File": "str.rs", - "Line": 209, - "StartOffset": 7705, - "EndOffset": 7713, - "Content": "to_owned" - } - }, - "Types": {}, - "Vars": {} - }, - "alloc::string": { - "IsMain": false, - "IsTest": false, - "PkgPath": "alloc::string", - "Functions": { - "push": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "File": "string.rs", - "Line": 1418, - "StartOffset": 48420, - "EndOffset": 48424, - "Content": "push" - }, - "push_str": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "File": "string.rs", - "Line": 1125, - "StartOffset": 39213, - "EndOffset": 39221, - "Content": "push_str" - }, - "with_capacity": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "string.rs", - "Line": 488, - "StartOffset": 15668, - "EndOffset": 15681, - "Content": "with_capacity" - } - }, - "Types": { - "String": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "string.rs", - "Line": 361, - "StartOffset": 11549, - "EndOffset": 11555, - "Content": "String", - "Methods": { - "eq": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cString\u003e.eq" - } - } - } - }, - "Vars": {} - }, - "alloc::sync": { - "IsMain": false, - "IsTest": false, - "PkgPath": "alloc::sync", - "Functions": { - "as_ref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "sync.rs", - "Line": 3916, - "StartOffset": 139351, - "EndOffset": 139357, - "Content": "as_ref" - }, - "clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "File": "sync.rs", - "Line": 2162, - "StartOffset": 77417, - "EndOffset": 77422, - "Content": "clone" - }, - "new": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "File": "sync.rs", - "Line": 385, - "StartOffset": 14660, - "EndOffset": 14663, - "Content": "new" - } - }, - "Types": { - "Arc": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "sync.rs", - "Line": 239, - "StartOffset": 8959, - "EndOffset": 8962, - "Content": "Arc" - } - }, - "Vars": {} - }, - "core::any": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::any", - "Functions": { - "downcast_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "any.rs", - "Line": 537, - "StartOffset": 16698, - "EndOffset": 16710, - "Content": "downcast_mut" - }, - "downcast_ref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "File": "any.rs", - "Line": 509, - "StartOffset": 15972, - "EndOffset": 15984, - "Content": "downcast_ref" - }, - "of": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "any.rs", - "Line": 741, - "StartOffset": 24137, - "EndOffset": 24139, - "Content": "of" - } - }, - "Types": { - "Any": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "File": "any.rs", - "Line": 112, - "StartOffset": 4446, - "EndOffset": 4449, - "Content": "Any" - }, - "TypeId": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "any.rs", - "Line": 709, - "StartOffset": 23223, - "EndOffset": 23229, - "Content": "TypeId" - } - }, - "Vars": {} - }, - "core::borrow": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::borrow", - "Functions": {}, - "Types": { - "Borrow": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::borrow", - "Name": "Borrow", - "File": "borrow.rs", - "Line": 156, - "StartOffset": 6646, - "EndOffset": 6652, - "Content": "Borrow" - } - }, - "Vars": {} - }, - "core::char::methods": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::char::methods", - "Functions": { - "to_ascii_lowercase": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "File": "methods.rs", - "Line": 1253, - "StartOffset": 41988, - "EndOffset": 42006, - "Content": "to_ascii_lowercase" - }, - "to_ascii_uppercase": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "File": "methods.rs", - "Line": 1219, - "StartOffset": 40785, - "EndOffset": 40803, - "Content": "to_ascii_uppercase" - } - }, - "Types": {}, - "Vars": {} - }, - "core::cmp": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::cmp", - "Functions": {}, - "Types": { - "Eq": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "Eq", - "File": "cmp.rs", - "Line": 333, - "StartOffset": 12124, - "EndOffset": 12126, - "Content": "Eq", - "Methods": { - "expecting": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Eq.expecting" - }, - "visit_map": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Eq.visit_map" - } - } - }, - "Ord": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "Ord", - "File": "cmp.rs", - "Line": 945, - "StartOffset": 31334, - "EndOffset": 31337, - "Content": "Ord" - }, - "PartialEq": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "PartialEq", - "File": "cmp.rs", - "Line": 247, - "StartOffset": 9120, - "EndOffset": 9129, - "Content": "PartialEq" - }, - "PartialOrd": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "PartialOrd", - "File": "cmp.rs", - "Line": 1328, - "StartOffset": 43968, - "EndOffset": 43978, - "Content": "PartialOrd" - } - }, - "Vars": {} - }, - "core::convert": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::convert", - "Functions": { - "as_ref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "mod.rs", - "Line": 220, - "StartOffset": 8251, - "EndOffset": 8257, - "Content": "as_ref" - } - }, - "Types": { - "AsRef": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "mod.rs", - "Line": 217, - "StartOffset": 8086, - "EndOffset": 8091, - "Content": "AsRef" - }, - "From": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "From", - "File": "mod.rs", - "Line": 581, - "StartOffset": 22571, - "EndOffset": 22575, - "Content": "From" - }, - "Into": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "mod.rs", - "Line": 446, - "StartOffset": 16474, - "EndOffset": 16478, - "Content": "Into" - } - }, - "Vars": {} - }, - "core::default": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::default", - "Functions": { - "default": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "File": "default.rs", - "Line": 138, - "StartOffset": 3386, - "EndOffset": 3393, - "Content": "default" - } - }, - "Types": { - "Default": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "default.rs", - "Line": 106, - "StartOffset": 2526, - "EndOffset": 2533, - "Content": "Default" - } - }, - "Vars": {} - }, - "core::fmt": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::fmt", - "Functions": { - "debug_struct": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "File": "mod.rs", - "Line": 2227, - "StartOffset": 75558, - "EndOffset": 75570, - "Content": "debug_struct" - } - }, - "Types": { - "Debug": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Debug", - "File": "mod.rs", - "Line": 869, - "StartOffset": 31542, - "EndOffset": 31547, - "Content": "Debug" - }, - "Display": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Display", - "File": "mod.rs", - "Line": 986, - "StartOffset": 35769, - "EndOffset": 35776, - "Content": "Display" - }, - "Formatter": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Formatter", - "File": "mod.rs", - "Line": 531, - "StartOffset": 20076, - "EndOffset": 20085, - "Content": "Formatter" - }, - "Result": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Result", - "File": "mod.rs", - "Line": 78, - "StartOffset": 2369, - "EndOffset": 2375, - "Content": "Result" - } - }, - "Vars": {} - }, - "core::fmt::builders": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::fmt::builders", - "Functions": { - "finish": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "File": "builders.rs", - "Line": 243, - "StartOffset": 7424, - "EndOffset": 7430, - "Content": "finish" - } - }, - "Types": {}, - "Vars": {} - }, - "core::hash": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::hash", - "Functions": {}, - "Types": { - "BuildHasher": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::hash", - "Name": "BuildHasher", - "File": "mod.rs", - "Line": 636, - "StartOffset": 20914, - "EndOffset": 20925, - "Content": "BuildHasher" - }, - "Hash": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::hash", - "Name": "Hash", - "File": "mod.rs", - "Line": 185, - "StartOffset": 5429, - "EndOffset": 5433, - "Content": "Hash" - } - }, - "Vars": {} - }, - "core::iter::traits::collect": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::iter::traits::collect", - "Functions": {}, - "Types": { - "Extend": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::iter::traits::collect", - "Name": "Extend", - "File": "collect.rs", - "Line": 396, - "StartOffset": 12221, - "EndOffset": 12227, - "Content": "Extend" - }, - "FromIterator": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::iter::traits::collect", - "Name": "FromIterator", - "File": "collect.rs", - "Line": 133, - "StartOffset": 4217, - "EndOffset": 4229, - "Content": "FromIterator" - }, - "IntoIterator": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::iter::traits::collect", - "Name": "IntoIterator", - "File": "collect.rs", - "Line": 284, - "StartOffset": 8943, - "EndOffset": 8955, - "Content": "IntoIterator" - } - }, - "Vars": {} - }, - "core::iter::traits::iterator": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::iter::traits::iterator", - "Functions": { - "map": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "File": "iterator.rs", - "Line": 744, - "StartOffset": 25903, - "EndOffset": 25906, - "Content": "map" - } - }, - "Types": {}, - "Vars": {} - }, - "core::macros": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::macros", - "Functions": { - "assert_eq": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_eq", - "File": "mod.rs", - "Line": 14, - "StartOffset": 435, - "EndOffset": 2638, - "Content": "/// Asserts that two expressions are equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_eq!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_eq!`]: crate::debug_assert_eq\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// assert_eq!(a, b);\n///\n/// assert_eq!(a, b, \"we are testing addition with {} and {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_eq_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_eq {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if !(*left_val == *right_val) {\n let kind = $crate::panicking::AssertKind::Eq;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" - }, - "assert_matches": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_matches", - "File": "mod.rs", - "Line": 126, - "StartOffset": 4848, - "EndOffset": 7580, - "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `assert!(matches!(value, pattern))`, because it can print\n/// the debug representation of the actual value shape that did not meet expectations. In contrast,\n/// using [`assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_matches!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_matches!`]: crate::assert_matches::debug_assert_matches\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// assert_matches!(a, Some(_));\n/// assert_matches!(b, Some(_));\n///\n/// assert_matches!(a, Some(345));\n/// assert_matches!(a, Some(345) | None);\n///\n/// // assert_matches!(a, None); // panics\n/// // assert_matches!(b, Some(345)); // panics\n/// // assert_matches!(b, Some(345) | None); // panics\n///\n/// assert_matches!(a, Some(x) if x \u003e 100);\n/// // assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(panic_internals)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro assert_matches {\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::None\n );\n }\n }\n },\n ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $($arg:tt)+) =\u003e {\n match $left {\n $( $pattern )|+ $( if $guard )? =\u003e {}\n ref left_val =\u003e {\n $crate::panicking::assert_matches_failed(\n left_val,\n $crate::stringify!($($pattern)|+ $(if $guard)?),\n $crate::option::Option::Some($crate::format_args!($($arg)+))\n );\n }\n }\n },\n}" - }, - "assert_ne": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "assert_ne", - "File": "mod.rs", - "Line": 70, - "StartOffset": 2640, - "EndOffset": 4846, - "Content": "/// Asserts that two expressions are not equal to each other (using [`PartialEq`]).\n///\n/// Assertions are always checked in both debug and release builds, and cannot\n/// be disabled. See [`debug_assert_ne!`] for assertions that are disabled in\n/// release builds by default.\n///\n/// [`debug_assert_ne!`]: crate::debug_assert_ne\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Like [`assert!`], this macro has a second form, where a custom\n/// panic message can be provided.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// assert_ne!(a, b);\n///\n/// assert_ne!(a, b, \"we are testing that the values are not equal\");\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"assert_ne_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! assert_ne {\n ($left:expr, $right:expr $(,)?) =\u003e {\n match (\u0026$left, \u0026$right) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::None);\n }\n }\n }\n };\n ($left:expr, $right:expr, $($arg:tt)+) =\u003e {\n match (\u0026($left), \u0026($right)) {\n (left_val, right_val) =\u003e {\n if *left_val == *right_val {\n let kind = $crate::panicking::AssertKind::Ne;\n // The reborrows below are intentional. Without them, the stack slot for the\n // borrow is initialized even before the values are compared, leading to a\n // noticeable slow down.\n $crate::panicking::assert_failed(kind, \u0026*left_val, \u0026*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));\n }\n }\n }\n };\n}" - }, - "cfg_match": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "cfg_match", - "File": "mod.rs", - "Line": 198, - "StartOffset": 7582, - "EndOffset": 10377, - "Content": "/// A macro for defining `#[cfg]` match-like statements.\n///\n/// It is similar to the `if/elif` C preprocessor macro by allowing definition of a cascade of\n/// `#[cfg]` cases, emitting the implementation which matches first.\n///\n/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code\n/// without having to rewrite each clause multiple times.\n///\n/// Trailing `_` wildcard match arms are **optional** and they indicate a fallback branch when\n/// all previous declarations do not evaluate to true.\n///\n/// # Example\n///\n/// ```\n/// #![feature(cfg_match)]\n///\n/// cfg_match! {\n/// cfg(unix) =\u003e {\n/// fn foo() { /* unix specific functionality */ }\n/// }\n/// cfg(target_pointer_width = \"32\") =\u003e {\n/// fn foo() { /* non-unix, 32-bit functionality */ }\n/// }\n/// _ =\u003e {\n/// fn foo() { /* fallback implementation */ }\n/// }\n/// }\n/// ```\n#[cfg(bootstrap)]\n#[unstable(feature = \"cfg_match\", issue = \"115585\")]\n#[rustc_diagnostic_item = \"cfg_match\"]\npub macro cfg_match {\n // with a final wildcard\n (\n $(cfg($initial_meta:meta) =\u003e { $($initial_tokens:tt)* })+\n _ =\u003e { $($extra_tokens:tt)* }\n ) =\u003e {\n cfg_match! {\n @__items ();\n $((($initial_meta) ($($initial_tokens)*)),)+\n (() ($($extra_tokens)*)),\n }\n },\n\n // without a final wildcard\n (\n $(cfg($extra_meta:meta) =\u003e { $($extra_tokens:tt)* })*\n ) =\u003e {\n cfg_match! {\n @__items ();\n $((($extra_meta) ($($extra_tokens)*)),)*\n }\n },\n\n // Internal and recursive macro to emit all the items\n //\n // Collects all the previous cfgs in a list at the beginning, so they can be\n // negated. After the semicolon is all the remaining items.\n (@__items ($($_:meta,)*);) =\u003e {},\n (\n @__items ($($no:meta,)*);\n (($($yes:meta)?) ($($tokens:tt)*)),\n $($rest:tt,)*\n ) =\u003e {\n // Emit all items within one block, applying an appropriate #[cfg]. The\n // #[cfg] will require all `$yes` matchers specified and must also negate\n // all previous matchers.\n #[cfg(all(\n $($yes,)?\n not(any($($no),*))\n ))]\n cfg_match! { @__identity $($tokens)* }\n\n // Recurse to emit all other items in `$rest`, and when we do so add all\n // our `$yes` matchers to the list of `$no` matchers as future emissions\n // will have to negate everything we just matched as well.\n cfg_match! {\n @__items ($($no,)* $($yes,)?);\n $($rest,)*\n }\n },\n\n // Internal macro to make __apply work out right for different match types,\n // because of how macros match/expand stuff.\n (@__identity $($tokens:tt)*) =\u003e {\n $($tokens)*\n }\n}" - }, - "debug_assert": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert", - "File": "mod.rs", - "Line": 349, - "StartOffset": 12102, - "EndOffset": 14084, - "Content": "/// Asserts that a boolean expression is `true` at runtime.\n///\n/// This will invoke the [`panic!`] macro if the provided expression cannot be\n/// evaluated to `true` at runtime.\n///\n/// Like [`assert!`], this macro also has a second version, where a custom panic\n/// message can be provided.\n///\n/// # Uses\n///\n/// Unlike [`assert!`], `debug_assert!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert!` is always type checked.\n///\n/// An unchecked assertion allows a program in an inconsistent state to keep\n/// running, which might have unexpected consequences but does not introduce\n/// unsafety as long as this only happens in safe code. The performance cost\n/// of assertions, however, is not measurable in general. Replacing [`assert!`]\n/// with `debug_assert!` is thus only encouraged after thorough profiling, and\n/// more importantly, only in safe code!\n///\n/// # Examples\n///\n/// ```\n/// // the panic message for these assertions is the stringified value of the\n/// // expression given.\n/// debug_assert!(true);\n///\n/// fn some_expensive_computation() -\u003e bool { true } // a very simple function\n/// debug_assert!(some_expensive_computation());\n///\n/// // assert with a custom message\n/// let x = true;\n/// debug_assert!(x, \"x wasn't true!\");\n///\n/// let a = 3; let b = 27;\n/// debug_assert!(a + b == 30, \"a = {}, b = {}\", a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_diagnostic_item = \"debug_assert_macro\"]\n#[allow_internal_unstable(edition_panic)]\nmacro_rules! debug_assert {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert!($($arg)*);\n }\n };\n}" - }, - "debug_assert_eq": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_eq", - "File": "mod.rs", - "Line": 402, - "StartOffset": 14086, - "EndOffset": 15111, - "Content": "/// Asserts that two expressions are equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_eq!`], `debug_assert_eq!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_eq!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_eq!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 1 + 2;\n/// debug_assert_eq!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_eq_macro\")]\nmacro_rules! debug_assert_eq {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_eq!($($arg)*);\n }\n };\n}" - }, - "debug_assert_matches": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_matches", - "File": "mod.rs", - "Line": 462, - "StartOffset": 16145, - "EndOffset": 18362, - "Content": "/// Asserts that an expression matches the provided pattern.\n///\n/// This macro is generally preferable to `debug_assert!(matches!(value, pattern))`, because it can\n/// print the debug representation of the actual value shape that did not meet expectations. In\n/// contrast, using [`debug_assert!`] will only print that expectations were not met, but not why.\n///\n/// The pattern syntax is exactly the same as found in a match arm and the `matches!` macro. The\n/// optional if guard can be used to add additional checks that must be true for the matched value,\n/// otherwise this macro will panic.\n///\n/// On panic, this macro will print the value of the expression with its debug representation.\n///\n/// Like [`assert!`], this macro has a second form, where a custom panic message can be provided.\n///\n/// Unlike [`assert_matches!`], `debug_assert_matches!` statements are only enabled in non optimized\n/// builds by default. An optimized build will not execute `debug_assert_matches!` statements unless\n/// `-C debug-assertions` is passed to the compiler. This makes `debug_assert_matches!` useful for\n/// checks that are too expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_matches!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// #![feature(assert_matches)]\n///\n/// use std::assert_matches::debug_assert_matches;\n///\n/// let a = Some(345);\n/// let b = Some(56);\n/// debug_assert_matches!(a, Some(_));\n/// debug_assert_matches!(b, Some(_));\n///\n/// debug_assert_matches!(a, Some(345));\n/// debug_assert_matches!(a, Some(345) | None);\n///\n/// // debug_assert_matches!(a, None); // panics\n/// // debug_assert_matches!(b, Some(345)); // panics\n/// // debug_assert_matches!(b, Some(345) | None); // panics\n///\n/// debug_assert_matches!(a, Some(x) if x \u003e 100);\n/// // debug_assert_matches!(a, Some(x) if x \u003c 100); // panics\n/// ```\n#[unstable(feature = \"assert_matches\", issue = \"82775\")]\n#[allow_internal_unstable(assert_matches)]\n#[rustc_macro_transparency = \"semitransparent\"]\npub macro debug_assert_matches($($arg:tt)*) {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_matches::assert_matches!($($arg)*);\n }\n}" - }, - "debug_assert_ne": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "debug_assert_ne", - "File": "mod.rs", - "Line": 432, - "StartOffset": 15113, - "EndOffset": 16143, - "Content": "/// Asserts that two expressions are not equal to each other.\n///\n/// On panic, this macro will print the values of the expressions with their\n/// debug representations.\n///\n/// Unlike [`assert_ne!`], `debug_assert_ne!` statements are only enabled in non\n/// optimized builds by default. An optimized build will not execute\n/// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the\n/// compiler. This makes `debug_assert_ne!` useful for checks that are too\n/// expensive to be present in a release build but may be helpful during\n/// development. The result of expanding `debug_assert_ne!` is always type checked.\n///\n/// # Examples\n///\n/// ```\n/// let a = 3;\n/// let b = 2;\n/// debug_assert_ne!(a, b);\n/// ```\n#[macro_export]\n#[stable(feature = \"assert_ne\", since = \"1.13.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"debug_assert_ne_macro\")]\nmacro_rules! debug_assert_ne {\n ($($arg:tt)*) =\u003e {\n if $crate::cfg!(debug_assertions) {\n $crate::assert_ne!($($arg)*);\n }\n };\n}" - }, - "matches": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "matches", - "File": "mod.rs", - "Line": 513, - "StartOffset": 18364, - "EndOffset": 19370, - "Content": "/// Returns whether the given expression matches the provided pattern.\n///\n/// The pattern syntax is exactly the same as found in a match arm. The optional if guard can be\n/// used to add additional checks that must be true for the matched value, otherwise this macro will\n/// return `false`.\n///\n/// When testing that a value matches a pattern, it's generally preferable to use\n/// [`assert_matches!`] as it will print the debug representation of the value if the assertion\n/// fails.\n///\n/// # Examples\n///\n/// ```\n/// let foo = 'f';\n/// assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));\n///\n/// let bar = Some(4);\n/// assert!(matches!(bar, Some(x) if x \u003e 2));\n/// ```\n#[macro_export]\n#[stable(feature = \"matches_macro\", since = \"1.42.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"matches_macro\")]\nmacro_rules! matches {\n ($expression:expr, $pattern:pat $(if $guard:expr)? $(,)?) =\u003e {\n match $expression {\n $pattern $(if $guard)? =\u003e true,\n _ =\u003e false\n }\n };\n}" - }, - "panic": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "panic", - "File": "mod.rs", - "Line": 0, - "StartOffset": 0, - "EndOffset": 433, - "Content": "#[doc = include_str!(\"panic.md\")]\n#[macro_export]\n#[rustc_builtin_macro(core_panic)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"core\", since = \"1.6.0\")]\n#[rustc_diagnostic_item = \"core_panic_macro\"]\nmacro_rules! panic {\n // Expands to either `$crate::panic::panic_2015` or `$crate::panic::panic_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" - }, - "r#try": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "r#try", - "File": "mod.rs", - "Line": 544, - "StartOffset": 19372, - "EndOffset": 22027, - "Content": "/// Unwraps a result or propagates its error.\n///\n/// The [`?` operator][propagating-errors] was added to replace `try!`\n/// and should be used instead. Furthermore, `try` is a reserved word\n/// in Rust 2018, so if you must use it, you will need to use the\n/// [raw-identifier syntax][ris]: `r#try`.\n///\n/// [propagating-errors]: https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#a-shortcut-for-propagating-errors-the--operator\n/// [ris]: https://doc.rust-lang.org/nightly/rust-by-example/compatibility/raw_identifiers.html\n///\n/// `try!` matches the given [`Result`]. In case of the `Ok` variant, the\n/// expression has the value of the wrapped value.\n///\n/// In case of the `Err` variant, it retrieves the inner error. `try!` then\n/// performs conversion using `From`. This provides automatic conversion\n/// between specialized errors and more general ones. The resulting\n/// error is then immediately returned.\n///\n/// Because of the early return, `try!` can only be used in functions that\n/// return [`Result`].\n///\n/// # Examples\n///\n/// ```\n/// use std::io;\n/// use std::fs::File;\n/// use std::io::prelude::*;\n///\n/// enum MyError {\n/// FileWriteError\n/// }\n///\n/// impl From\u003cio::Error\u003e for MyError {\n/// fn from(e: io::Error) -\u003e MyError {\n/// MyError::FileWriteError\n/// }\n/// }\n///\n/// // The preferred method of quick returning Errors\n/// fn write_to_file_question() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = File::create(\"my_best_friends.txt\")?;\n/// file.write_all(b\"This is a list of my best friends.\")?;\n/// Ok(())\n/// }\n///\n/// // The previous method of quick returning Errors\n/// fn write_to_file_using_try() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// r#try!(file.write_all(b\"This is a list of my best friends.\"));\n/// Ok(())\n/// }\n///\n/// // This is equivalent to:\n/// fn write_to_file_using_match() -\u003e Result\u003c(), MyError\u003e {\n/// let mut file = r#try!(File::create(\"my_best_friends.txt\"));\n/// match file.write_all(b\"This is a list of my best friends.\") {\n/// Ok(v) =\u003e v,\n/// Err(e) =\u003e return Err(From::from(e)),\n/// }\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[deprecated(since = \"1.39.0\", note = \"use the `?` operator instead\")]\n#[doc(alias = \"?\")]\nmacro_rules! r#try {\n ($expr:expr $(,)?) =\u003e {\n match $expr {\n $crate::result::Result::Ok(val) =\u003e val,\n $crate::result::Result::Err(err) =\u003e {\n return $crate::result::Result::Err($crate::convert::From::from(err));\n }\n }\n };\n}" - }, - "todo": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "todo", - "File": "mod.rs", - "Line": 906, - "StartOffset": 30913, - "EndOffset": 33244, - "Content": "/// Indicates unfinished code.\n///\n/// This can be useful if you are prototyping and just\n/// want a placeholder to let your code pass type analysis.\n///\n/// The difference between [`unimplemented!`] and `todo!` is that while `todo!` conveys\n/// an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `todo!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Here's an example of some in-progress code. We have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` on one of our types, but we also want to work on\n/// just `bar()` first. In order for our code to compile, we need to implement\n/// `baz()` and `qux()`, so we can use `todo!`:\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // Let's not worry about implementing baz() for now\n/// todo!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We can add a message to todo! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not yet implemented: MyStruct is not yet quxable'\".\n/// todo!(\"MyStruct is not yet quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n///\n/// // We aren't even using baz() or qux(), so this is fine.\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"todo_macro\", since = \"1.40.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"todo_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! todo {\n () =\u003e {\n $crate::panicking::panic(\"not yet implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not yet implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" - }, - "unimplemented": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "unimplemented", - "File": "mod.rs", - "Line": 819, - "StartOffset": 28167, - "EndOffset": 30911, - "Content": "/// Indicates unimplemented code by panicking with a message of \"not implemented\".\n///\n/// This allows your code to type-check, which is useful if you are prototyping or\n/// implementing a trait that requires multiple methods which you don't plan to use all of.\n///\n/// The difference between `unimplemented!` and [`todo!`] is that while `todo!`\n/// conveys an intent of implementing the functionality later and the message is \"not yet\n/// implemented\", `unimplemented!` makes no such claims. Its message is \"not implemented\".\n///\n/// Also, some IDEs will mark `todo!`s.\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unimplemented!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// [`todo!`]: crate::todo\n///\n/// # Examples\n///\n/// Say we have a trait `Foo`:\n///\n/// ```\n/// trait Foo {\n/// fn bar(\u0026self) -\u003e u8;\n/// fn baz(\u0026self);\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// }\n/// ```\n///\n/// We want to implement `Foo` for 'MyStruct', but for some reason it only makes sense\n/// to implement the `bar()` function. `baz()` and `qux()` will still need to be defined\n/// in our implementation of `Foo`, but we can use `unimplemented!` in their definitions\n/// to allow our code to compile.\n///\n/// We still want to have our program stop running if the unimplemented methods are\n/// reached.\n///\n/// ```\n/// # trait Foo {\n/// # fn bar(\u0026self) -\u003e u8;\n/// # fn baz(\u0026self);\n/// # fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e;\n/// # }\n/// struct MyStruct;\n///\n/// impl Foo for MyStruct {\n/// fn bar(\u0026self) -\u003e u8 {\n/// 1 + 1\n/// }\n///\n/// fn baz(\u0026self) {\n/// // It makes no sense to `baz` a `MyStruct`, so we have no logic here\n/// // at all.\n/// // This will display \"thread 'main' panicked at 'not implemented'\".\n/// unimplemented!();\n/// }\n///\n/// fn qux(\u0026self) -\u003e Result\u003cu64, ()\u003e {\n/// // We have some logic here,\n/// // We can add a message to unimplemented! to display our omission.\n/// // This will display:\n/// // \"thread 'main' panicked at 'not implemented: MyStruct isn't quxable'\".\n/// unimplemented!(\"MyStruct isn't quxable\");\n/// }\n/// }\n///\n/// fn main() {\n/// let s = MyStruct;\n/// s.bar();\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unimplemented_macro\")]\n#[allow_internal_unstable(panic_internals)]\nmacro_rules! unimplemented {\n () =\u003e {\n $crate::panicking::panic(\"not implemented\")\n };\n ($($arg:tt)+) =\u003e {\n $crate::panic!(\"not implemented: {}\", $crate::format_args!($($arg)+))\n };\n}" - }, - "unreachable": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "unreachable", - "File": "mod.rs", - "Line": 754, - "StartOffset": 26126, - "EndOffset": 28165, - "Content": "/// Indicates unreachable code.\n///\n/// This is useful any time that the compiler can't determine that some code is unreachable. For\n/// example:\n///\n/// * Match arms with guard conditions.\n/// * Loops that dynamically terminate.\n/// * Iterators that dynamically terminate.\n///\n/// If the determination that the code is unreachable proves incorrect, the\n/// program immediately terminates with a [`panic!`].\n///\n/// The unsafe counterpart of this macro is the [`unreachable_unchecked`] function, which\n/// will cause undefined behavior if the code is reached.\n///\n/// [`unreachable_unchecked`]: crate::hint::unreachable_unchecked\n///\n/// # Panics\n///\n/// This will always [`panic!`] because `unreachable!` is just a shorthand for `panic!` with a\n/// fixed, specific message.\n///\n/// Like `panic!`, this macro has a second form for displaying custom values.\n///\n/// # Examples\n///\n/// Match arms:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn foo(x: Option\u003ci32\u003e) {\n/// match x {\n/// Some(n) if n \u003e= 0 =\u003e println!(\"Some(Non-negative)\"),\n/// Some(n) if n \u003c 0 =\u003e println!(\"Some(Negative)\"),\n/// Some(_) =\u003e unreachable!(), // compile error if commented out\n/// None =\u003e println!(\"None\")\n/// }\n/// }\n/// ```\n///\n/// Iterators:\n///\n/// ```\n/// # #[allow(dead_code)]\n/// fn divide_by_three(x: u32) -\u003e u32 { // one of the poorest implementations of x/3\n/// for i in 0.. {\n/// if 3*i \u003c i { panic!(\"u32 overflow\"); }\n/// if x \u003c 3*i { return i-1; }\n/// }\n/// unreachable!(\"The loop should always return\");\n/// }\n/// ```\n#[macro_export]\n#[rustc_builtin_macro(unreachable)]\n#[allow_internal_unstable(edition_panic)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"unreachable_macro\")]\nmacro_rules! unreachable {\n // Expands to either `$crate::panic::unreachable_2015` or `$crate::panic::unreachable_2021`\n // depending on the edition of the caller.\n ($($arg:tt)*) =\u003e {\n /* compiler built-in */\n };\n}" - }, - "write": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "write", - "File": "mod.rs", - "Line": 621, - "StartOffset": 22029, - "EndOffset": 25045, - "Content": "/// Writes formatted data into a buffer.\n///\n/// This macro accepts a 'writer', a format string, and a list of arguments. Arguments will be\n/// formatted according to the specified format string and the result will be passed to the writer.\n/// The writer may be any value with a `write_fmt` method; generally this comes from an\n/// implementation of either the [`fmt::Write`] or the [`io::Write`] trait. The macro\n/// returns whatever the `write_fmt` method returns; commonly a [`fmt::Result`], or an\n/// [`io::Result`].\n///\n/// See [`std::fmt`] for more information on the format string syntax.\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n/// [`fmt::Write`]: crate::fmt::Write\n/// [`io::Write`]: ../std/io/trait.Write.html\n/// [`fmt::Result`]: crate::fmt::Result\n/// [`io::Result`]: ../std/io/type.Result.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::Write;\n///\n/// fn main() -\u003e std::io::Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// write!(\u0026mut w, \"test\")?;\n/// write!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(w, b\"testformatted arguments\");\n/// Ok(())\n/// }\n/// ```\n///\n/// A module can import both `std::fmt::Write` and `std::io::Write` and call `write!` on objects\n/// implementing either, as objects do not typically implement both. However, the module must\n/// avoid conflict between the trait names, such as by importing them as `_` or otherwise renaming\n/// them:\n///\n/// ```\n/// use std::fmt::Write as _;\n/// use std::io::Write as _;\n///\n/// fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n/// let mut s = String::new();\n/// let mut v = Vec::new();\n///\n/// write!(\u0026mut s, \"{} {}\", \"abc\", 123)?; // uses fmt::Write::write_fmt\n/// write!(\u0026mut v, \"s = {:?}\", s)?; // uses io::Write::write_fmt\n/// assert_eq!(v, b\"s = \\\"abc 123\\\"\");\n/// Ok(())\n/// }\n/// ```\n///\n/// If you also need the trait names themselves, such as to implement one or both on your types,\n/// import the containing module and then name them with a prefix:\n///\n/// ```\n/// # #![allow(unused_imports)]\n/// use std::fmt::{self, Write as _};\n/// use std::io::{self, Write as _};\n///\n/// struct Example;\n///\n/// impl fmt::Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n/// ```\n///\n/// Note: This macro can be used in `no_std` setups as well.\n/// In a `no_std` setup you are responsible for the implementation details of the components.\n///\n/// ```no_run\n/// use core::fmt::Write;\n///\n/// struct Example;\n///\n/// impl Write for Example {\n/// fn write_str(\u0026mut self, _s: \u0026str) -\u003e core::fmt::Result {\n/// unimplemented!();\n/// }\n/// }\n///\n/// let mut m = Example{};\n/// write!(\u0026mut m, \"Hello World\").expect(\"Not written\");\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"write_macro\")]\nmacro_rules! write {\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args!($($arg)*))\n };\n}" - }, - "writeln": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::macros", - "Name": "writeln", - "File": "mod.rs", - "Line": 716, - "StartOffset": 25047, - "EndOffset": 26124, - "Content": "/// Writes formatted data into a buffer, with a newline appended.\n///\n/// On all platforms, the newline is the LINE FEED character (`\\n`/`U+000A`) alone\n/// (no additional CARRIAGE RETURN (`\\r`/`U+000D`).\n///\n/// For more information, see [`write!`]. For information on the format string syntax, see\n/// [`std::fmt`].\n///\n/// [`std::fmt`]: ../std/fmt/index.html\n///\n/// # Examples\n///\n/// ```\n/// use std::io::{Write, Result};\n///\n/// fn main() -\u003e Result\u003c()\u003e {\n/// let mut w = Vec::new();\n/// writeln!(\u0026mut w)?;\n/// writeln!(\u0026mut w, \"test\")?;\n/// writeln!(\u0026mut w, \"formatted {}\", \"arguments\")?;\n///\n/// assert_eq!(\u0026w[..], \"\\ntest\\nformatted arguments\\n\".as_bytes());\n/// Ok(())\n/// }\n/// ```\n#[macro_export]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[cfg_attr(not(test), rustc_diagnostic_item = \"writeln_macro\")]\n#[allow_internal_unstable(format_args_nl)]\nmacro_rules! writeln {\n ($dst:expr $(,)?) =\u003e {\n $crate::write!($dst, \"\\n\")\n };\n ($dst:expr, $($arg:tt)*) =\u003e {\n $dst.write_fmt($crate::format_args_nl!($($arg)*))\n };\n}" - } - }, - "Types": {}, - "Vars": {} - }, - "core::marker": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::marker", - "Functions": {}, - "Types": { - "PhantomData": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "marker.rs", - "Line": 773, - "StartOffset": 29503, - "EndOffset": 29514, - "Content": "PhantomData" - }, - "Send": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "marker.rs", - "Line": 89, - "StartOffset": 3423, - "EndOffset": 3427, - "Content": "Send" - }, - "Sized": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sized", - "File": "marker.rs", - "Line": 153, - "StartOffset": 5644, - "EndOffset": 5649, - "Content": "Sized" - }, - "Sync": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "marker.rs", - "Line": 618, - "StartOffset": 24196, - "EndOffset": 24200, - "Content": "Sync" - } - }, - "Vars": {} - }, - "core::ops::deref": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::ops::deref", - "Functions": {}, - "Types": { - "Deref": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::deref", - "Name": "Deref", - "File": "deref.rs", - "Line": 137, - "StartOffset": 6162, - "EndOffset": 6167, - "Content": "Deref" - }, - "DerefMut": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::deref", - "Name": "DerefMut", - "File": "deref.rs", - "Line": 267, - "StartOffset": 10896, - "EndOffset": 10904, - "Content": "DerefMut" - } - }, - "Vars": {} - }, - "core::ops::function": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::ops::function", - "Functions": {}, - "Types": { - "FnOnce": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "function.rs", - "Line": 241, - "StartOffset": 8779, - "EndOffset": 8785, - "Content": "FnOnce" - } - }, - "Vars": {} - }, - "core::option": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::option", - "Functions": { - "and_then": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "option.rs", - "Line": 1446, - "StartOffset": 51579, - "EndOffset": 51587, - "Content": "and_then" - }, - "as_deref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_deref", - "File": "option.rs", - "Line": 1302, - "StartOffset": 47161, - "EndOffset": 47169, - "Content": "as_deref" - }, - "as_mut": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "option.rs", - "Line": 727, - "StartOffset": 27669, - "EndOffset": 27675, - "Content": "as_mut" - }, - "as_ref": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "option.rs", - "Line": 705, - "StartOffset": 27113, - "EndOffset": 27119, - "Content": "as_ref" - }, - "clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "File": "option.rs", - "Line": 2036, - "StartOffset": 68534, - "EndOffset": 68539, - "Content": "clone" - }, - "get_or_insert_with": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "option.rs", - "Line": 1690, - "StartOffset": 58420, - "EndOffset": 58438, - "Content": "get_or_insert_with" - }, - "is_none": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "option.rs", - "Line": 650, - "StartOffset": 25048, - "EndOffset": 25055, - "Content": "is_none" - }, - "is_some": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_some", - "File": "option.rs", - "Line": 606, - "StartOffset": 23711, - "EndOffset": 23718, - "Content": "is_some" - }, - "map": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "option.rs", - "Line": 1113, - "StartOffset": 41654, - "EndOffset": 41657, - "Content": "map" - }, - "or_else": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "option.rs", - "Line": 1545, - "StartOffset": 54412, - "EndOffset": 54419, - "Content": "or_else" - }, - "take": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "File": "option.rs", - "Line": 1725, - "StartOffset": 59465, - "EndOffset": 59469, - "Content": "take" - }, - "unwrap": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "option.rs", - "Line": 974, - "StartOffset": 37310, - "EndOffset": 37316, - "Content": "unwrap" - }, - "unwrap_or": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "option.rs", - "Line": 997, - "StartOffset": 38015, - "EndOffset": 38024, - "Content": "unwrap_or" - } - }, - "Types": { - "Option": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "option.rs", - "Line": 571, - "StartOffset": 22508, - "EndOffset": 22514, - "Content": "Option" - } - }, - "Vars": {} - }, - "core::panic::unwind_safe": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::panic::unwind_safe", - "Functions": {}, - "Types": { - "UnwindSafe": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::panic::unwind_safe", - "Name": "UnwindSafe", - "File": "unwind_safe.rs", - "Line": 89, - "StartOffset": 4467, - "EndOffset": 4477, - "Content": "UnwindSafe" - } - }, - "Vars": {} - }, - "core::result": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::result", - "Functions": { - "ok": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "File": "result.rs", - "Line": 657, - "StartOffset": 23908, - "EndOffset": 23910, - "Content": "ok" - } - }, - "Types": {}, - "Vars": {} - }, - "core::str": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::str", - "Functions": { - "chars": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "mod.rs", - "Line": 1039, - "StartOffset": 36275, - "EndOffset": 36280, - "Content": "chars" - }, - "len": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "mod.rs", - "Line": 139, - "StartOffset": 4744, - "EndOffset": 4747, - "Content": "len" - }, - "strip_prefix": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "mod.rs", - "Line": 2396, - "StartOffset": 83811, - "EndOffset": 83823, - "Content": "strip_prefix" - } - }, - "Types": {}, - "Vars": {} - }, - "core::str::traits": { - "IsMain": false, - "IsTest": false, - "PkgPath": "core::str::traits", - "Functions": {}, - "Types": { - "FromStr": { - "Exported": false, - "TypeKind": "interface", - "ModPath": "", - "PkgPath": "core::str::traits", - "Name": "FromStr", - "File": "traits.rs", - "Line": 797, - "StartOffset": 29100, - "EndOffset": 29107, - "Content": "FromStr" - } - }, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "any.rs": { - "Path": "any.rs" - }, - "borrow.rs": { - "Path": "borrow.rs" - }, - "boxed.rs": { - "Path": "boxed.rs" - }, - "builders.rs": { - "Path": "builders.rs" - }, - "cmp.rs": { - "Path": "cmp.rs" - }, - "collect.rs": { - "Path": "collect.rs" - }, - "convert.rs": { - "Path": "convert.rs" - }, - "default.rs": { - "Path": "default.rs" - }, - "deref.rs": { - "Path": "deref.rs" - }, - "function.rs": { - "Path": "function.rs" - }, - "iterator.rs": { - "Path": "iterator.rs" - }, - "marker.rs": { - "Path": "marker.rs" - }, - "methods.rs": { - "Path": "methods.rs" - }, - "mod.rs": { - "Path": "mod.rs" - }, - "option.rs": { - "Path": "option.rs" - }, - "result.rs": { - "Path": "result.rs" - }, - "str.rs": { - "Path": "str.rs" - }, - "string.rs": { - "Path": "string.rs" - }, - "sync.rs": { - "Path": "sync.rs" - }, - "traits.rs": { - "Path": "traits.rs" - }, - "unwind_safe.rs": { - "Path": "unwind_safe.rs" - } - } - }, - "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.get": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "hash_map.rs", - "Line": 84, - "StartOffset": 2421, - "EndOffset": 3065, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), None);\n /// ```\n #[inline]\n pub fn get\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c\u0026V\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 109, - "StartOffset": 3071, - "EndOffset": 3779, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some((\u00261, \u0026\"a\")));\n /// assert_eq!(map.get_key_value(\u00262), None);\n /// ```\n #[inline]\n pub fn get_key_value\u003cQ: ?Sized\u003e(\u0026self, k: \u0026Q) -\u003e Option\u003c(\u0026K, \u0026V)\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 134, - "StartOffset": 3785, - "EndOffset": 4478, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261) {\n /// *x = \"b\";\n /// }\n /// assert_eq!(map[\u00261], \"b\");\n /// ```\n #[inline]\n pub fn get_mut\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003c\u0026mut V\u003e\n where\n K: Borrow\u003cQ\u003e,\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.insert": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "File": "hash_map.rs", - "Line": 161, - "StartOffset": 4484, - "EndOffset": 5343, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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[\u002637], \"c\");\n /// ```\n #[inline]\n pub fn insert(\u0026mut self, k: K, v: V) -\u003e Option\u003cV\u003e {\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_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": 188, - "StartOffset": 5349, - "EndOffset": 6305, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003c\u0026str\u003e = 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) -\u003e IntoKeys\u003cK, V\u003e {\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": 219, - "StartOffset": 6311, - "EndOffset": 7278, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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\u003ci32\u003e = 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) -\u003e IntoValues\u003cK, V\u003e {\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": 250, - "StartOffset": 7284, - "EndOffset": 7988, - "Content": "impl\u003cK, V, S\u003e AHashMap\u003cK, V, S\u003e\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(\u00261), Some(\u0026\"a\"));\n /// assert_eq!(map.get(\u00262), 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(\u00261), Some(\"a\"));\n /// assert_eq!(map.remove(\u00261), None);\n /// ```\n #[inline]\n pub fn remove\u003cQ: ?Sized\u003e(\u0026mut self, k: \u0026Q) -\u003e Option\u003cV\u003e\n where\n K: Borrow\u003cQ\u003e,\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": 423, - "StartOffset": 11502, - "EndOffset": 11629, - "Content": "#[cfg(feature = \"serde\")]\nimpl\u003cK, V\u003e Serialize for AHashMap\u003cK, V\u003e\nwhere\n K: Serialize + Eq + Hash,\n V: Serialize,\n{\n fn serialize\u003cS: Serializer\u003e(\u0026self, serializer: S) -\u003e Result\u003cS::Ok, S::Error\u003e {\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": 59, - "StartOffset": 1703, - "EndOffset": 2000, - "Content": "impl\u003cK, V\u003e AHashMap\u003cK, V, RandomState\u003e {\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) -\u003e 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" - } - } - }, - "Debug\u003cAHashMap\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Debug\u003cAHashMap\u003e.fmt", - "File": "hash_map.rs", - "Line": 341, - "StartOffset": 9170, - "EndOffset": 9256, - "Content": "impl\u003cK, V, S\u003e Debug for AHashMap\u003cK, V, S\u003e\nwhere\n K: Debug,\n V: Debug,\n S: BuildHasher,\n{\n fn fmt(\u0026self, fmt: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n self.0.fmt(fmt)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Deref\u003cAHashMap\u003e.deref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Deref\u003cAHashMap\u003e.deref", - "File": "hash_map.rs", - "Line": 279, - "StartOffset": 8076, - "EndOffset": 8132, - "Content": "impl\u003cK, V, S\u003e Deref for AHashMap\u003cK, V, S\u003e {\n type Target = HashMap\u003cK, V, S\u003e;\n fn deref(\u0026self) -\u003e \u0026Self::Target {\n \u0026self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "DerefMut\u003cAHashMap\u003e.deref_mut": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "DerefMut\u003cAHashMap\u003e.deref_mut", - "File": "hash_map.rs", - "Line": 285, - "StartOffset": 8187, - "EndOffset": 8259, - "Content": "impl\u003cK, V, S\u003e DerefMut for AHashMap\u003cK, V, S\u003e {\n fn deref_mut(\u0026mut self) -\u003e \u0026mut Self::Target {\n \u0026mut self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Eq.expecting": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Eq.expecting", - "File": "hash_map.rs", - "Line": 451, - "StartOffset": 12432, - "EndOffset": 12559, - "Content": "impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn expecting(\u0026self, formatter: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n formatter.write_str(\"a map\")\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "Eq" - } - } - }, - "Eq.visit_map": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Eq.visit_map", - "File": "hash_map.rs", - "Line": 455, - "StartOffset": 12573, - "EndOffset": 12981, - "Content": "impl\u003c'a, 'de, K, V\u003e Visitor\u003c'de\u003e for MapInPlaceVisitor\u003c'a, K, V\u003e\n where\n K: Deserialize\u003c'de\u003e + Eq + Hash,\n V: Deserialize\u003c'de\u003e,\n {\n type Value = ();\n\n fn visit_map\u003cA\u003e(self, mut map: A) -\u003e Result\u003cSelf::Value, A::Error\u003e\n where\n A: MapAccess\u003c'de\u003e,\n {\n self.0.clear();\n self.0.reserve(map.size_hint().unwrap_or(0).min(4096));\n\n while let Some((key, value)) = map.next_entry()? {\n self.0.insert(key, value);\n }\n\n Ok(())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "", - "PkgPath": "core::cmp", - "Name": "Eq" - } - } - }, - "Extend\u003cAHashMap\u003e.extend": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "hash_map.rs", - "Line": 400, - "StartOffset": 10712, - "EndOffset": 10831, - "Content": "impl\u003c'a, K, V, S\u003e Extend\u003c(\u0026'a K, \u0026'a V)\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Copy + 'a,\n V: Copy + 'a,\n S: BuildHasher,\n{\n #[inline]\n #[inline]\n fn extend\u003cT: IntoIterator\u003cItem = (\u0026'a K, \u0026'a V)\u003e\u003e(\u0026mut 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" - } - } - }, - "Into\u003cAHashMap\u003e.into": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Into\u003cAHashMap\u003e.into", - "File": "hash_map.rs", - "Line": 47, - "StartOffset": 1311, - "EndOffset": 1384, - "Content": "impl\u003cK, V\u003e Into\u003cHashMap\u003cK, V, crate::RandomState\u003e\u003e for AHashMap\u003cK, V\u003e {\n fn into(self) -\u003e HashMap\u003cK, V, crate::RandomState\u003e {\n self.0\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "IntoIterator\u003cAHashMap\u003e.into_iter": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "IntoIterator\u003cAHashMap\u003e.into_iter", - "File": "hash_map.rs", - "Line": 378, - "StartOffset": 10278, - "EndOffset": 10349, - "Content": "impl\u003cK, V, S\u003e IntoIterator for AHashMap\u003cK, V, S\u003e {\n type Item = (K, V);\n type IntoIter = hash_map::IntoIter\u003cK, V\u003e;\n fn into_iter(self) -\u003e Self::IntoIter {\n self.0.into_iter()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "PartialEq\u003cAHashMap\u003e.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "PartialEq\u003cAHashMap\u003e.eq", - "File": "hash_map.rs", - "Line": 303, - "StartOffset": 8473, - "EndOffset": 8556, - "Content": "impl\u003cK, V, S\u003e PartialEq for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,\n{\n fn eq(\u0026self, other: \u0026AHashMap\u003cK, V, S\u003e) -\u003e bool {\n self.0.eq(\u0026other.0)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap" - } - } - }, - "Sized\u003cAHashMap\u003e.index": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Sized\u003cAHashMap\u003e.index", - "File": "hash_map.rs", - "Line": 324, - "StartOffset": 8818, - "EndOffset": 9064, - "Content": "impl\u003cK, Q: ?Sized, V, S\u003e Index\u003c\u0026Q\u003e for AHashMap\u003cK, V, S\u003e\nwhere\n K: Eq + Hash + Borrow\u003cQ\u003e,\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(\u0026self, key: \u0026Q) -\u003e \u0026V {\n self.0.index(key)\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": 17, - "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\u003cK, V, S = crate::RandomState\u003e(HashMap\u003cK, V, S\u003e);", - "Methods": { - "deref": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Deref\u003cAHashMap\u003e.deref" - }, - "deref_mut": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "DerefMut\u003cAHashMap\u003e.deref_mut" - }, - "eq": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "PartialEq\u003cAHashMap\u003e.eq" - }, - "extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend" - }, - "fmt": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Debug\u003cAHashMap\u003e.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": "Sized\u003cAHashMap\u003e.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": "Into\u003cAHashMap\u003e.into" - }, - "into_iter": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "IntoIterator\u003cAHashMap\u003e.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" - } - } - }, - "bytes@1.6.0": { - "Language": "rust", - "Version": "1.6.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.6.0", - "PkgPath": "bytes::bytes", - "Name": "_split_off_must_use", - "File": "bytes.rs", - "Line": 1309, - "StartOffset": 36406, - "EndOffset": 36598, - "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.6.0", - "PkgPath": "bytes::bytes", - "Name": "_split_to_must_use", - "File": "bytes.rs", - "Line": 1299, - "StartOffset": 36214, - "EndOffset": 36404, - "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.6.0", - "PkgPath": "bytes::bytes", - "Name": "free_boxed_slice", - "File": "bytes.rs", - "Line": 1064, - "StartOffset": 28386, - "EndOffset": 28574, - "Content": "unsafe fn free_boxed_slice(buf: *mut u8, offset: *const u8, len: usize) {\n let cap = (offset as usize - buf as usize) + len;\n dealloc(buf, Layout::from_size_align(cap, 1).unwrap())\n}" - }, - "promotable_even_clone": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_clone", - "File": "bytes.rs", - "Line": 961, - "StartOffset": 25358, - "EndOffset": 25805, - "Content": "unsafe fn promotable_even_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 \u0026 !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.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_drop", - "File": "bytes.rs", - "Line": 1006, - "StartOffset": 26643, - "EndOffset": 27110, - "Content": "unsafe fn promotable_even_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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 \u0026 !KIND_MASK);\n free_boxed_slice(buf, ptr, len);\n }\n });\n}" - }, - "promotable_even_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_even_to_vec", - "File": "bytes.rs", - "Line": 1000, - "StartOffset": 26431, - "EndOffset": 26641, - "Content": "unsafe fn promotable_even_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| {\n ptr_map(shared.cast(), |addr| addr \u0026 !KIND_MASK)\n })\n}" - }, - "promotable_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_is_unique", - "File": "bytes.rs", - "Line": 1052, - "StartOffset": 28067, - "EndOffset": 28384, - "Content": "unsafe fn promotable_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 KIND_MASK;\n\n if kind == KIND_ARC {\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).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.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_clone", - "File": "bytes.rs", - "Line": 1021, - "StartOffset": 27112, - "EndOffset": 27498, - "Content": "unsafe fn promotable_odd_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Bytes {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_drop", - "File": "bytes.rs", - "Line": 1037, - "StartOffset": 27660, - "EndOffset": 28065, - "Content": "unsafe fn promotable_odd_drop(data: \u0026mut AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) {\n data.with_mut(|shared| {\n let shared = *shared;\n let kind = shared as usize \u0026 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_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_odd_to_vec", - "File": "bytes.rs", - "Line": 1033, - "StartOffset": 27500, - "EndOffset": 27658, - "Content": "unsafe fn promotable_odd_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n promotable_to_vec(data, ptr, len, |shared| shared.cast())\n}" - }, - "promotable_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "promotable_to_vec", - "File": "bytes.rs", - "Line": 974, - "StartOffset": 25807, - "EndOffset": 26429, - "Content": "unsafe fn promotable_to_vec(\n data: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const u8,\n len: usize,\n f: fn(*mut ()) -\u003e *mut u8,\n) -\u003e Vec\u003cu8\u003e {\n let shared = data.load(Ordering::Acquire);\n let kind = shared as usize \u0026 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 = (ptr as usize - buf as usize) + 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.6.0", - "PkgPath": "bytes::bytes", - "Name": "ptr_map", - "File": "bytes.rs", - "Line": 1287, - "StartOffset": 36002, - "EndOffset": 36194, - "Content": "#[cfg(not(miri))]\nfn ptr_map\u003cF\u003e(ptr: *mut u8, f: F) -\u003e *mut u8\nwhere\n F: FnOnce(usize) -\u003e usize,\n{\n let old_addr = ptr as usize;\n let new_addr = f(old_addr);\n new_addr as *mut u8\n}" - }, - "release_shared": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "release_shared", - "File": "bytes.rs", - "Line": 1238, - "StartOffset": 34070, - "EndOffset": 35436, - "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 // \u003e It is important to enforce any possible access to the object in one\n // \u003e thread (through an existing reference) to *happen before* deleting\n // \u003e the object in a different thread. This is achieved by a \"release\"\n // \u003e operation after dropping a reference (any access to the object\n // \u003e through this reference must obviously happened before), and an\n // \u003e \"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.6.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_arc", - "File": "bytes.rs", - "Line": 1151, - "StartOffset": 31070, - "EndOffset": 31416, - "Content": "unsafe fn shallow_clone_arc(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Bytes {\n let old_size = (*shared).ref_cnt.fetch_add(1, Ordering::Relaxed);\n\n if old_size \u003e usize::MAX \u003e\u003e 1 {\n crate::abort();\n }\n\n Bytes {\n ptr,\n len,\n data: AtomicPtr::new(shared as _),\n vtable: \u0026SHARED_VTABLE,\n }\n}" - }, - "shallow_clone_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shallow_clone_vec", - "File": "bytes.rs", - "Line": 1166, - "StartOffset": 31418, - "EndOffset": 34068, - "Content": "#[cold]\nunsafe fn shallow_clone_vec(\n atom: \u0026AtomicPtr\u003c()\u003e,\n ptr: *const (),\n buf: *mut u8,\n offset: *const u8,\n len: usize,\n) -\u003e Bytes {\n // If the buffer is still tracked in a `Vec\u003cu8\u003e`. 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 `\u0026mut 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 as usize - buf as usize) + 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 \u0026 KIND_MASK),\n \"internal: Box\u003cShared\u003e should have an aligned pointer\",\n );\n\n // Try compare \u0026 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) =\u003e {\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: \u0026SHARED_VTABLE,\n }\n }\n Err(actual) =\u003e {\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.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_clone", - "File": "bytes.rs", - "Line": 1101, - "StartOffset": 29509, - "EndOffset": 29686, - "Content": "unsafe fn shared_clone(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e 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.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_drop", - "File": "bytes.rs", - "Line": 1145, - "StartOffset": 30911, - "EndOffset": 31068, - "Content": "unsafe fn shared_drop(data: \u0026mut AtomicPtr\u003c()\u003e, _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.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_is_unique", - "File": "bytes.rs", - "Line": 1139, - "StartOffset": 30696, - "EndOffset": 30909, - "Content": "pub(crate) unsafe fn shared_is_unique(data: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n let shared = data.load(Ordering::Acquire);\n let ref_cnt = (*shared.cast::\u003cShared\u003e()).ref_cnt.load(Ordering::Relaxed);\n ref_cnt == 1\n}" - }, - "shared_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec", - "File": "bytes.rs", - "Line": 1135, - "StartOffset": 30536, - "EndOffset": 30694, - "Content": "unsafe fn shared_to_vec(data: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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.6.0", - "PkgPath": "bytes::bytes", - "Name": "shared_to_vec_impl", - "File": "bytes.rs", - "Line": 1106, - "StartOffset": 29688, - "EndOffset": 30534, - "Content": "unsafe fn shared_to_vec_impl(shared: *mut Shared, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\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 let buf = (*shared).buf;\n let cap = (*shared).cap;\n\n // Deallocate Shared\n drop(Box::from_raw(shared as *mut mem::ManuallyDrop\u003cShared\u003e));\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.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_clone", - "File": "bytes.rs", - "Line": 927, - "StartOffset": 24445, - "EndOffset": 24606, - "Content": "unsafe fn static_clone(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e 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.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_drop", - "File": "bytes.rs", - "Line": 941, - "StartOffset": 24825, - "EndOffset": 24938, - "Content": "unsafe fn static_drop(_: \u0026mut AtomicPtr\u003c()\u003e, _: *const u8, _: usize) {\n // nothing to drop for \u0026'static [u8]\n}" - }, - "static_is_unique": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_is_unique", - "File": "bytes.rs", - "Line": 937, - "StartOffset": 24763, - "EndOffset": 24823, - "Content": "fn static_is_unique(_: \u0026AtomicPtr\u003c()\u003e) -\u003e bool {\n false\n}" - }, - "static_to_vec": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "static_to_vec", - "File": "bytes.rs", - "Line": 932, - "StartOffset": 24608, - "EndOffset": 24761, - "Content": "unsafe fn static_to_vec(_: \u0026AtomicPtr\u003c()\u003e, ptr: *const u8, len: usize) -\u003e Vec\u003cu8\u003e {\n let slice = slice::from_raw_parts(ptr, len);\n slice.to_vec()\n}" - } - }, - "Types": { - "Bytes": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Bytes", - "File": "bytes.rs", - "Line": 18, - "StartOffset": 406, - "EndOffset": 4155, - "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\u003c[u8]\u003e`), 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\u003c()\u003e,\n vtable: \u0026'static Vtable,\n}" - }, - "Shared": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "Shared", - "File": "bytes.rs", - "Line": 1071, - "StartOffset": 28610, - "EndOffset": 28763, - "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.6.0", - "PkgPath": "bytes::bytes", - "Name": "Vtable", - "File": "bytes.rs", - "Line": 107, - "StartOffset": 4157, - "EndOffset": 4580, - "Content": "pub(crate) struct Vtable {\n /// fn(data, ptr, len)\n pub clone: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Bytes,\n /// fn(data, ptr, len)\n ///\n /// takes `Bytes` to value\n pub to_vec: unsafe fn(\u0026AtomicPtr\u003c()\u003e, *const u8, usize) -\u003e Vec\u003cu8\u003e,\n /// fn(data)\n pub is_unique: unsafe fn(\u0026AtomicPtr\u003c()\u003e) -\u003e bool,\n /// fn(data, ptr, len)\n pub drop: unsafe fn(\u0026mut AtomicPtr\u003c()\u003e, *const u8, usize),\n}" - } - }, - "Vars": { - "KIND_ARC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_ARC", - "File": "bytes.rs", - "Line": 1097, - "StartOffset": 29420, - "EndOffset": 29448, - "Content": "const KIND_ARC: usize = 0b0;" - }, - "KIND_MASK": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_MASK", - "File": "bytes.rs", - "Line": 1099, - "StartOffset": 29478, - "EndOffset": 29507, - "Content": "const KIND_MASK: usize = 0b1;" - }, - "KIND_VEC": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "KIND_VEC", - "File": "bytes.rs", - "Line": 1098, - "StartOffset": 29449, - "EndOffset": 29477, - "Content": "const KIND_VEC: usize = 0b1;" - }, - "PROMOTABLE_EVEN_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_EVEN_VTABLE", - "File": "bytes.rs", - "Line": 947, - "StartOffset": 24978, - "EndOffset": 25168, - "Content": "static PROMOTABLE_EVEN_VTABLE: Vtable = Vtable {\n clone: promotable_even_clone,\n to_vec: promotable_even_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_even_drop,\n};" - }, - "PROMOTABLE_ODD_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "PROMOTABLE_ODD_VTABLE", - "File": "bytes.rs", - "Line": 954, - "StartOffset": 25170, - "EndOffset": 25356, - "Content": "static PROMOTABLE_ODD_VTABLE: Vtable = Vtable {\n clone: promotable_odd_clone,\n to_vec: promotable_odd_to_vec,\n is_unique: promotable_is_unique,\n drop: promotable_odd_drop,\n};" - }, - "SHARED_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "SHARED_VTABLE", - "File": "bytes.rs", - "Line": 1090, - "StartOffset": 29268, - "EndOffset": 29418, - "Content": "static SHARED_VTABLE: Vtable = Vtable {\n clone: shared_clone,\n to_vec: shared_to_vec,\n is_unique: shared_is_unique,\n drop: shared_drop,\n};" - }, - "STATIC_VTABLE": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "bytes@1.6.0", - "PkgPath": "bytes::bytes", - "Name": "STATIC_VTABLE", - "File": "bytes.rs", - "Line": 920, - "StartOffset": 24294, - "EndOffset": 24443, - "Content": "const STATIC_VTABLE: Vtable = Vtable {\n clone: static_clone,\n to_vec: static_to_vec,\n is_unique: static_is_unique,\n drop: static_drop,\n};" - } - } - } - }, - "Dependencies": {}, - "Files": { - "bytes.rs": { - "Path": "bytes.rs" - } - } - }, - "faststr@0.2.19": { - "Language": "rust", - "Version": "0.2.19", - "Name": "faststr", - "Dir": "", - "Packages": { - "faststr": { - "IsMain": false, - "IsTest": false, - "PkgPath": "faststr", - "Functions": { - "AsRef\u003cFastStr\u003e.as_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cFastStr\u003e.as_ref", - "File": "lib.rs", - "Line": 286, - "StartOffset": 8952, - "EndOffset": 9023, - "Content": "impl AsRef\u003c[u8]\u003e for FastStr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n self.0.as_ref()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "AsRef\u003cRepr\u003e.as_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cRepr\u003e.as_ref", - "File": "lib.rs", - "Line": 757, - "StartOffset": 21270, - "EndOffset": 21656, - "Content": "impl AsRef\u003c[u8]\u003e for Repr {\n #[inline]\n #[inline]\n fn as_ref(\u0026self) -\u003e \u0026[u8] {\n match self {\n Self::Empty =\u003e \u0026[],\n Self::Bytes(bytes) =\u003e bytes.as_ref(),\n Self::ArcStr(arc_str) =\u003e arc_str.as_bytes(),\n Self::ArcString(arc_string) =\u003e arc_string.as_bytes(),\n Self::StaticStr(s) =\u003e s.as_bytes(),\n Self::Inline { len, buf } =\u003e \u0026buf[..*len],\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Borrow\u003cFastStr\u003e.borrow": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Borrow\u003cFastStr\u003e.borrow", - "File": "lib.rs", - "Line": 476, - "StartOffset": 13073, - "EndOffset": 13141, - "Content": "impl Borrow\u003cstr\u003e for FastStr {\n #[inline]\n #[inline]\n fn borrow(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Debug\u003cFastStr\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Debug\u003cFastStr\u003e.fmt", - "File": "lib.rs", - "Line": 410, - "StartOffset": 11204, - "EndOffset": 11320, - "Content": "impl fmt::Debug for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Debug::fmt(self.as_str(), f)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Deref\u003cFastStr\u003e.deref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Deref\u003cFastStr\u003e.deref", - "File": "lib.rs", - "Line": 302, - "StartOffset": 9194, - "EndOffset": 9261, - "Content": "impl Deref for FastStr {\n type Target = str;\n\n #[inline]\n #[inline]\n fn deref(\u0026self) -\u003e \u0026str {\n self.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Display\u003cFastStr\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Display\u003cFastStr\u003e.fmt", - "File": "lib.rs", - "Line": 417, - "StartOffset": 11360, - "EndOffset": 11478, - "Content": "impl fmt::Display for FastStr {\n #[inline]\n #[inline]\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter) -\u003e fmt::Result {\n fmt::Display::fmt(self.as_str(), f)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.as_str", - "File": "lib.rs", - "Line": 190, - "StartOffset": 5910, - "EndOffset": 6040, - "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(\u0026self) -\u003e \u0026str {\n self.0.as_str()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.deep_clone_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes", - "File": "lib.rs", - "Line": 241, - "StartOffset": 7415, - "EndOffset": 7879, - "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(\u0026self) -\u003e Self {\n Self(self.0.deep_clone_bytes())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.index": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.index", - "File": "lib.rs", - "Line": 220, - "StartOffset": 6680, - "EndOffset": 7055, - "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(\u0026self, start: usize, end: usize) -\u003e Self {\n Self(self.0.slice_ref(\u0026self.as_bytes()[start..end]))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.into_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes", - "File": "lib.rs", - "Line": 196, - "StartOffset": 6046, - "EndOffset": 6203, - "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) -\u003e Bytes {\n self.0.into_bytes()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.into_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_string", - "File": "lib.rs", - "Line": 230, - "StartOffset": 7061, - "EndOffset": 7409, - "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) -\u003e String {\n #[allow(deprecated)]\n self.0.into_string()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.is_empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.is_empty", - "File": "lib.rs", - "Line": 208, - "StartOffset": 6329, - "EndOffset": 6464, - "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(\u0026self) -\u003e bool {\n self.0.is_empty()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.len", - "File": "lib.rs", - "Line": 202, - "StartOffset": 6209, - "EndOffset": 6323, - "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(\u0026self) -\u003e usize {\n self.0.len()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr.slice_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref", - "File": "lib.rs", - "Line": 214, - "StartOffset": 6470, - "EndOffset": 6674, - "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 #[inline(always)]\n pub fn slice_ref(\u0026self, subset: \u0026str) -\u003e Self {\n Self(self.0.slice_ref(subset.as_bytes()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "FastStr::from_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "lib.rs", - "Line": 83, - "StartOffset": 2375, - "EndOffset": 2517, - "Content": "impl FastStr {\n /// Create a new `FastStr` from any type `T` that can be converted to a string slice\n /// (e.g., `String`, `\u0026str`, `Arc\u003cString\u003e`, `Arc\u003cstr\u003e`).\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) -\u003e Self {\n Self(Repr::from_string(s))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Hash\u003cFastStr\u003e.hash": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Hash\u003cFastStr\u003e.hash", - "File": "lib.rs", - "Line": 403, - "StartOffset": 11062, - "EndOffset": 11166, - "Content": "impl hash::Hash for FastStr {\n #[inline]\n #[inline]\n fn hash\u003cH: hash::Hasher\u003e(\u0026self, hasher: \u0026mut H) {\n self.as_str().hash(hasher)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Ord\u003cFastStr\u003e.cmp": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Ord\u003cFastStr\u003e.cmp", - "File": "lib.rs", - "Line": 389, - "StartOffset": 10770, - "EndOffset": 10876, - "Content": "impl Ord for FastStr {\n #[inline]\n #[inline]\n fn cmp(\u0026self, other: \u0026FastStr) -\u003e Ordering {\n self.as_str().cmp(other.as_str())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "PartialEq\u003cFastStr\u003e.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cFastStr\u003e.eq", - "File": "lib.rs", - "Line": 347, - "StartOffset": 9992, - "EndOffset": 10074, - "Content": "impl\u003c'a\u003e PartialEq\u003c\u0026'a str\u003e for FastStr {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026\u0026'a str) -\u003e bool {\n self == *other\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "PartialEq\u003cString\u003e.eq": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cString\u003e.eq", - "File": "lib.rs", - "Line": 382, - "StartOffset": 10657, - "EndOffset": 10739, - "Content": "impl\u003c'a\u003e PartialEq\u003cFastStr\u003e for \u0026'a String {\n #[inline]\n #[inline]\n fn eq(\u0026self, other: \u0026FastStr) -\u003e bool {\n *self == other\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String" - } - } - }, - "PartialOrd\u003cFastStr\u003e.partial_cmp": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp", - "File": "lib.rs", - "Line": 396, - "StartOffset": 10914, - "EndOffset": 11024, - "Content": "impl PartialOrd for FastStr {\n #[inline]\n #[inline]\n fn partial_cmp(\u0026self, other: \u0026FastStr) -\u003e Option\u003cOrdering\u003e {\n Some(self.cmp(other))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr" - } - } - }, - "Repr.as_str": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.as_str", - "File": "lib.rs", - "Line": 645, - "StartOffset": 17121, - "EndOffset": 17630, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn as_str(\u0026self) -\u003e \u0026str {\n match self {\n Self::Empty =\u003e \"\",\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { std::str::from_utf8_unchecked(bytes) },\n Self::ArcStr(arc_str) =\u003e arc_str,\n Self::ArcString(arc_string) =\u003e arc_string,\n Self::StaticStr(s) =\u003e s,\n Self::Inline { len, buf } =\u003e unsafe { std::str::from_utf8_unchecked(\u0026buf[..*len]) },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.deep_clone_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes", - "File": "lib.rs", - "Line": 689, - "StartOffset": 18794, - "EndOffset": 19433, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn deep_clone_bytes(\u0026self) -\u003e Self {\n match self {\n Self::Empty =\u003e Self::Empty,\n // Safety: this is guaranteed by the user when creating the `FastStr`.\n Self::Bytes(bytes) =\u003e unsafe { Self::new(std::str::from_utf8_unchecked(bytes)) },\n Self::ArcStr(arc_str) =\u003e Self::ArcStr(Arc::clone(arc_str)),\n Self::ArcString(arc_string) =\u003e Self::ArcString(Arc::clone(arc_string)),\n Self::StaticStr(s) =\u003e Self::StaticStr(s),\n Self::Inline { len, buf } =\u003e Self::Inline {\n len: *len,\n buf: *buf,\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.into_bytes": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_bytes", - "File": "lib.rs", - "Line": 675, - "StartOffset": 18250, - "EndOffset": 18788, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn into_bytes(self) -\u003e Bytes {\n match self {\n Self::Empty =\u003e Bytes::new(),\n Self::Bytes(bytes) =\u003e bytes,\n Self::ArcStr(arc_str) =\u003e Bytes::from(arc_str.as_bytes().to_vec()),\n Self::ArcString(arc_string) =\u003e {\n Bytes::from(Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone()))\n }\n Self::StaticStr(s) =\u003e Bytes::from_static(s.as_bytes()),\n Self::Inline { len, buf } =\u003e Bytes::from(buf[..len].to_vec()),\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.into_string": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_string", - "File": "lib.rs", - "Line": 658, - "StartOffset": 17636, - "EndOffset": 18244, - "Content": "impl Repr {\n #[inline]\n #[inline]\n #[deprecated]\n fn into_string(self) -\u003e String {\n match self {\n Self::Empty =\u003e String::new(),\n Self::Bytes(bytes) =\u003e unsafe { String::from_utf8_unchecked(bytes.into()) },\n Self::ArcStr(arc_str) =\u003e arc_str.to_string(),\n Self::ArcString(arc_string) =\u003e {\n Arc::try_unwrap(arc_string).unwrap_or_else(|arc| (*arc).clone())\n }\n Self::StaticStr(s) =\u003e s.to_string(),\n Self::Inline { len, buf } =\u003e unsafe {\n String::from_utf8_unchecked(buf[..len].to_vec())\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.is_empty": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.is_empty", - "File": "lib.rs", - "Line": 633, - "StartOffset": 16729, - "EndOffset": 17115, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn is_empty(\u0026self) -\u003e bool {\n match self {\n Self::Empty =\u003e true,\n Self::Bytes(bytes) =\u003e bytes.is_empty(),\n Self::ArcStr(arc_str) =\u003e arc_str.is_empty(),\n Self::ArcString(arc_string) =\u003e arc_string.is_empty(),\n Self::StaticStr(s) =\u003e s.is_empty(),\n Self::Inline { len, .. } =\u003e *len == 0,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.len": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.len", - "File": "lib.rs", - "Line": 621, - "StartOffset": 16369, - "EndOffset": 16723, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn len(\u0026self) -\u003e usize {\n match self {\n Self::Empty =\u003e 0,\n Self::Bytes(bytes) =\u003e bytes.len(),\n Self::ArcStr(arc_str) =\u003e arc_str.len(),\n Self::ArcString(arc_string) =\u003e arc_string.len(),\n Self::StaticStr(s) =\u003e s.len(),\n Self::Inline { len, .. } =\u003e *len,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "Repr.slice_ref": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.slice_ref", - "File": "lib.rs", - "Line": 705, - "StartOffset": 19439, - "EndOffset": 21234, - "Content": "impl Repr {\n #[inline]\n #[inline]\n fn slice_ref(\u0026self, subset: \u0026[u8]) -\u003e 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 \u003e= 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 \u003c= 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 =\u003e panic!(\"invalid slice ref, self is empty but subset is not\"),\n Repr::Bytes(b) =\u003e Self::Bytes(b.slice_ref(subset)),\n Repr::ArcStr(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::ArcString(s) =\u003e Self::Bytes(Bytes::copy_from_slice(\n s[sub_offset..sub_offset + sub_len].as_bytes(),\n )),\n Repr::StaticStr(s) =\u003e Self::StaticStr(unsafe {\n std::str::from_utf8_unchecked(\u0026s.as_bytes()[sub_offset..sub_offset + sub_len])\n }),\n Repr::Inline { len: _, buf } =\u003e Self::Inline {\n len: sub_len,\n buf: {\n let mut new_buf = [0; INLINE_CAP];\n new_buf[..sub_len].copy_from_slice(\u0026buf[sub_offset..sub_offset + sub_len]);\n new_buf\n },\n },\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr" - } - } - }, - "build_from_str_iter": { - "Exported": false, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "build_from_str_iter", - "File": "lib.rs", - "Line": 431, - "StartOffset": 11696, - "EndOffset": 12423, - "Content": "fn build_from_str_iter\u003cT\u003e(mut iter: impl Iterator\u003cItem = T\u003e) -\u003e FastStr\nwhere\n T: AsRef\u003cstr\u003e,\n String: iter::Extend\u003cT\u003e,\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 \u003e INLINE_CAP {\n let mut s = String::with_capacity(size + len);\n s.push_str(unsafe { core::str::from_utf8_unchecked(\u0026buf[..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.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "lib.rs", - "Line": 14, - "StartOffset": 295, - "EndOffset": 405, - "Content": "/// `FastStr` is a string type that try to avoid the cost of clone.\n#[derive(Clone)]\npub struct FastStr(Repr);", - "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cFastStr\u003e.as_ref" - }, - "as_str": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.as_str" - }, - "borrow": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Borrow\u003cFastStr\u003e.borrow" - }, - "cmp": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Ord\u003cFastStr\u003e.cmp" - }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.deep_clone_bytes" - }, - "deref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Deref\u003cFastStr\u003e.deref" - }, - "eq": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialEq\u003cFastStr\u003e.eq" - }, - "fmt": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Debug\u003cFastStr\u003e.fmt" - }, - "hash": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Hash\u003cFastStr\u003e.hash" - }, - "index": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.index" - }, - "into_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_bytes" - }, - "into_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.into_string" - }, - "is_empty": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.is_empty" - }, - "len": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.len" - }, - "partial_cmp": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "PartialOrd\u003cFastStr\u003e.partial_cmp" - }, - "slice_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr.slice_ref" - } - } - }, - "Repr": { - "Exported": false, - "TypeKind": "enum", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr", - "File": "lib.rs", - "Line": 542, - "StartOffset": 14338, - "EndOffset": 14526, - "Content": "#[derive(Clone)]\nenum Repr {\n Empty,\n Bytes(Bytes),\n ArcStr(Arc\u003cstr\u003e),\n ArcString(Arc\u003cString\u003e),\n StaticStr(\u0026'static str),\n Inline { len: usize, buf: [u8; INLINE_CAP] },\n}", - "Methods": { - "as_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "AsRef\u003cRepr\u003e.as_ref" - }, - "as_str": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.as_str" - }, - "deep_clone_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.deep_clone_bytes" - }, - "into_bytes": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_bytes" - }, - "into_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.into_string" - }, - "is_empty": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.is_empty" - }, - "len": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.len" - }, - "slice_ref": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "Repr.slice_ref" - } - } - } - }, - "Vars": { - "INLINE_CAP": { - "IsExported": false, - "IsConst": true, - "IsPointer": false, - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "INLINE_CAP", - "File": "lib.rs", - "Line": 540, - "StartOffset": 14307, - "EndOffset": 14336, - "Content": "const INLINE_CAP: usize = 24;" - } - } - } - }, - "Dependencies": {}, - "Files": { - "lib.rs": { - "Path": "lib.rs" - } - } - }, - "metainfo": { - "Language": "rust", - "Version": "", - "Name": "metainfo", - "Dir": "src", - "Packages": { - "metainfo": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo", - "Functions": { - "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "File": "src/lib.rs", - "Line": 514, - "StartOffset": 15667, - "EndOffset": 15881, - "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 514, - "StartOffset": 15709, - "EndOffset": 15715 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 514, - "StartOffset": 15717, - "EndOffset": 15725 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 514, - "StartOffset": 15726, - "EndOffset": 15733 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 516, - "StartOffset": 15822, - "EndOffset": 15836 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 515, - "StartOffset": 15780, - "EndOffset": 15786 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "File": "src/lib.rs", - "Line": 507, - "StartOffset": 15444, - "EndOffset": 15661, - "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(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.backward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 507, - "StartOffset": 15485, - "EndOffset": 15491 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 507, - "StartOffset": 15493, - "EndOffset": 15501 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 507, - "StartOffset": 15502, - "EndOffset": 15509 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 509, - "StartOffset": 15598, - "EndOffset": 15616 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 508, - "StartOffset": 15556, - "EndOffset": 15562 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 525, - "StartOffset": 16059, - "EndOffset": 16227, - "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(HttpConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 525, - "StartOffset": 16117, - "EndOffset": 16123 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 525, - "StartOffset": 16124, - "EndOffset": 16132 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 525, - "StartOffset": 16133, - "EndOffset": 16140 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16167, - "EndOffset": 16206 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 526, - "StartOffset": 16207, - "EndOffset": 16220 - } - ] - }, - "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 521, - "StartOffset": 15887, - "EndOffset": 16053, - "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(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_backword_transients_with_prefix(RpcConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 521, - "StartOffset": 15944, - "EndOffset": 15950 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 521, - "StartOffset": 15951, - "EndOffset": 15959 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 521, - "StartOffset": 15960, - "EndOffset": 15967 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 15994, - "EndOffset": 16033 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 522, - "StartOffset": 16034, - "EndOffset": 16046 - } - ] - }, - "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 540, - "StartOffset": 16553, - "EndOffset": 16869, - "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 547, - "StartOffset": 16817, - "EndOffset": 16840 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 545, - "StartOffset": 16719, - "EndOffset": 16725 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 546, - "StartOffset": 16770, - "EndOffset": 16792 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 540, - "StartOffset": 16605, - "EndOffset": 16610 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 540, - "StartOffset": 16620, - "EndOffset": 16624 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 540, - "StartOffset": 16625, - "EndOffset": 16632 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 546, - "StartOffset": 16756, - "EndOffset": 16769 - } - ] - }, - "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "File": "src/lib.rs", - "Line": 529, - "StartOffset": 16233, - "EndOffset": 16547, - "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\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 536, - "StartOffset": 16495, - "EndOffset": 16518 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 534, - "StartOffset": 16398, - "EndOffset": 16404 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/lib.rs", - "Line": 535, - "StartOffset": 16448, - "EndOffset": 16470 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 529, - "StartOffset": 16284, - "EndOffset": 16289 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 529, - "StartOffset": 16299, - "EndOffset": 16303 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 529, - "StartOffset": 16304, - "EndOffset": 16311 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 535, - "StartOffset": 16435, - "EndOffset": 16447 - } - ] - }, - "Debug\u003cMetaInfo\u003e.fmt": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "File": "src/lib.rs", - "Line": 622, - "StartOffset": 19109, - "EndOffset": 19217, - "Content": "impl fmt::Debug for MetaInfo {\n fn fmt(\u0026self, f: \u0026mut fmt::Formatter\u003c'_\u003e) -\u003e fmt::Result {\n f.debug_struct(\"MetaInfo\").finish()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Params": [ - { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Formatter", - "File": "src/lib.rs", - "Line": 622, - "StartOffset": 19136, - "EndOffset": 19145 - } - ], - "Results": [ - { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "Result", - "File": "src/lib.rs", - "Line": 622, - "StartOffset": 19159, - "EndOffset": 19165 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "File": "src/lib.rs", - "Line": 623, - "StartOffset": 19178, - "EndOffset": 19190 - }, - { - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "File": "src/lib.rs", - "Line": 623, - "StartOffset": 19203, - "EndOffset": 19209 - } - ] - }, - "Forward\u003cMetaInfo\u003e.get_all_persistents": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "File": "src/lib.rs", - "Line": 419, - "StartOffset": 12847, - "EndOffset": 13056, - "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 fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_persistents(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 419, - "StartOffset": 12880, - "EndOffset": 12886 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 419, - "StartOffset": 12888, - "EndOffset": 12896 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 419, - "StartOffset": 12897, - "EndOffset": 12904 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 421, - "StartOffset": 12992, - "EndOffset": 13011 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 420, - "StartOffset": 12950, - "EndOffset": 12956 - } - ] - }, - "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "File": "src/lib.rs", - "Line": 432, - "StartOffset": 13251, - "EndOffset": 13436, - "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 fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(HttpConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 434, - "StartOffset": 13331, - "EndOffset": 13337 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 434, - "StartOffset": 13338, - "EndOffset": 13346 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 434, - "StartOffset": 13347, - "EndOffset": 13354 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 435, - "StartOffset": 13381, - "EndOffset": 13415 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 435, - "StartOffset": 13416, - "EndOffset": 13429 - } - ] - }, - "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "File": "src/lib.rs", - "Line": 426, - "StartOffset": 13062, - "EndOffset": 13245, - "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 fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.get_all_persistents_and_transients(RpcConverter)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 428, - "StartOffset": 13141, - "EndOffset": 13147 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 428, - "StartOffset": 13148, - "EndOffset": 13156 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 428, - "StartOffset": 13157, - "EndOffset": 13164 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 429, - "StartOffset": 13191, - "EndOffset": 13225 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 429, - "StartOffset": 13226, - "EndOffset": 13238 - } - ] - }, - "Forward\u003cMetaInfo\u003e.get_all_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "File": "src/lib.rs", - "Line": 438, - "StartOffset": 13442, - "EndOffset": 13649, - "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 fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_transients(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 438, - "StartOffset": 13474, - "EndOffset": 13480 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 438, - "StartOffset": 13482, - "EndOffset": 13490 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 438, - "StartOffset": 13491, - "EndOffset": 13498 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 440, - "StartOffset": 13586, - "EndOffset": 13604 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 439, - "StartOffset": 13544, - "EndOffset": 13550 - } - ] - }, - "Forward\u003cMetaInfo\u003e.get_all_upstreams": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "File": "src/lib.rs", - "Line": 445, - "StartOffset": 13655, - "EndOffset": 13857, - "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 fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n match self.forward_node.as_ref() {\n Some(node) =\u003e node.get_all_stales(),\n None =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 445, - "StartOffset": 13686, - "EndOffset": 13692 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 445, - "StartOffset": 13694, - "EndOffset": 13702 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 445, - "StartOffset": 13703, - "EndOffset": 13710 - } - ], - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 447, - "StartOffset": 13798, - "EndOffset": 13812 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 446, - "StartOffset": 13756, - "EndOffset": 13762 - } - ] - }, - "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 474, - "StartOffset": 14466, - "EndOffset": 14766, - "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 fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 481, - "StartOffset": 14723, - "EndOffset": 14737 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 479, - "StartOffset": 14623, - "EndOffset": 14629 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 480, - "StartOffset": 14674, - "EndOffset": 14698 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 474, - "StartOffset": 14509, - "EndOffset": 14514 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 474, - "StartOffset": 14524, - "EndOffset": 14528 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 474, - "StartOffset": 14529, - "EndOffset": 14536 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 480, - "StartOffset": 14660, - "EndOffset": 14673 - } - ] - }, - "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 485, - "StartOffset": 14772, - "EndOffset": 15067, - "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 fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 492, - "StartOffset": 15026, - "EndOffset": 15038 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 490, - "StartOffset": 14927, - "EndOffset": 14933 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 491, - "StartOffset": 14978, - "EndOffset": 15001 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 485, - "StartOffset": 14813, - "EndOffset": 14818 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 485, - "StartOffset": 14828, - "EndOffset": 14832 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 485, - "StartOffset": 14833, - "EndOffset": 14840 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/lib.rs", - "Line": 491, - "StartOffset": 14964, - "EndOffset": 14977 - } - ] - }, - "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "File": "src/lib.rs", - "Line": 452, - "StartOffset": 13863, - "EndOffset": 14161, - "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 fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 459, - "StartOffset": 14118, - "EndOffset": 14132 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 457, - "StartOffset": 14019, - "EndOffset": 14025 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/lib.rs", - "Line": 458, - "StartOffset": 14069, - "EndOffset": 14093 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 452, - "StartOffset": 13905, - "EndOffset": 13910 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 452, - "StartOffset": 13920, - "EndOffset": 13924 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 452, - "StartOffset": 13925, - "EndOffset": 13932 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 458, - "StartOffset": 14056, - "EndOffset": 14068 - } - ] - }, - "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "File": "src/lib.rs", - "Line": 463, - "StartOffset": 14167, - "EndOffset": 14460, - "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 fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 470, - "StartOffset": 14419, - "EndOffset": 14431 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 468, - "StartOffset": 14321, - "EndOffset": 14327 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/lib.rs", - "Line": 469, - "StartOffset": 14371, - "EndOffset": 14394 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 463, - "StartOffset": 14207, - "EndOffset": 14212 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/lib.rs", - "Line": 463, - "StartOffset": 14222, - "EndOffset": 14226 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 463, - "StartOffset": 14227, - "EndOffset": 14234 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "File": "src/lib.rs", - "Line": 469, - "StartOffset": 14358, - "EndOffset": 14370 - } - ] - }, - "MetaInfo.clear": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "File": "src/lib.rs", - "Line": 287, - "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(\u0026mut 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": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 292, - "StartOffset": 9076, - "EndOffset": 9082 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.clear", - "File": "src/lib.rs", - "Line": 293, - "StartOffset": 9104, - "EndOffset": 9109 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/lib.rs", - "Line": 296, - "StartOffset": 9188, - "EndOffset": 9193 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "File": "src/lib.rs", - "Line": 299, - "StartOffset": 9296, - "EndOffset": 9301 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "File": "src/lib.rs", - "Line": 302, - "StartOffset": 9404, - "EndOffset": 9409 - } - ] - }, - "MetaInfo.contains": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "File": "src/lib.rs", - "Line": 175, - "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .tmap\n .as_ref()\n .map(|tmap| tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 180, - "StartOffset": 5512, - "EndOffset": 5518 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 181, - "StartOffset": 5534, - "EndOffset": 5537 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "File": "src/lib.rs", - "Line": 181, - "StartOffset": 5550, - "EndOffset": 5558 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 182, - "StartOffset": 5580, - "EndOffset": 5589 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 188, - "StartOffset": 5717, - "EndOffset": 5723 - } - ] - }, - "MetaInfo.contains_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "File": "src/lib.rs", - "Line": 192, - "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\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n if self\n .faststr_tmap\n .as_ref()\n .map(|faststr_tmap| faststr_tmap.contains::\u003cT\u003e())\n .unwrap_or(false)\n {\n return true;\n }\n self.parent\n .as_ref()\n .map(|parent| parent.as_ref().contains_faststr::\u003cT\u003e())\n .unwrap_or(false)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 197, - "StartOffset": 5969, - "EndOffset": 5975 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 198, - "StartOffset": 5991, - "EndOffset": 5994 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "File": "src/lib.rs", - "Line": 198, - "StartOffset": 6023, - "EndOffset": 6031 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 199, - "StartOffset": 6053, - "EndOffset": 6062 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 205, - "StartOffset": 6190, - "EndOffset": 6196 - } - ] - }, - "MetaInfo.contains_string": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "File": "src/lib.rs", - "Line": 209, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e 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": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 214, - "StartOffset": 6447, - "EndOffset": 6453 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 215, - "StartOffset": 6469, - "EndOffset": 6472 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/lib.rs", - "Line": 215, - "StartOffset": 6485, - "EndOffset": 6497 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 215, - "StartOffset": 6502, - "EndOffset": 6508 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 216, - "StartOffset": 6526, - "EndOffset": 6535 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 222, - "StartOffset": 6663, - "EndOffset": 6669 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 211, - "StartOffset": 6363, - "EndOffset": 6368 - } - ] - }, - "MetaInfo.derive": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "File": "src/lib.rs", - "Line": 105, - "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) -\u003e (MetaInfo, MetaInfo) {\n if self.tmap.is_none() \u0026\u0026 self.smap.is_none() \u0026\u0026 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 105, - "StartOffset": 3000, - "EndOffset": 3012 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "File": "src/lib.rs", - "Line": 126, - "StartOffset": 3916, - "EndOffset": 3919 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "File": "src/lib.rs", - "Line": 128, - "StartOffset": 3967, - "EndOffset": 3976 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 112, - "StartOffset": 3293, - "EndOffset": 3300 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "File": "src/lib.rs", - "Line": 115, - "StartOffset": 3501, - "EndOffset": 3506 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "File": "src/lib.rs", - "Line": 124, - "StartOffset": 3823, - "EndOffset": 3827 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "File": "src/lib.rs", - "Line": 128, - "StartOffset": 3980, - "EndOffset": 3985 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 111, - "StartOffset": 3250, - "EndOffset": 3258 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 126, - "StartOffset": 3911, - "EndOffset": 3914 - } - ] - }, - "MetaInfo.ensure_backward_node": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "File": "src/lib.rs", - "Line": 354, - "StartOffset": 10983, - "EndOffset": 11132, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_backward_node(\u0026mut 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" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 355, - "StartOffset": 11050, - "EndOffset": 11057 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 356, - "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": 348, - "StartOffset": 10831, - "EndOffset": 10977, - "Content": "impl MetaInfo {\n /// Creates an empty `MetaInfo`.\n #[inline]\n fn ensure_forward_node(\u0026mut 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" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 349, - "StartOffset": 10896, - "EndOffset": 10903 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 350, - "StartOffset": 10945, - "EndOffset": 10949 - } - ] - }, - "MetaInfo.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "File": "src/lib.rs", - "Line": 309, - "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(\u0026mut 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": 315, - "StartOffset": 9826, - "EndOffset": 9839 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 321, - "StartOffset": 10013, - "EndOffset": 10026 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "File": "src/lib.rs", - "Line": 327, - "StartOffset": 10226, - "EndOffset": 10239 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 315, - "StartOffset": 9795, - "EndOffset": 9813 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "File": "src/lib.rs", - "Line": 316, - "StartOffset": 9876, - "EndOffset": 9882 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 322, - "StartOffset": 10063, - "EndOffset": 10069 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "File": "src/lib.rs", - "Line": 328, - "StartOffset": 10276, - "EndOffset": 10282 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/lib.rs", - "Line": 332, - "StartOffset": 10391, - "EndOffset": 10398 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 335, - "StartOffset": 10506, - "EndOffset": 10512 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/lib.rs", - "Line": 335, - "StartOffset": 10515, - "EndOffset": 10521 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/lib.rs", - "Line": 335, - "StartOffset": 10524, - "EndOffset": 10530 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 312, - "StartOffset": 9703, - "EndOffset": 9711 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 315, - "StartOffset": 9817, - "EndOffset": 9824 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 321, - "StartOffset": 10003, - "EndOffset": 10011 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 327, - "StartOffset": 10214, - "EndOffset": 10224 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 315, - "StartOffset": 9840, - "EndOffset": 9856 - } - ] - }, - "MetaInfo.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "File": "src/lib.rs", - "Line": 226, - "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\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::\u003cT\u003e())\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 229, - "StartOffset": 6887, - "EndOffset": 6893 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 229, - "StartOffset": 6896, - "EndOffset": 6904 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "File": "src/lib.rs", - "Line": 229, - "StartOffset": 6917, - "EndOffset": 6920 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 229, - "StartOffset": 6924, - "EndOffset": 6931 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 232, - "StartOffset": 7029, - "EndOffset": 7035 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 228, - "StartOffset": 6856, - "EndOffset": 6862 - } - ] - }, - "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": 591, - "StartOffset": 18217, - "EndOffset": 19070, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_backword_transients_with_prefix\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.backward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 601, - "StartOffset": 18507, - "EndOffset": 18525 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 606, - "StartOffset": 18714, - "EndOffset": 18727 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 599, - "StartOffset": 18430, - "EndOffset": 18436 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 602, - "StartOffset": 18566, - "EndOffset": 18569 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 607, - "StartOffset": 18762, - "EndOffset": 18768 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 608, - "StartOffset": 18796, - "EndOffset": 18800 - }, - { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "File": "src/lib.rs", - "Line": 609, - "StartOffset": 18832, - "EndOffset": 18835 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 609, - "StartOffset": 18856, - "EndOffset": 18876 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 595, - "StartOffset": 18324, - "EndOffset": 18330 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 595, - "StartOffset": 18331, - "EndOffset": 18339 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 595, - "StartOffset": 18340, - "EndOffset": 18347 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 597, - "StartOffset": 18380, - "EndOffset": 18389 - } - ] - }, - "MetaInfo.get_all_persistents_and_transients": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "File": "src/lib.rs", - "Line": 553, - "StartOffset": 16893, - "EndOffset": 18211, - "Content": "impl MetaInfo {\n #[inline]\n #[inline]\n fn get_all_persistents_and_transients\u003cC\u003e(\n \u0026self,\n converter: C,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e\n where\n C: Converter,\n {\n match self.forward_node.as_ref() {\n Some(node) =\u003e {\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 =\u003e None,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "FunctionCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/lib.rs", - "Line": 563, - "StartOffset": 17178, - "EndOffset": 17197 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap::with_capacity", - "File": "src/lib.rs", - "Line": 570, - "StartOffset": 17522, - "EndOffset": 17535 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 561, - "StartOffset": 17100, - "EndOffset": 17106 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17303, - "EndOffset": 17306 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17313, - "EndOffset": 17316 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "File": "src/lib.rs", - "Line": 565, - "StartOffset": 17320, - "EndOffset": 17329 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/lib.rs", - "Line": 572, - "StartOffset": 17627, - "EndOffset": 17633 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/lib.rs", - "Line": 574, - "StartOffset": 17700, - "EndOffset": 17704 - }, - { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "File": "src/lib.rs", - "Line": 575, - "StartOffset": 17736, - "EndOffset": 17739 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "File": "src/lib.rs", - "Line": 582, - "StartOffset": 18051, - "EndOffset": 18071 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 557, - "StartOffset": 16995, - "EndOffset": 17001 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 557, - "StartOffset": 17002, - "EndOffset": 17010 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 557, - "StartOffset": 17011, - "EndOffset": 17018 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/lib.rs", - "Line": 559, - "StartOffset": 17051, - "EndOffset": 17060 - } - ] - }, - "MetaInfo.get_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "File": "src/lib.rs", - "Line": 243, - "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\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.faststr_tmap\n .as_ref()\n .and_then(|faststr_tmap: \u0026FastStrMap| faststr_tmap.get::\u003cT\u003e())\n .or_else(|| {\n self.parent\n .as_ref()\n .and_then(|parent| parent.as_ref().get_faststr::\u003cT\u003e())\n })\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 247, - "StartOffset": 7523, - "EndOffset": 7529 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 248, - "StartOffset": 7545, - "EndOffset": 7553 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "File": "src/lib.rs", - "Line": 248, - "StartOffset": 7595, - "EndOffset": 7598 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 249, - "StartOffset": 7620, - "EndOffset": 7627 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 252, - "StartOffset": 7737, - "EndOffset": 7743 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 245, - "StartOffset": 7465, - "EndOffset": 7471 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 245, - "StartOffset": 7473, - "EndOffset": 7480 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 248, - "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": 265, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003c\u0026FastStr\u003e {\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": "", - "PkgPath": "core::option", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 269, - "StartOffset": 8315, - "EndOffset": 8321 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 270, - "StartOffset": 8337, - "EndOffset": 8345 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "File": "src/lib.rs", - "Line": 270, - "StartOffset": 8358, - "EndOffset": 8361 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 270, - "StartOffset": 8366, - "EndOffset": 8372 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "File": "src/lib.rs", - "Line": 271, - "StartOffset": 8390, - "EndOffset": 8397 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 274, - "StartOffset": 8507, - "EndOffset": 8513 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 267, - "StartOffset": 8235, - "EndOffset": 8240 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 267, - "StartOffset": 8265, - "EndOffset": 8271 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 267, - "StartOffset": 8273, - "EndOffset": 8280 - } - ] - }, - "MetaInfo.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "File": "src/lib.rs", - "Line": 151, - "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\u003cT: Send + Sync + 'static\u003e(\u0026mut 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": 155, - "StartOffset": 4737, - "EndOffset": 4750 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 155, - "StartOffset": 4706, - "EndOffset": 4724 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "File": "src/lib.rs", - "Line": 156, - "StartOffset": 4783, - "EndOffset": 4789 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/lib.rs", - "Line": 153, - "StartOffset": 4631, - "EndOffset": 4635 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/lib.rs", - "Line": 153, - "StartOffset": 4638, - "EndOffset": 4642 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 155, - "StartOffset": 4728, - "EndOffset": 4735 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 155, - "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": 159, - "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\u003cT: Send + Sync + 'static\u003e(\u0026mut self, val: FastStr) {\n self.faststr_tmap\n .get_or_insert_with(|| FastStrMap::with_capacity(DEFAULT_MAP_SIZE))\n .insert::\u003cT\u003e(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": 163, - "StartOffset": 5024, - "EndOffset": 5037 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 163, - "StartOffset": 4990, - "EndOffset": 5008 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "File": "src/lib.rs", - "Line": 164, - "StartOffset": 5070, - "EndOffset": 5076 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/lib.rs", - "Line": 161, - "StartOffset": 4901, - "EndOffset": 4905 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/lib.rs", - "Line": 161, - "StartOffset": 4908, - "EndOffset": 4912 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 161, - "StartOffset": 4940, - "EndOffset": 4947 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 163, - "StartOffset": 5012, - "EndOffset": 5022 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 163, - "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": 167, - "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(\u0026mut 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": 171, - "StartOffset": 5288, - "EndOffset": 5301 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "File": "src/lib.rs", - "Line": 171, - "StartOffset": 5256, - "EndOffset": 5274 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "File": "src/lib.rs", - "Line": 172, - "StartOffset": 5334, - "EndOffset": 5340 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 169, - "StartOffset": 5200, - "EndOffset": 5207 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 171, - "StartOffset": 5278, - "EndOffset": 5286 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "File": "src/lib.rs", - "Line": 171, - "StartOffset": 5302, - "EndOffset": 5318 - } - ] - }, - "MetaInfo.remove": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "File": "src/lib.rs", - "Line": 236, - "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.tmap.as_mut().and_then(|tmap| tmap.remove::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 240, - "StartOffset": 7269, - "EndOffset": 7275 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 240, - "StartOffset": 7278, - "EndOffset": 7286 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "File": "src/lib.rs", - "Line": 240, - "StartOffset": 7299, - "EndOffset": 7305 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 239, - "StartOffset": 7239, - "EndOffset": 7245 - } - ] - }, - "MetaInfo.remove_faststr": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "File": "src/lib.rs", - "Line": 256, - "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\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.faststr_tmap\n .as_mut()\n .and_then(|faststr_tmap| faststr_tmap.remove::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 261, - "StartOffset": 8035, - "EndOffset": 8041 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 262, - "StartOffset": 8057, - "EndOffset": 8065 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "File": "src/lib.rs", - "Line": 262, - "StartOffset": 8094, - "EndOffset": 8100 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 259, - "StartOffset": 7978, - "EndOffset": 7984 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 259, - "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": 278, - "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\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/lib.rs", - "Line": 283, - "StartOffset": 8799, - "EndOffset": 8805 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/lib.rs", - "Line": 284, - "StartOffset": 8821, - "EndOffset": 8829 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "File": "src/lib.rs", - "Line": 284, - "StartOffset": 8842, - "EndOffset": 8848 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "File": "src/lib.rs", - "Line": 284, - "StartOffset": 8853, - "EndOffset": 8859 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/lib.rs", - "Line": 281, - "StartOffset": 8716, - "EndOffset": 8721 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 281, - "StartOffset": 8750, - "EndOffset": 8756 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 281, - "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": 134, - "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\u003cMetaInfo\u003e,\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n ) -\u003e 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": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 136, - "StartOffset": 4232, - "EndOffset": 4235 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 136, - "StartOffset": 4236, - "EndOffset": 4244 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 137, - "StartOffset": 4269, - "EndOffset": 4275 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 137, - "StartOffset": 4280, - "EndOffset": 4284 - } - ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "File": "src/lib.rs", - "Line": 392, - "StartOffset": 12000, - "EndOffset": 12396, - "Content": "macro_rules! del_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\n if let Some(node) = self.[\u003c$node _node\u003e].as_mut() {\n node.[\u003cdel_ $func_name\u003e](key)\n } else {\n None\n }\n }\n }\n };\n}" - }, - "get_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "File": "src/lib.rs", - "Line": 361, - "StartOffset": 11136, - "EndOffset": 11513, - "Content": "macro_rules! get_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n match self.[\u003c$node _node\u003e].as_ref() {\n Some(node) =\u003e node.[\u003cget_ $func_name\u003e](key),\n None =\u003e None,\n }\n }\n }\n };\n}" - }, - "set_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "File": "src/lib.rs", - "Line": 374, - "StartOffset": 11515, - "EndOffset": 11998, - "Content": "macro_rules! set_impl {\n ($name:ident,$node:ident,$func_name:ident) =\u003e {\n paste! {\n fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n ) {\n self.[\u003censure_ $node _node\u003e]();\n self.[\u003c$node _node\u003e]\n .as_mut()\n .unwrap()\n .[\u003cset_ $func_name\u003e](key, value)\n }\n }\n };\n}" - } - }, - "Types": { - "MetaInfo": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "File": "src/lib.rs", - "Line": 36, - "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::\u003ci8\u003e(2);\n/// assert_eq!(*m1.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// let (mut m1, mut m2) = m1.derive();\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 2);\n///\n/// m2.insert::\u003ci8\u003e(4);\n/// assert_eq!(*m2.get::\u003ci8\u003e().unwrap(), 4);\n///\n/// m2.remove::\u003ci8\u003e();\n/// assert_eq!(*m2.get::\u003ci8\u003e().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\u003cArc\u003cMetaInfo\u003e\u003e,\n tmap: Option\u003cTypeMap\u003e,\n smap: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e, // for str k-v\n faststr_tmap: Option\u003cFastStrMap\u003e, // for newtype wrapper of FastStr\n\n /// for information transport through client and server.\n /// e.g. RPC\n forward_node: Option\u003ckv::Node\u003e,\n backward_node: Option\u003ckv::Node\u003e,\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 67, - "StartOffset": 1842, - "EndOffset": 1848 - }, - { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "File": "src/lib.rs", - "Line": 67, - "StartOffset": 1849, - "EndOffset": 1852 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 68, - "StartOffset": 1875, - "EndOffset": 1881 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/lib.rs", - "Line": 68, - "StartOffset": 1882, - "EndOffset": 1889 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1902, - "EndOffset": 1908 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1909, - "EndOffset": 1917 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1918, - "EndOffset": 1925 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/lib.rs", - "Line": 69, - "StartOffset": 1927, - "EndOffset": 1934 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1971, - "EndOffset": 1977 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/lib.rs", - "Line": 70, - "StartOffset": 1978, - "EndOffset": 1988 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 74, - "StartOffset": 2130, - "EndOffset": 2136 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 74, - "StartOffset": 2141, - "EndOffset": 2145 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/lib.rs", - "Line": 75, - "StartOffset": 2167, - "EndOffset": 2173 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "File": "src/lib.rs", - "Line": 75, - "StartOffset": 2178, - "EndOffset": 2182 - } - ], - "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": "Debug\u003cMetaInfo\u003e.fmt" - }, - "get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get" - }, - "get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams" - }, - "get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients" - }, - "get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix" - }, - "get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.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\u003cMetaInfo\u003e.get_all_persistents" - }, - "get_all_persistents_and_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients" - }, - "get_all_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix" - }, - "get_all_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix" - }, - "get_all_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients" - }, - "get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.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" - }, - "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\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream" - }, - "strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent" - }, - "strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream" - }, - "strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream" - }, - "strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent" - }, - "strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.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": 34, - "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": 32, - "StartOffset": 798, - "EndOffset": 853, - "Content": "pub const HTTP_PREFIX_BACKWARD: \u0026str = \"rpc-backward-\";" - }, - "HTTP_PREFIX_PERSISTENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/lib.rs", - "Line": 30, - "StartOffset": 685, - "EndOffset": 741, - "Content": "pub const HTTP_PREFIX_PERSISTENT: \u0026str = \"rpc-persist-\";" - }, - "HTTP_PREFIX_TRANSIENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/lib.rs", - "Line": 31, - "StartOffset": 742, - "EndOffset": 797, - "Content": "pub const HTTP_PREFIX_TRANSIENT: \u0026str = \"rpc-transit-\";" - }, - "RPC_PREFIX_BACKWARD": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/lib.rs", - "Line": 29, - "StartOffset": 630, - "EndOffset": 684, - "Content": "pub const RPC_PREFIX_BACKWARD: \u0026str = \"RPC_BACKWARD_\";" - }, - "RPC_PREFIX_PERSISTENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/lib.rs", - "Line": 25, - "StartOffset": 472, - "EndOffset": 574, - "Content": "/// Framework should all obey these prefixes.\n\npub const RPC_PREFIX_PERSISTENT: \u0026str = \"RPC_PERSIST_\";" - }, - "RPC_PREFIX_TRANSIENT": { - "IsExported": true, - "IsConst": true, - "IsPointer": false, - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/lib.rs", - "Line": 28, - "StartOffset": 575, - "EndOffset": 629, - "Content": "pub const RPC_PREFIX_TRANSIENT: \u0026str = \"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": 3, - "StartOffset": 44, - "EndOffset": 1303, - "Content": "pub trait Backward {\n // We don't think backward persistent makes sense.\n fn get_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_backward_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_downstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_backward_transients_with_rpc_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_backward_transients_with_http_prefix(\u0026self) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_backward_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_backward_downstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_backward_downstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_backward_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_backward_downstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 5, - "StartOffset": 153, - "EndOffset": 158 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 5, - "StartOffset": 183, - "EndOffset": 189 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 5, - "StartOffset": 190, - "EndOffset": 197 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 234, - "EndOffset": 239 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 264, - "EndOffset": 270 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 6, - "StartOffset": 271, - "EndOffset": 278 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 8, - "StartOffset": 327, - "EndOffset": 333 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 8, - "StartOffset": 335, - "EndOffset": 343 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 8, - "StartOffset": 344, - "EndOffset": 351 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 8, - "StartOffset": 353, - "EndOffset": 360 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 410, - "EndOffset": 416 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 418, - "EndOffset": 426 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 427, - "EndOffset": 434 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 9, - "StartOffset": 436, - "EndOffset": 443 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 11, - "StartOffset": 509, - "EndOffset": 515 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 11, - "StartOffset": 516, - "EndOffset": 524 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 11, - "StartOffset": 525, - "EndOffset": 532 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 11, - "StartOffset": 534, - "EndOffset": 541 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 607, - "EndOffset": 613 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 614, - "EndOffset": 622 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 623, - "EndOffset": 630 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 12, - "StartOffset": 632, - "EndOffset": 639 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 14, - "StartOffset": 677, - "EndOffset": 681 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 14, - "StartOffset": 682, - "EndOffset": 689 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 14, - "StartOffset": 695, - "EndOffset": 699 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 14, - "StartOffset": 700, - "EndOffset": 707 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 774, - "EndOffset": 778 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 779, - "EndOffset": 786 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 792, - "EndOffset": 796 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 15, - "StartOffset": 797, - "EndOffset": 804 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 17, - "StartOffset": 893, - "EndOffset": 898 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 17, - "StartOffset": 908, - "EndOffset": 912 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 17, - "StartOffset": 913, - "EndOffset": 920 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 23, - "StartOffset": 1041, - "EndOffset": 1046 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/backward.rs", - "Line": 23, - "StartOffset": 1056, - "EndOffset": 1060 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 23, - "StartOffset": 1061, - "EndOffset": 1068 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 29, - "StartOffset": 1166, - "EndOffset": 1171 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 29, - "StartOffset": 1200, - "EndOffset": 1206 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 29, - "StartOffset": 1207, - "EndOffset": 1214 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1251, - "EndOffset": 1256 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1285, - "EndOffset": 1291 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/backward.rs", - "Line": 30, - "StartOffset": 1292, - "EndOffset": 1299 - } - ] - } - }, - "Vars": {} - }, - "metainfo::convert": { - "IsMain": false, - "IsTest": false, - "PkgPath": "metainfo::convert", - "Functions": { - "Converter\u003cHttpConverter\u003e.add_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 117, - "StartOffset": 3590, - "EndOffset": 3719, - "Content": "impl Converter for HttpConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 117, - "StartOffset": 3634, - "EndOffset": 3641 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 118, - "StartOffset": 3657, - "EndOffset": 3686 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 118, - "StartOffset": 3687, - "EndOffset": 3707 - } - ] - }, - "Converter\u003cHttpConverter\u003e.add_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 109, - "StartOffset": 3314, - "EndOffset": 3447, - "Content": "impl Converter for HttpConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 110, - "StartOffset": 3383, - "EndOffset": 3412 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 109, - "StartOffset": 3360, - "EndOffset": 3367 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 110, - "StartOffset": 3413, - "EndOffset": 3435 - } - ] - }, - "Converter\u003cHttpConverter\u003e.add_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 113, - "StartOffset": 3453, - "EndOffset": 3584, - "Content": "impl Converter for HttpConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix_and_to_http_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 113, - "StartOffset": 3498, - "EndOffset": 3505 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "File": "src/convert.rs", - "Line": 114, - "StartOffset": 3521, - "EndOffset": 3550 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 114, - "StartOffset": 3551, - "EndOffset": 3572 - } - ] - }, - "Converter\u003cHttpConverter\u003e.remove_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 129, - "StartOffset": 4027, - "EndOffset": 4169, - "Content": "impl Converter for HttpConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_BACKWARD, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 129, - "StartOffset": 4074, - "EndOffset": 4080 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 129, - "StartOffset": 4081, - "EndOffset": 4088 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 130, - "StartOffset": 4105, - "EndOffset": 4136 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 130, - "StartOffset": 4137, - "EndOffset": 4157 - } - ] - }, - "Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 121, - "StartOffset": 3725, - "EndOffset": 3871, - "Content": "impl Converter for HttpConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_PERSISTENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 122, - "StartOffset": 3805, - "EndOffset": 3836 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 121, - "StartOffset": 3774, - "EndOffset": 3780 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 121, - "StartOffset": 3781, - "EndOffset": 3788 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 122, - "StartOffset": 3837, - "EndOffset": 3859 - } - ] - }, - "Converter\u003cHttpConverter\u003e.remove_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 125, - "StartOffset": 3877, - "EndOffset": 4021, - "Content": "impl Converter for HttpConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix_and_to_rpc_format(HTTP_PREFIX_TRANSIENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "File": "src/convert.rs", - "Line": 126, - "StartOffset": 3956, - "EndOffset": 3987 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 125, - "StartOffset": 3925, - "EndOffset": 3931 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 125, - "StartOffset": 3932, - "EndOffset": 3939 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 126, - "StartOffset": 3988, - "EndOffset": 4009 - } - ] - }, - "Converter\u003cRpcConverter\u003e.add_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "File": "src/convert.rs", - "Line": 45, - "StartOffset": 1389, - "EndOffset": 1498, - "Content": "impl Converter for RpcConverter {\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 45, - "StartOffset": 1433, - "EndOffset": 1440 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 46, - "StartOffset": 1456, - "EndOffset": 1466 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 46, - "StartOffset": 1467, - "EndOffset": 1486 - } - ] - }, - "Converter\u003cRpcConverter\u003e.add_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "File": "src/convert.rs", - "Line": 37, - "StartOffset": 1153, - "EndOffset": 1266, - "Content": "impl Converter for RpcConverter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 37, - "StartOffset": 1199, - "EndOffset": 1206 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 38, - "StartOffset": 1222, - "EndOffset": 1232 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 38, - "StartOffset": 1233, - "EndOffset": 1254 - } - ] - }, - "Converter\u003cRpcConverter\u003e.add_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "File": "src/convert.rs", - "Line": 41, - "StartOffset": 1272, - "EndOffset": 1383, - "Content": "impl Converter for RpcConverter {\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr {\n self.add_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 41, - "StartOffset": 1317, - "EndOffset": 1324 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 42, - "StartOffset": 1340, - "EndOffset": 1350 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 42, - "StartOffset": 1351, - "EndOffset": 1371 - } - ] - }, - "Converter\u003cRpcConverter\u003e.remove_backward_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "File": "src/convert.rs", - "Line": 57, - "StartOffset": 1768, - "EndOffset": 1891, - "Content": "impl Converter for RpcConverter {\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_BACKWARD, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 57, - "StartOffset": 1815, - "EndOffset": 1821 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 57, - "StartOffset": 1822, - "EndOffset": 1829 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 58, - "StartOffset": 1846, - "EndOffset": 1859 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "File": "src/convert.rs", - "Line": 58, - "StartOffset": 1860, - "EndOffset": 1879 - } - ] - }, - "Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "File": "src/convert.rs", - "Line": 49, - "StartOffset": 1504, - "EndOffset": 1631, - "Content": "impl Converter for RpcConverter {\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_PERSISTENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 49, - "StartOffset": 1553, - "EndOffset": 1559 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 49, - "StartOffset": 1560, - "EndOffset": 1567 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 50, - "StartOffset": 1584, - "EndOffset": 1597 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "File": "src/convert.rs", - "Line": 50, - "StartOffset": 1598, - "EndOffset": 1619 - } - ] - }, - "Converter\u003cRpcConverter\u003e.remove_transient_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "File": "src/convert.rs", - "Line": 53, - "StartOffset": 1637, - "EndOffset": 1762, - "Content": "impl Converter for RpcConverter {\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n self.remove_prefix(RPC_PREFIX_TRANSIENT, key)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 53, - "StartOffset": 1685, - "EndOffset": 1691 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 53, - "StartOffset": 1692, - "EndOffset": 1699 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1716, - "EndOffset": 1729 - } - ], - "GlobalVars": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "File": "src/convert.rs", - "Line": 54, - "StartOffset": 1730, - "EndOffset": 1750 - } - ] - }, - "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": 91, - "StartOffset": 2682, - "EndOffset": 2966, - "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\n let mut buf = String::with_capacity(prefix.len() + key.len());\n buf.push_str(prefix);\n self.to_http_format(key, \u0026mut buf);\n FastStr::from_string(buf)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 93, - "StartOffset": 2812, - "EndOffset": 2825 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 96, - "StartOffset": 2944, - "EndOffset": 2955 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 93, - "StartOffset": 2833, - "EndOffset": 2836 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "File": "src/convert.rs", - "Line": 94, - "StartOffset": 2865, - "EndOffset": 2873 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 95, - "StartOffset": 2896, - "EndOffset": 2910 - } - ], - "Types": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 92, - "StartOffset": 2772, - "EndOffset": 2779 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 93, - "StartOffset": 2804, - "EndOffset": 2810 - } - ] - }, - "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": 99, - "StartOffset": 2972, - "EndOffset": 3271, - "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(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n Some(FastStr::from_string(buf))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 102, - "StartOffset": 3157, - "EndOffset": 3170 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 104, - "StartOffset": 3248, - "EndOffset": 3259 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "src/convert.rs", - "Line": 101, - "StartOffset": 3104, - "EndOffset": 3116 - }, - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 102, - "StartOffset": 3175, - "EndOffset": 3178 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 103, - "StartOffset": 3196, - "EndOffset": 3209 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 100, - "StartOffset": 3064, - "EndOffset": 3070 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 100, - "StartOffset": 3071, - "EndOffset": 3078 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 102, - "StartOffset": 3149, - "EndOffset": 3155 - } - ] - }, - "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": 65, - "StartOffset": 1947, - "EndOffset": 2309, - "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'A'..='Z' =\u003e ch.to_ascii_lowercase(),\n '_' =\u003e '-',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "src/convert.rs", - "Line": 68, - "StartOffset": 2104, - "EndOffset": 2109 - }, - { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "File": "src/convert.rs", - "Line": 70, - "StartOffset": 2178, - "EndOffset": 2196 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "File": "src/convert.rs", - "Line": 74, - "StartOffset": 2284, - "EndOffset": 2288 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 67, - "StartOffset": 2072, - "EndOffset": 2078 - } - ] - }, - "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": 244, - "StartOffset": 7319, - "EndOffset": 7507, - "Content": "impl HttpConverter {\n fn to_http_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_http_format(key, \u0026mut buf);\n buf\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 245, - "StartOffset": 7408, - "EndOffset": 7421 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 245, - "StartOffset": 7426, - "EndOffset": 7429 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "File": "src/convert.rs", - "Line": 246, - "StartOffset": 7451, - "EndOffset": 7465 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 244, - "StartOffset": 7365, - "EndOffset": 7371 - } - ] - }, - "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": 78, - "StartOffset": 2315, - "EndOffset": 2676, - "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(\u0026self, key: \u0026str, buf: \u0026mut String) {\n for ch in key.chars() {\n let ch = match ch {\n 'a'..='z' =\u003e ch.to_ascii_uppercase(),\n '-' =\u003e '_',\n _ =\u003e ch,\n };\n buf.push(ch);\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "File": "src/convert.rs", - "Line": 81, - "StartOffset": 2471, - "EndOffset": 2476 - }, - { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "File": "src/convert.rs", - "Line": 83, - "StartOffset": 2545, - "EndOffset": 2563 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "File": "src/convert.rs", - "Line": 87, - "StartOffset": 2651, - "EndOffset": 2655 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 80, - "StartOffset": 2439, - "EndOffset": 2445 - } - ] - }, - "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": 250, - "StartOffset": 7517, - "EndOffset": 7703, - "Content": "impl HttpConverter {\n fn to_rpc_format_string(\u0026self, key: \u0026str) -\u003e String {\n let mut buf = String::with_capacity(key.len());\n self.to_rpc_format(key, \u0026mut buf);\n buf\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 251, - "StartOffset": 7605, - "EndOffset": 7618 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 251, - "StartOffset": 7623, - "EndOffset": 7626 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "File": "src/convert.rs", - "Line": 252, - "StartOffset": 7648, - "EndOffset": 7661 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 250, - "StartOffset": 7562, - "EndOffset": 7568 - } - ] - }, - "RpcConverter.add_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "File": "src/convert.rs", - "Line": 21, - "StartOffset": 664, - "EndOffset": 912, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn add_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e FastStr {\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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "Results": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 22, - "StartOffset": 735, - "EndOffset": 742 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "File": "src/convert.rs", - "Line": 23, - "StartOffset": 775, - "EndOffset": 788 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 26, - "StartOffset": 890, - "EndOffset": 901 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "File": "src/convert.rs", - "Line": 23, - "StartOffset": 796, - "EndOffset": 799 - }, - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "File": "src/convert.rs", - "Line": 24, - "StartOffset": 828, - "EndOffset": 836 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "File": "src/convert.rs", - "Line": 23, - "StartOffset": 767, - "EndOffset": 773 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 26, - "StartOffset": 881, - "EndOffset": 888 - } - ] - }, - "RpcConverter.remove_prefix": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "File": "src/convert.rs", - "Line": 29, - "StartOffset": 918, - "EndOffset": 1111, - "Content": "impl RpcConverter {\n #[inline]\n #[inline]\n fn remove_prefix(\u0026self, prefix: \u0026'static str, key: \u0026str) -\u003e Option\u003cFastStr\u003e {\n let key = key.strip_prefix(prefix)?;\n Some(FastStr::from_string(key.to_owned()))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter" - } - }, - "FunctionCalls": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "File": "src/convert.rs", - "Line": 32, - "StartOffset": 1077, - "EndOffset": 1088 - } - ], - "MethodCalls": [ - { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "File": "src/convert.rs", - "Line": 31, - "StartOffset": 1032, - "EndOffset": 1044 - }, - { - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "File": "src/convert.rs", - "Line": 32, - "StartOffset": 1093, - "EndOffset": 1101 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 30, - "StartOffset": 992, - "EndOffset": 998 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 30, - "StartOffset": 999, - "EndOffset": 1006 - } - ] - } - }, - "Types": { - "Converter": { - "Exported": true, - "TypeKind": "interface", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "File": "src/convert.rs", - "Line": 7, - "StartOffset": 183, - "EndOffset": 612, - "Content": "pub trait Converter {\n fn add_persistent_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n fn add_transient_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n #[allow(dead_code)]\n fn add_backward_prefix(\u0026self, key: \u0026str) -\u003e FastStr;\n\n fn remove_persistent_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_transient_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n fn remove_backward_prefix(\u0026self, key: \u0026str) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 8, - "StartOffset": 255, - "EndOffset": 262 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 9, - "StartOffset": 313, - "EndOffset": 320 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 11, - "StartOffset": 394, - "EndOffset": 401 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 13, - "StartOffset": 457, - "EndOffset": 463 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 13, - "StartOffset": 464, - "EndOffset": 471 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 14, - "StartOffset": 526, - "EndOffset": 532 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 14, - "StartOffset": 533, - "EndOffset": 540 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/convert.rs", - "Line": 15, - "StartOffset": 594, - "EndOffset": 600 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/convert.rs", - "Line": 15, - "StartOffset": 601, - "EndOffset": 608 - } - ] - }, - "HttpConverter": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "File": "src/convert.rs", - "Line": 62, - "StartOffset": 1895, - "EndOffset": 1920, - "Content": "pub struct HttpConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.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\u003cHttpConverter\u003e.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": 18, - "StartOffset": 614, - "EndOffset": 638, - "Content": "pub struct RpcConverter;", - "Methods": { - "add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix" - }, - "add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix" - }, - "add_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix" - }, - "add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix" - }, - "remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix" - }, - "remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix" - }, - "remove_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix" - }, - "remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix" - } - } - } - }, - "Vars": {} - }, - "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": 83, - "StartOffset": 1986, - "EndOffset": 2069, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 85, - "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": 53, - "StartOffset": 1362, - "EndOffset": 1435, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 55, - "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": 43, - "StartOffset": 1111, - "EndOffset": 1227, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 45, - "StartOffset": 1211, - "EndOffset": 1213 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/faststr_map.rs", - "Line": 45, - "StartOffset": 1189, - "EndOffset": 1201 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 45, - "StartOffset": 1203, - "EndOffset": 1209 - } - ] - }, - "FastStrMap.entry": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "File": "src/faststr_map.rs", - "Line": 68, - "StartOffset": 1682, - "EndOffset": 1813, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, FastStr\u003e {\n self.inner.entry(TypeId::of::\u003cT\u003e())\n }\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": 69, - "StartOffset": 1735, - "EndOffset": 1740 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 69, - "StartOffset": 1745, - "EndOffset": 1751 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 69, - "StartOffset": 1753, - "EndOffset": 1760 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1797, - "EndOffset": 1799 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1783, - "EndOffset": 1788 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 70, - "StartOffset": 1789, - "EndOffset": 1795 - } - ] - }, - "FastStrMap.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "File": "src/faststr_map.rs", - "Line": 58, - "StartOffset": 1441, - "EndOffset": 1545, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: FastStrMap) {\n self.inner.extend(other.inner)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/faststr_map.rs", - "Line": 60, - "StartOffset": 1520, - "EndOffset": 1526 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 59, - "StartOffset": 1487, - "EndOffset": 1497 - } - ] - }, - "FastStrMap.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "File": "src/faststr_map.rs", - "Line": 33, - "StartOffset": 855, - "EndOffset": 969, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026FastStr\u003e {\n self.inner.get(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 953, - "EndOffset": 955 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 940, - "EndOffset": 943 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 34, - "StartOffset": 902, - "EndOffset": 908 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 34, - "StartOffset": 910, - "EndOffset": 917 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 35, - "StartOffset": 945, - "EndOffset": 951 - } - ] - }, - "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": 38, - "StartOffset": 975, - "EndOffset": 1105, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut FastStr\u003e {\n self.inner.get_mut(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 39, - "StartOffset": 1030, - "EndOffset": 1036 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 39, - "StartOffset": 1042, - "EndOffset": 1049 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1089, - "EndOffset": 1091 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1072, - "EndOffset": 1079 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 40, - "StartOffset": 1081, - "EndOffset": 1087 - } - ] - }, - "FastStrMap.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "File": "src/faststr_map.rs", - "Line": 28, - "StartOffset": 716, - "EndOffset": 849, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: FastStr) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), t);\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 829, - "EndOffset": 831 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 814, - "EndOffset": 820 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/faststr_map.rs", - "Line": 29, - "StartOffset": 747, - "EndOffset": 751 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/faststr_map.rs", - "Line": 29, - "StartOffset": 754, - "EndOffset": 758 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 29, - "StartOffset": 784, - "EndOffset": 791 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 30, - "StartOffset": 821, - "EndOffset": 827 - } - ] - }, - "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": 73, - "StartOffset": 1819, - "EndOffset": 1901, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 75, - "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": 63, - "StartOffset": 1551, - "EndOffset": 1676, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, FastStr\u003e {\n self.inner.iter()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/faststr_map.rs", - "Line": 65, - "StartOffset": 1664, - "EndOffset": 1668 - } - ], - "Types": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "src/faststr_map.rs", - "Line": 64, - "StartOffset": 1617, - "EndOffset": 1621 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 64, - "StartOffset": 1626, - "EndOffset": 1632 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 64, - "StartOffset": 1634, - "EndOffset": 1641 - } - ] - }, - "FastStrMap.len": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", - "File": "src/faststr_map.rs", - "Line": 78, - "StartOffset": 1907, - "EndOffset": 1980, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 80, - "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": 48, - "StartOffset": 1233, - "EndOffset": 1356, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cFastStr\u003e {\n self.inner.remove(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1340, - "EndOffset": 1342 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1324, - "EndOffset": 1330 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/faststr_map.rs", - "Line": 49, - "StartOffset": 1287, - "EndOffset": 1293 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 49, - "StartOffset": 1294, - "EndOffset": 1301 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 50, - "StartOffset": 1332, - "EndOffset": 1338 - } - ] - }, - "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": 21, - "StartOffset": 528, - "EndOffset": 710, - "Content": "impl FastStrMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 24, - "StartOffset": 639, - "EndOffset": 663 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "src/faststr_map.rs", - "Line": 24, - "StartOffset": 683, - "EndOffset": 690 - } - ], - "Types": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 24, - "StartOffset": 624, - "EndOffset": 637 - }, - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/faststr_map.rs", - "Line": 24, - "StartOffset": 674, - "EndOffset": 681 - } - ] - } - }, - "Types": { - "FastStrMap": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "File": "src/faststr_map.rs", - "Line": 5, - "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\u003cFastStr\u003e and Into\u003cFastStr\u003e.\n#[derive(Debug, Default)]\npub struct FastStrMap {\n inner: FxHashMapRand\u003cTypeId, FastStr\u003e,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/faststr_map.rs", - "Line": 10, - "StartOffset": 353, - "EndOffset": 366 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/faststr_map.rs", - "Line": 10, - "StartOffset": 367, - "EndOffset": 373 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/faststr_map.rs", - "Line": 10, - "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": 4, - "StartOffset": 45, - "EndOffset": 1775, - "Content": "pub trait Forward {\n fn get_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn get_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e;\n\n fn get_all_persistents(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_transients(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_upstreams(\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn get_all_persistents_and_transients_with_rpc_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n fn get_all_persistents_and_transients_with_http_prefix(\n \u0026self,\n ) -\u003e Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e;\n\n fn set_persistent\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_transient\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n fn set_upstream\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\u0026mut self, key: K, value: V);\n\n fn strip_rpc_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_rpc_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn strip_http_prefix_and_set_persistent\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n fn strip_http_prefix_and_set_upstream\u003cK: AsRef\u003cstr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut self,\n key: K,\n value: V,\n );\n\n fn del_persistent\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_transient\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n fn del_upstream\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e;\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 5, - "StartOffset": 90, - "EndOffset": 95 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 5, - "StartOffset": 120, - "EndOffset": 126 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 5, - "StartOffset": 127, - "EndOffset": 134 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 161, - "EndOffset": 166 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 191, - "EndOffset": 197 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 6, - "StartOffset": 198, - "EndOffset": 205 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 231, - "EndOffset": 236 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 261, - "EndOffset": 267 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 7, - "StartOffset": 268, - "EndOffset": 275 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 9, - "StartOffset": 316, - "EndOffset": 322 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 9, - "StartOffset": 324, - "EndOffset": 332 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 9, - "StartOffset": 333, - "EndOffset": 340 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 9, - "StartOffset": 342, - "EndOffset": 349 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 389, - "EndOffset": 395 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 397, - "EndOffset": 405 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 406, - "EndOffset": 413 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 10, - "StartOffset": 415, - "EndOffset": 422 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 461, - "EndOffset": 467 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 469, - "EndOffset": 477 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 478, - "EndOffset": 485 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 11, - "StartOffset": 487, - "EndOffset": 494 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 15, - "StartOffset": 582, - "EndOffset": 588 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 15, - "StartOffset": 589, - "EndOffset": 597 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 15, - "StartOffset": 598, - "EndOffset": 605 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 15, - "StartOffset": 607, - "EndOffset": 614 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 18, - "StartOffset": 702, - "EndOffset": 708 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/forward.rs", - "Line": 18, - "StartOffset": 709, - "EndOffset": 717 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 18, - "StartOffset": 718, - "EndOffset": 725 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 18, - "StartOffset": 727, - "EndOffset": 734 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 20, - "StartOffset": 764, - "EndOffset": 768 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 20, - "StartOffset": 769, - "EndOffset": 776 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 20, - "StartOffset": 782, - "EndOffset": 786 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 20, - "StartOffset": 787, - "EndOffset": 794 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 851, - "EndOffset": 855 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 856, - "EndOffset": 863 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 869, - "EndOffset": 873 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 21, - "StartOffset": 874, - "EndOffset": 881 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 937, - "EndOffset": 941 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 942, - "EndOffset": 949 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 955, - "EndOffset": 959 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 22, - "StartOffset": 960, - "EndOffset": 967 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 24, - "StartOffset": 1047, - "EndOffset": 1052 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 24, - "StartOffset": 1062, - "EndOffset": 1066 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 24, - "StartOffset": 1067, - "EndOffset": 1074 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 29, - "StartOffset": 1182, - "EndOffset": 1187 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 29, - "StartOffset": 1197, - "EndOffset": 1201 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 29, - "StartOffset": 1202, - "EndOffset": 1209 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 35, - "StartOffset": 1321, - "EndOffset": 1326 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 35, - "StartOffset": 1336, - "EndOffset": 1340 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 35, - "StartOffset": 1341, - "EndOffset": 1348 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 40, - "StartOffset": 1457, - "EndOffset": 1462 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "File": "src/forward.rs", - "Line": 40, - "StartOffset": 1472, - "EndOffset": 1476 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 40, - "StartOffset": 1477, - "EndOffset": 1484 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 46, - "StartOffset": 1574, - "EndOffset": 1579 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 46, - "StartOffset": 1608, - "EndOffset": 1614 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 46, - "StartOffset": 1615, - "EndOffset": 1622 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1649, - "EndOffset": 1654 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1683, - "EndOffset": 1689 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 47, - "StartOffset": 1690, - "EndOffset": 1697 - }, - { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1723, - "EndOffset": 1728 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1757, - "EndOffset": 1763 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/forward.rs", - "Line": 48, - "StartOffset": 1764, - "EndOffset": 1771 - } - ] - } - }, - "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": 115, - "StartOffset": 2989, - "EndOffset": 3271, - "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 pub fn clear(\u0026mut 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": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/kv.rs", - "Line": 116, - "StartOffset": 3056, - "EndOffset": 3062 - }, - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "File": "src/kv.rs", - "Line": 117, - "StartOffset": 3081, - "EndOffset": 3086 - } - ] - }, - "Node.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "File": "src/kv.rs", - "Line": 89, - "StartOffset": 2252, - "EndOffset": 2983, - "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 pub fn extend(\u0026mut 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": "", - "PkgPath": "core::option", - "Name": "is_none", - "File": "src/kv.rs", - "Line": 91, - "StartOffset": 2367, - "EndOffset": 2374 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "File": "src/kv.rs", - "Line": 94, - "StartOffset": 2475, - "EndOffset": 2481 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/kv.rs", - "Line": 94, - "StartOffset": 2484, - "EndOffset": 2490 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "File": "src/kv.rs", - "Line": 94, - "StartOffset": 2493, - "EndOffset": 2499 - } - ] - }, - "del_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "del_impl", - "File": "src/kv.rs", - "Line": 23, - "StartOffset": 614, - "EndOffset": 996, - "Content": "macro_rules! del_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cdel_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026mut self, key: K) -\u003e Option\u003cFastStr\u003e {\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}" - }, - "get_all_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "File": "src/kv.rs", - "Line": 54, - "StartOffset": 1416, - "EndOffset": 1640, - "Content": "macro_rules! get_all_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_all_ $name s\u003e](\u0026self) -\u003e Option\u003c\u0026AHashMap\u003cFastStr, FastStr\u003e\u003e {\n self.$name.as_ref()\n }\n }\n };\n}" - }, - "get_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "File": "src/kv.rs", - "Line": 38, - "StartOffset": 998, - "EndOffset": 1414, - "Content": "macro_rules! get_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cget_ $name\u003e]\u003cK: AsRef\u003cstr\u003e\u003e(\u0026self, key: K) -\u003e Option\u003cFastStr\u003e {\n let key = key.as_ref();\n match self.$name.as_ref() {\n Some(v) =\u003e {\n v.get(key).cloned()\n }\n None =\u003e None,\n }\n }\n }\n };\n}" - }, - "set_impl": { - "Exported": true, - "IsMethod": false, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "File": "src/kv.rs", - "Line": 6, - "StartOffset": 131, - "EndOffset": 612, - "Content": "macro_rules! set_impl {\n ($name:ident) =\u003e {\n paste! {\n pub fn [\u003cset_ $name\u003e]\u003cK: Into\u003cFastStr\u003e, V: Into\u003cFastStr\u003e\u003e(\n \u0026mut 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": 64, - "StartOffset": 1642, - "EndOffset": 1918, - "Content": "#[derive(Debug, Default, Clone)]\npub struct Node {\n persistent: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n transient: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n // this is called stale because upstream and downstream all use this.\n stale: Option\u003cAHashMap\u003cFastStr, FastStr\u003e\u003e,\n}", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 66, - "StartOffset": 1709, - "EndOffset": 1715 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 66, - "StartOffset": 1716, - "EndOffset": 1724 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 66, - "StartOffset": 1725, - "EndOffset": 1732 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 66, - "StartOffset": 1734, - "EndOffset": 1741 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1760, - "EndOffset": 1766 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1767, - "EndOffset": 1775 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1776, - "EndOffset": 1783 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 67, - "StartOffset": 1785, - "EndOffset": 1792 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/kv.rs", - "Line": 69, - "StartOffset": 1881, - "EndOffset": 1887 - }, - { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "File": "src/kv.rs", - "Line": 69, - "StartOffset": 1888, - "EndOffset": 1896 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 69, - "StartOffset": 1897, - "EndOffset": 1904 - }, - { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "File": "src/kv.rs", - "Line": 69, - "StartOffset": 1906, - "EndOffset": 1913 - } - ], - "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": 4, - "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": 43, - "StartOffset": 1076, - "EndOffset": 1371, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn and_modify\u003cF: FnOnce(\u0026mut V)\u003e(self, f: F) -\u003e 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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "Results": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "and_modify", - "File": "src/type_map.rs", - "Line": 44, - "StartOffset": 1097, - "EndOffset": 1107 - }, - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 44, - "StartOffset": 1111, - "EndOffset": 1117 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "File": "src/type_map.rs", - "Line": 49, - "StartOffset": 1243, - "EndOffset": 1253 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 50, - "StartOffset": 1280, - "EndOffset": 1292 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 50, - "StartOffset": 1295, - "EndOffset": 1301 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 44, - "StartOffset": 1111, - "EndOffset": 1117 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 46, - "StartOffset": 1168, - "EndOffset": 1172 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 46, - "StartOffset": 1175, - "EndOffset": 1179 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 48, - "StartOffset": 1205, - "EndOffset": 1210 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 52, - "StartOffset": 1343, - "EndOffset": 1354 - } - ] - }, - "Entry.or_default": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "File": "src/type_map.rs", - "Line": 56, - "StartOffset": 1377, - "EndOffset": 1573, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[allow(clippy::unwrap_or_default)]\n #[inline]\n pub fn or_default(self) -\u003e \u0026'a mut V\n where\n V: Default + Send + Sync + 'static,\n {\n self.or_insert_with(V::default)\n }\n}", - "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": 58, - "StartOffset": 1438, - "EndOffset": 1448 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "File": "src/type_map.rs", - "Line": 62, - "StartOffset": 1559, - "EndOffset": 1566 - } - ], - "MethodCalls": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "File": "src/type_map.rs", - "Line": 62, - "StartOffset": 1541, - "EndOffset": 1555 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/type_map.rs", - "Line": 60, - "StartOffset": 1489, - "EndOffset": 1496 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 60, - "StartOffset": 1499, - "EndOffset": 1503 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 60, - "StartOffset": 1506, - "EndOffset": 1510 - } - ] - }, - "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": 16, - "StartOffset": 344, - "EndOffset": 560, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert(self, default: V) -\u003e \u0026'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" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 21, - "StartOffset": 506, - "EndOffset": 509 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "src/type_map.rs", - "Line": 21, - "StartOffset": 483, - "EndOffset": 497 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 531, - "EndOffset": 543 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 22, - "StartOffset": 546, - "EndOffset": 552 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 19, - "StartOffset": 427, - "EndOffset": 431 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 19, - "StartOffset": 434, - "EndOffset": 438 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 21, - "StartOffset": 501, - "EndOffset": 504 - } - ] - }, - "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": 25, - "StartOffset": 566, - "EndOffset": 807, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with\u003cF: FnOnce() -\u003e V\u003e(self, default: F) -\u003e \u0026'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" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 30, - "StartOffset": 751, - "EndOffset": 754 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "File": "src/type_map.rs", - "Line": 30, - "StartOffset": 728, - "EndOffset": 742 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 31, - "StartOffset": 778, - "EndOffset": 790 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 31, - "StartOffset": 793, - "EndOffset": 799 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 26, - "StartOffset": 605, - "EndOffset": 611 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 28, - "StartOffset": 672, - "EndOffset": 676 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 28, - "StartOffset": 679, - "EndOffset": 683 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 30, - "StartOffset": 746, - "EndOffset": 749 - } - ] - }, - "Entry.or_insert_with_key": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "File": "src/type_map.rs", - "Line": 34, - "StartOffset": 813, - "EndOffset": 1070, - "Content": "impl\u003c'a, K, V\u003e Entry\u003c'a, K, V\u003e {\n #[inline]\n #[inline]\n pub fn or_insert_with_key\u003cF: FnOnce(\u0026K) -\u003e V\u003e(self, default: F) -\u003e \u0026'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}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 39, - "StartOffset": 1011, - "EndOffset": 1014 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "File": "src/type_map.rs", - "Line": 39, - "StartOffset": 981, - "EndOffset": 999 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 1041, - "EndOffset": 1053 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "File": "src/type_map.rs", - "Line": 40, - "StartOffset": 1056, - "EndOffset": 1062 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "File": "src/type_map.rs", - "Line": 35, - "StartOffset": 856, - "EndOffset": 862 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 37, - "StartOffset": 925, - "EndOffset": 929 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 37, - "StartOffset": 932, - "EndOffset": 936 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 39, - "StartOffset": 1006, - "EndOffset": 1009 - } - ] - }, - "TypeMap.capacity": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.capacity", - "File": "src/type_map.rs", - "Line": 150, - "StartOffset": 3540, - "EndOffset": 3623, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn capacity(\u0026self) -\u003e 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": 152, - "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": 117, - "StartOffset": 2851, - "EndOffset": 2924, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn clear(\u0026mut 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": 119, - "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": 105, - "StartOffset": 2520, - "EndOffset": 2636, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn contains\u003cT: 'static\u003e(\u0026self) -\u003e bool {\n self.inner.contains_key(\u0026TypeId::of::\u003cT\u003e())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 107, - "StartOffset": 2620, - "EndOffset": 2622 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "File": "src/type_map.rs", - "Line": 107, - "StartOffset": 2598, - "EndOffset": 2610 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 107, - "StartOffset": 2612, - "EndOffset": 2618 - } - ] - }, - "TypeMap.entry": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "File": "src/type_map.rs", - "Line": 132, - "StartOffset": 3170, - "EndOffset": 3367, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn entry\u003cT: 'static\u003e(\u0026mut self) -\u003e Entry\u003c'_, TypeId, T\u003e {\n Entry {\n inner: self.inner.entry(TypeId::of::\u003cT\u003e()),\n _marker: PhantomData,\n }\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 135, - "StartOffset": 3306, - "EndOffset": 3308 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "File": "src/type_map.rs", - "Line": 135, - "StartOffset": 3292, - "EndOffset": 3297 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 133, - "StartOffset": 3223, - "EndOffset": 3228 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 133, - "StartOffset": 3233, - "EndOffset": 3239 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 136, - "StartOffset": 3339, - "EndOffset": 3350 - } - ] - }, - "TypeMap.extend": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "File": "src/type_map.rs", - "Line": 122, - "StartOffset": 2930, - "EndOffset": 3031, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn extend(\u0026mut self, other: TypeMap) {\n self.inner.extend(other.inner)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "File": "src/type_map.rs", - "Line": 124, - "StartOffset": 3006, - "EndOffset": 3012 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 123, - "StartOffset": 2976, - "EndOffset": 2983 - } - ] - }, - "TypeMap.get": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "File": "src/type_map.rs", - "Line": 91, - "StartOffset": 2146, - "EndOffset": 2319, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get\u003cT: 'static\u003e(\u0026self) -\u003e Option\u003c\u0026T\u003e {\n self.inner\n .get(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_ref())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 94, - "StartOffset": 2251, - "EndOffset": 2253 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "File": "src/type_map.rs", - "Line": 94, - "StartOffset": 2238, - "EndOffset": 2241 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2275, - "EndOffset": 2283 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "File": "src/type_map.rs", - "Line": 95, - "StartOffset": 2298, - "EndOffset": 2310 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 92, - "StartOffset": 2193, - "EndOffset": 2199 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 94, - "StartOffset": 2243, - "EndOffset": 2249 - } - ] - }, - "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": 98, - "StartOffset": 2325, - "EndOffset": 2514, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn get_mut\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003c\u0026mut T\u003e {\n self.inner\n .get_mut(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast_mut())\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "Results": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 99, - "StartOffset": 2380, - "EndOffset": 2386 - } - ], - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 101, - "StartOffset": 2446, - "EndOffset": 2448 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "File": "src/type_map.rs", - "Line": 101, - "StartOffset": 2429, - "EndOffset": 2436 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2470, - "EndOffset": 2478 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "File": "src/type_map.rs", - "Line": 102, - "StartOffset": 2493, - "EndOffset": 2505 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 101, - "StartOffset": 2438, - "EndOffset": 2444 - } - ] - }, - "TypeMap.insert": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "File": "src/type_map.rs", - "Line": 86, - "StartOffset": 2003, - "EndOffset": 2140, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn insert\u003cT: Send + Sync + 'static\u003e(\u0026mut self, t: T) {\n self.inner.insert(TypeId::of::\u003cT\u003e(), Box::new(t));\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2110, - "EndOffset": 2112 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2126, - "EndOffset": 2129 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2095, - "EndOffset": 2101 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 87, - "StartOffset": 2034, - "EndOffset": 2038 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 87, - "StartOffset": 2041, - "EndOffset": 2045 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2102, - "EndOffset": 2108 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 88, - "StartOffset": 2121, - "EndOffset": 2124 - } - ] - }, - "TypeMap.is_empty": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.is_empty", - "File": "src/type_map.rs", - "Line": 140, - "StartOffset": 3373, - "EndOffset": 3455, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn is_empty(\u0026self) -\u003e 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": 142, - "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": 127, - "StartOffset": 3037, - "EndOffset": 3164, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn iter(\u0026self) -\u003e ::std::collections::hash_map::Iter\u003c'_, TypeId, AnyObject\u003e {\n self.inner.iter()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "File": "src/type_map.rs", - "Line": 129, - "StartOffset": 3152, - "EndOffset": 3156 - } - ], - "Types": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "src/type_map.rs", - "Line": 128, - "StartOffset": 3103, - "EndOffset": 3107 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 128, - "StartOffset": 3112, - "EndOffset": 3118 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 128, - "StartOffset": 3120, - "EndOffset": 3129 - } - ] - }, - "TypeMap.len": { - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.len", - "File": "src/type_map.rs", - "Line": 145, - "StartOffset": 3461, - "EndOffset": 3534, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn len(\u0026self) -\u003e 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": 147, - "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": 110, - "StartOffset": 2642, - "EndOffset": 2845, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn remove\u003cT: 'static\u003e(\u0026mut self) -\u003e Option\u003cT\u003e {\n self.inner\n .remove(\u0026TypeId::of::\u003cT\u003e())\n .and_then(|boxed| boxed.downcast().ok().map(|boxed| *boxed))\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap" - } - }, - "FunctionCalls": [ - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "File": "src/type_map.rs", - "Line": 113, - "StartOffset": 2756, - "EndOffset": 2758 - } - ], - "MethodCalls": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "File": "src/type_map.rs", - "Line": 113, - "StartOffset": 2740, - "EndOffset": 2746 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2780, - "EndOffset": 2788 - }, - { - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2803, - "EndOffset": 2811 - }, - { - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2814, - "EndOffset": 2816 - }, - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "File": "src/type_map.rs", - "Line": 114, - "StartOffset": 2819, - "EndOffset": 2822 - } - ], - "Types": [ - { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "File": "src/type_map.rs", - "Line": 111, - "StartOffset": 2696, - "EndOffset": 2702 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 113, - "StartOffset": 2748, - "EndOffset": 2754 - } - ] - }, - "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": 79, - "StartOffset": 1812, - "EndOffset": 1997, - "Content": "impl TypeMap {\n #[inline]\n #[inline]\n pub fn with_capacity(capacity: usize) -\u003e 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": 82, - "StartOffset": 1926, - "EndOffset": 1950 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "src/type_map.rs", - "Line": 82, - "StartOffset": 1970, - "EndOffset": 1977 - } - ], - "Types": [ - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "File": "src/type_map.rs", - "Line": 81, - "StartOffset": 1882, - "EndOffset": 1889 - }, - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 82, - "StartOffset": 1911, - "EndOffset": 1924 - }, - { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "File": "src/type_map.rs", - "Line": 82, - "StartOffset": 1961, - "EndOffset": 1968 - } - ] - } - }, - "Types": { - "AnyObject": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 8, - "StartOffset": 142, - "EndOffset": 197, - "Content": "pub(crate) type AnyObject = Box\u003cdyn Any + Send + Sync\u003e;", - "SubStruct": [ - { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "File": "src/type_map.rs", - "Line": 8, - "StartOffset": 170, - "EndOffset": 173 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "File": "src/type_map.rs", - "Line": 8, - "StartOffset": 178, - "EndOffset": 181 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "File": "src/type_map.rs", - "Line": 8, - "StartOffset": 184, - "EndOffset": 188 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "File": "src/type_map.rs", - "Line": 8, - "StartOffset": 191, - "EndOffset": 195 - } - ] - }, - "Entry": { - "Exported": true, - "TypeKind": "struct", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 10, - "StartOffset": 199, - "EndOffset": 305, - "Content": "pub struct Entry\u003c'a, K: 'a, V: 'a\u003e {\n inner: MapEntry\u003c'a, K, AnyObject\u003e,\n _marker: PhantomData\u003cV\u003e,\n}", - "SubStruct": [ - { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "File": "src/type_map.rs", - "Line": 11, - "StartOffset": 247, - "EndOffset": 255 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 11, - "StartOffset": 263, - "EndOffset": 272 - }, - { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "File": "src/type_map.rs", - "Line": 12, - "StartOffset": 288, - "EndOffset": 299 - } - ], - "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": 66, - "StartOffset": 1577, - "EndOffset": 1670, - "Content": "#[derive(Debug, Default)]\npub struct TypeMap {\n inner: FxHashMapRand\u003cTypeId, AnyObject\u003e,\n}", - "SubStruct": [ - { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "src/type_map.rs", - "Line": 68, - "StartOffset": 1635, - "EndOffset": 1648 - }, - { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "File": "src/type_map.rs", - "Line": 68, - "StartOffset": 1649, - "EndOffset": 1655 - }, - { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "File": "src/type_map.rs", - "Line": 68, - "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;" - } - ] - }, - "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};" - } - ] - }, - "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;" - } - ] - }, - "src/forward.rs": { - "Path": "src/forward.rs", - "Imports": [ - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use crate::AHashMap;" - } - ] - }, - "src/kv.rs": { - "Path": "src/kv.rs", - "Imports": [ - { - "Path": "use ahash::AHashMap;" - }, - { - "Path": "use faststr::FastStr;" - }, - { - "Path": "use paste::paste;" - }, - { - "Path": "use super::*;" - } - ] - }, - "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::*;" - } - ] - }, - "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;" - } - ] - } - } - }, - "rustc-hash@2.0.0": { - "Language": "rust", - "Version": "2.0.0", - "Name": "rustc-hash", - "Dir": "", - "Packages": { - "rustc-hash::random_state": { - "IsMain": false, - "IsTest": false, - "PkgPath": "rustc-hash::random_state", - "Functions": { - "BuildHasher\u003cFxRandomState\u003e.build_hasher": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "BuildHasher\u003cFxRandomState\u003e.build_hasher", - "File": "random_state.rs", - "Line": 47, - "StartOffset": 1626, - "EndOffset": 1711, - "Content": "impl core::hash::BuildHasher for FxRandomState {\n type Hasher = FxHasher;\n\n fn build_hasher(\u0026self) -\u003e Self::Hasher {\n FxHasher::with_seed(self.seed)\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - }, - "Default\u003cFxRandomState\u003e::default": { - "Exported": false, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "File": "random_state.rs", - "Line": 53, - "StartOffset": 1752, - "EndOffset": 1800, - "Content": "impl Default for FxRandomState {\n fn default() -\u003e Self {\n Self::new()\n }\n}", - "Receiver": { - "IsPointer": false, - "Type": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState" - } - } - } - }, - "Types": { - "FxHashMapRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "File": "random_state.rs", - "Line": 4, - "StartOffset": 65, - "EndOffset": 208, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashMapRand\u003cK, V\u003e = HashMap\u003cK, V, FxRandomState\u003e;" - }, - "FxHashSetRand": { - "Exported": false, - "TypeKind": "type-parameter", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashSetRand", - "File": "random_state.rs", - "Line": 7, - "StartOffset": 210, - "EndOffset": 347, - "Content": "/// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].\npub type FxHashSetRand\u003cV\u003e = HashSet\u003cV, FxRandomState\u003e;" - }, - "FxRandomState": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxRandomState", - "File": "random_state.rs", - "Line": 10, - "StartOffset": 349, - "EndOffset": 687, - "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.\npub struct FxRandomState {\n seed: usize,\n}", - "Methods": { - "build_hasher": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "BuildHasher\u003cFxRandomState\u003e.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": 2899, - "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": 348, - "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": 726, - "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": 1124, - "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": 1405, - "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": 871, - "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": 3245, - "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": 893, - "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": 1152, - "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": 1188, - "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": 604, - "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": 534, - "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": 586, - "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": 2821, - "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": 2848, - "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": 1243, - "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": 330, - "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": 2238, - "StartOffset": 70549, - "EndOffset": 70554, - "Content": "Entry" - }, - "Iter": { - "Exported": false, - "TypeKind": "struct", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "File": "map.rs", - "Line": 1485, - "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": 137, - "StartOffset": 4320, - "EndOffset": 4327, - "Content": "println" - } - }, - "Types": {}, - "Vars": {} - } - }, - "Dependencies": {}, - "Files": { - "macros.rs": { - "Path": "macros.rs" - }, - "map.rs": { - "Path": "map.rs" - } - } - } - }, - "Graph": { - "?alloc::boxed#Box": { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?alloc::boxed#new": { - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - } - ] - }, - "?alloc::boxed::convert#downcast": { - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?alloc::str#to_owned": { - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 3 - } - ] - }, - "?alloc::string#String": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 - } - ] - }, - "?alloc::string#push": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 9 - } - ] - }, - "?alloc::string#push_str": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 3 - } - ] - }, - "?alloc::string#with_capacity": { - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 - } - ] - }, - "?alloc::sync#Arc": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 21 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 31 - } - ] - }, - "?alloc::sync#as_ref": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 9 - } - ] - }, - "?alloc::sync#clone": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 23 - } - ] - }, - "?alloc::sync#new": { - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 21 - } - ] - }, - "?core::any#Any": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?core::any#TypeId": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - } - ] - }, - "?core::any#downcast_mut": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 6 - } - ] - }, - "?core::any#downcast_ref": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 4 - } - ] - }, - "?core::any#of": { - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 2 - } - ] - }, - "?core::char::methods#to_ascii_lowercase": { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 5 - } - ] - }, - "?core::char::methods#to_ascii_uppercase": { - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 5 - } - ] - }, - "?core::convert#AsRef": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 36 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 42 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 43 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 44 - } - ] - }, - "?core::convert#Into": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 36 - } - ] - }, - "?core::convert#as_ref": { - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 5 - } - ] - }, - "?core::default#Default": { - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - } - ] - }, - "?core::default#default": { - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 6 - } - ] - }, - "?core::fmt#debug_struct": { - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 1 - } - ] - }, - "?core::fmt::builders#finish": { - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Line": 1 - } - ] - }, - "?core::iter::traits::iterator#map": { - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 22 - } - ] - }, - "?core::marker#PhantomData": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 2 - } - ] - }, - "?core::marker#Send": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?core::marker#Sync": { - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 0 - } - ] - }, - "?core::ops::function#FnOnce": { - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 1 - } - ] - }, - "?core::option#Option": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 32 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 34 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 38 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 39 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 42 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 43 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 44 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 8 - } - ] - }, - "?core::option#and_then": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get_mut", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?core::option#as_mut": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 1 - } - ] - }, - "?core::option#as_ref": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 4 - } - ] - }, - "?core::option#clone": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 10 - } - ] - }, - "?core::option#get_or_insert_with": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - } - ] - }, - "?core::option#is_none": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 23 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 2 - } - ] - }, - "?core::option#map": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?core::option#or_else": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 6 - } - ] - }, - "?core::option#take": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 19 - } - ] - }, - "?core::option#unwrap": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with_key", - "Line": 6 - } - ] - }, - "?core::option#unwrap_or": { - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 12 - } - ] - }, - "?core::result#ok": { - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - } - ] - }, - "?core::str#chars": { - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 3 - } - ] - }, - "?core::str#len": { - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 3 - } - ] - }, - "?core::str#strip_prefix": { - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 2 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.get": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 5 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#AHashMap.remove": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 15 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 17 - } - ] - }, - "ahash@0.8.11?ahash::hash_map#Extend\u003cAHashMap\u003e.extend": { - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 13 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 19 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.extend", - "Line": 5 - } - ] - }, - "faststr@0.2.19?faststr#FastStr": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 33 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 8 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 26 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Line": 27 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 14 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 16 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 20 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 25 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 31 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 36 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 42 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 43 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::forward", - "Name": "Forward", - "Line": 44 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 0 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 8 - } - ] - }, - "faststr@0.2.19?faststr#FastStr::from_string": { - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 5 - } - ] - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_downstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "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 - } - ], - "References": null - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "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 - } - ], - "References": null - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#DEFAULT_MAP_SIZE": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_string", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - } - ] - }, - "metainfo?metainfo#Debug\u003cMetaInfo\u003e.fmt": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Debug\u003cMetaInfo\u003e.fmt", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt", - "Name": "debug_struct", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::fmt::builders", - "Name": "finish", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.get_all_upstreams": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Line": 6 - } - ], - "References": null - }, - "metainfo?metainfo#HTTP_PREFIX_BACKWARD": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_PERSISTENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#HTTP_PREFIX_TRANSIENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#MetaInfo": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 32 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 32 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 33 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 34 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 34 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 38 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 38 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 39 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 39 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 2 - } - ] - }, - "metainfo?metainfo#MetaInfo.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 - }, - { - "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 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.contains": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.contains_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.contains_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 13 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.derive": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "new", - "Line": 21 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 23 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "clone", - "Line": 10 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "take", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "clone", - "Line": 23 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 21 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.ensure_backward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.ensure_forward_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 2 - } - ], - "References": null - }, - "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": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 6 - }, - { - "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": "Extend\u003cAHashMap\u003e.extend", - "Line": 13 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 23 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 26 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 26 - }, - { - "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 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.get": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.get", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - } - ], - "References": null - }, - "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::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": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 8 - }, - { - "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": "Extend\u003cAHashMap\u003e.extend", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_all_persistents_and_transients": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Type": "FUNC", - "Dependencies": [ - { - "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": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "len", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap_or", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Line": 19 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "iter", - "Line": 21 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::iter::traits::iterator", - "Name": "map", - "Line": 22 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Line": 29 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Line": 6 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 - } - ] - }, - "metainfo?metainfo#MetaInfo.get_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.get_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_ref", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.get", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "or_else", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "as_ref", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - } - ], - "References": null - }, - "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": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": null - }, - "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": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "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": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": null - }, - "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": "", - "PkgPath": "core::option", - "Name": "get_or_insert_with", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.insert", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "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": "DEFAULT_MAP_SIZE", - "Line": 4 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.remove_faststr": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_faststr", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo.remove_string": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.remove_string", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap.remove", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "as_ref", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo#MetaInfo::from_node": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::sync", - "Name": "Arc", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.derive", - "Line": 23 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_BACKWARD": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_PERSISTENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#RPC_PREFIX_TRANSIENT": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Type": "VAR", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo#del_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "del_impl", - "Type": "FUNC", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#get_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "get_impl", - "Type": "FUNC", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo#set_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "set_impl", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 7 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 7 - } - ] - }, - "metainfo?metainfo::backward#Backward": { - "ModPath": "metainfo", - "PkgPath": "metainfo::backward", - "Name": "Backward", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 12 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 26 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 26 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 26 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 27 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 27 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 27 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 8 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 8 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cHttpConverter\u003e.remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "HTTP_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": null - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_backward_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_BACKWARD", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_persistent_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_PERSISTENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#Converter\u003cRpcConverter\u003e.remove_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "RPC_PREFIX_TRANSIENT", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_persistent", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_http_prefix_and_set_upstream", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_http_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_http_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_http_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_backward_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.add_transient_prefix", - "Line": 1 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cHttpConverter\u003e.remove_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo::convert#HttpConverter.to_http_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_lowercase", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.add_prefix_and_to_http_format", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format_string", - "Line": 2 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_http_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo::convert#HttpConverter.to_rpc_format": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "chars", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::char::methods", - "Name": "to_ascii_uppercase", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push", - "Line": 9 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format_string", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.remove_prefix_and_to_rpc_format", - "Line": 4 - } - ] - }, - "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": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "HttpConverter.to_rpc_format", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 0 - } - ], - "References": null - }, - "metainfo?metainfo::convert#RpcConverter": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients_with_rpc_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_upstream", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_persistent", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents_and_transients_with_rpc_prefix", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.strip_rpc_prefix_and_set_backward_downstream", - "Line": 6 - } - ] - }, - "metainfo?metainfo::convert#RpcConverter.add_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.add_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "with_capacity", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "len", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "push_str", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::string", - "Name": "String", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.add_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo::convert#RpcConverter.remove_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "RpcConverter.remove_prefix", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr::from_string", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::str", - "Name": "strip_prefix", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::str", - "Name": "to_owned", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_transient_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_persistent_prefix", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "Converter\u003cRpcConverter\u003e.remove_backward_prefix", - "Line": 1 - } - ] - }, - "metainfo?metainfo::convert#add_transient_prefix": { - "ModPath": "metainfo", - "PkgPath": "metainfo::convert", - "Name": "add_transient_prefix", - "Type": "UNKNOWN", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 29 - } - ] - }, - "metainfo?metainfo::faststr_map#FastStrMap": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 18 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert_faststr", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_faststr", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 34 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 1 - } - ] - }, - "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 - } - ], - "References": null - }, - "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 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo::faststr_map#FastStrMap.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": null - }, - "metainfo?metainfo::faststr_map#FastStrMap.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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 - } - ], - "References": null - }, - "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": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - } - ], - "References": null - }, - "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 - } - ], - "References": null - }, - "metainfo?metainfo::faststr_map#FastStrMap.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 18 - }, - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 11 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 14 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 16 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 17 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 18 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 20 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 25 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 25 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 25 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 31 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 36 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "Into", - "Line": 36 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 36 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 42 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 42 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 42 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 43 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 43 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 43 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::convert", - "Name": "AsRef", - "Line": 44 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 44 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 44 - } - ], - "References": null - }, - "metainfo?metainfo::kv#DEFAULT_CAPACITY": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "DEFAULT_CAPACITY", - "Type": "VAR", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo::kv#Node": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "AHashMap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "faststr@0.2.19", - "PkgPath": "faststr", - "Name": "FastStr", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_backward_node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.ensure_forward_node", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo::from_node", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 38 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 39 - } - ] - }, - "metainfo?metainfo::kv#Node.clear": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "clear", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::option", - "Name": "is_none", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "as_mut", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "ahash@0.8.11", - "PkgPath": "ahash::hash_map", - "Name": "Extend\u003cAHashMap\u003e.extend", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "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": null, - "References": null - }, - "metainfo?metainfo::kv#get_all_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_all_impl", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_persistents", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_transients", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_downstreams", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Forward\u003cMetaInfo\u003e.get_all_upstreams", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "Backward\u003cMetaInfo\u003e.get_all_backward_transients", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 10 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 10 - } - ] - }, - "metainfo?metainfo::kv#get_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "get_impl", - "Type": "FUNC", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo::kv#set_impl": { - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "set_impl", - "Type": "FUNC", - "Dependencies": null, - "References": null - }, - "metainfo?metainfo::type_map#AnyObject": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "Any", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 0 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 0 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Reference", - "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 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.entry", - "Line": 1 - } - ] - }, - "metainfo?metainfo::type_map#Entry.and_modify": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.and_modify", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "and_modify", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 7 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "Line": 9 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#Entry.or_default": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_default", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::default", - "Name": "default", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 4 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#Entry.or_insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Line": 5 - } - ], - "References": null - }, - "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": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Line": 5 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "or_insert_with_key", - "Line": 5 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "unwrap", - "Line": 6 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::ops::function", - "Name": "FnOnce", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Line": 5 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#TypeMap": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Type": "TYPE", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo", - "Line": 32 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Line": 1 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 2 - } - ] - }, - "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 - } - ], - "References": null - }, - "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 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "contains_key", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "entry", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "PhantomData", - "Line": 4 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#TypeMap.extend": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.extend", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "extend", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_ref", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "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": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "get_mut", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "downcast_mut", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 3 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#TypeMap.insert": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.insert", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "new", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "insert", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Send", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::marker", - "Name": "Sync", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed", - "Name": "Box", - "Line": 2 - } - ], - "References": [ - { - "Kind": "Reference", - "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 - } - ], - "References": null - }, - "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": 2 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Iter", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "AnyObject", - "Line": 1 - } - ], - "References": null - }, - "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 - } - ], - "References": null - }, - "metainfo?metainfo::type_map#TypeMap.remove": { - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap.remove", - "Type": "FUNC", - "Dependencies": [ - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "of", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "remove", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "and_then", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "alloc::boxed::convert", - "Name": "downcast", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::result", - "Name": "ok", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "map", - "Line": 4 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::option", - "Name": "Option", - "Line": 1 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::any", - "Name": "TypeId", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "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.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - }, - { - "Kind": "Dependency", - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Line": 3 - }, - { - "Kind": "Dependency", - "ModPath": "", - "PkgPath": "core::default", - "Name": "Default", - "Line": 3 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.extend", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.insert", - "Line": 4 - } - ] - }, - "rustc-hash@2.0.0?rustc-hash::random_state#Default\u003cFxRandomState\u003e::default": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "Default\u003cFxRandomState\u003e::default", - "Type": "FUNC", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - } - ] - }, - "rustc-hash@2.0.0?rustc-hash::random_state#FxHashMapRand": { - "ModPath": "rustc-hash@2.0.0", - "PkgPath": "rustc-hash::random_state", - "Name": "FxHashMapRand", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap", - "Line": 2 - } - ] - }, - "std?std::collections::hash::map#Entry": { - "ModPath": "std", - "PkgPath": "std::collections::hash::map", - "Name": "Entry", - "Type": "TYPE", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 1 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.capacity", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.clear", - "Line": 9 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.clear", - "Line": 2 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::kv", - "Name": "Node.clear", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.contains_string", - "Line": 6 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.contains", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.entry", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.extend", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.get_mut", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.insert", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.is_empty", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 17 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 21 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.iter", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_backword_transients_with_prefix", - "Line": 11 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo", - "Name": "MetaInfo.get_all_persistents_and_transients", - "Line": 12 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.len", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert", - "Line": 5 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "Entry.or_insert_with", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap.remove", - "Line": 2 - }, - { - "Kind": "Reference", - "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", - "Dependencies": null, - "References": [ - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::faststr_map", - "Name": "FastStrMap::with_capacity", - "Line": 3 - }, - { - "Kind": "Reference", - "ModPath": "metainfo", - "PkgPath": "metainfo::type_map", - "Name": "TypeMap::with_capacity", - "Line": 3 - } - ] - } - } -} \ No newline at end of file diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index 942b0afb..474a4a9c 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -2041,14 +2041,14 @@ const ( - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` - - 输出 [localsession.json](localsession.json) + - 输出 [localsession.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/localsession.json) - https://github.com/cloudwego/metainfo - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` - - 输出 [metainfo.json](metainfo.json) + - 输出 [metainfo.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/metainfo.json) ## 扩展其它语言 Parser From edca80bc6720751c44695578636a144be4c257f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Mon, 21 Apr 2025 13:10:14 +0800 Subject: [PATCH 14/15] fix --- docs/uniast-zh.md | 1399 +-------------------------------------------- 1 file changed, 9 insertions(+), 1390 deletions(-) diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index 474a4a9c..ad2b3c93 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -60,13 +60,11 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 -# 结构定义 - -## Go Struct 形式 +# Go Struct 形式 - 代码详见 [Repository](/lang/uniast/ast.go) 定义 -## JSON 形式 +# JSON 形式 以下以 [cloudwego/localsession](https://github.com/cloudwego/localsession.git) 库解析为示例介绍 @@ -291,7 +289,9 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "StartOffset": 3485, "EndOffset": 3490 } - ] + ], + "Types": [], + "Vars": [] } ``` @@ -429,7 +429,8 @@ Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无 "PkgPath": "github.com/cloudwego/localsession", "Name": "Session.WithValue" } - } + }, + "Implements": [] } ``` @@ -657,14 +658,14 @@ const ( - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` - - 输出 + - 输出 [localsession.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/localsession.json) - https://github.com/cloudwego/metainfo - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` - - 输出 + - 输出 [metainfo.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/metainfo.json) ## 扩展其它语言 Parser @@ -672,1385 +673,3 @@ const ( 当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](https://bytedance.sg.larkoffice.com/docx/QNZwdYBPjoUUKtxD3XMlstlpglh) Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 - -## Identity 节点唯一标识 - -为了保证精确查询和可扩展存储,约定 ModPath**+**PkgPath**+**SymbolName 为 AST Node 的**全球唯一标识**。 - - -```json -{ - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands" -} -``` - -- ModPath: 一个完整的构建单元,ModPath内容为安装路径@版本号。该信息对于LLM并不需要,只是为了保证 Identity 的全球唯一性而保存。它在各个语言中对应不同概念: - - - Golang:对应 module,如 github.com/cloudwego/hertz@v0.1.0 - - - Rust:对应 crate,如 [serde_json](https://crates.io/crates/serde_json)@v1.0.114 - - 为了方便人工debug,这里有个实现约定: - - - 仓库内部函数或类型(包括**本包和本仓库内**其它子包函数)节点的Module**通常**不带版本号 - - - 外部函数(第三方repo引入的函数)的 Module **通常**带上版本号 - - - 判断一个 Module 是否为第三方依赖尽量通过 Module.Dir 是否为空来判断,这里不保证 - - -- PkgPath:语言中一个独立的命名空间,PkgPath对应语言中一个包的import path**:** - - - Golang:对应 package,如 github.com/cloudwego/hertz/pkg/app/server - - - Rust:对应 mod,如 [serde_json](https://crates.io/crates/serde_json)::[value](https://docs.rs/serde_json/1.0.114/serde_json/value/index.html) - - - 提示:这里应该尽量等同于代码文件中的 import (use) 路径,方便 LLM 理解 - - -- Name:在包内的唯一符号名 - - - 如果节点类型 - - - **如果节点为method,应该以**`TypeName.MethodName`**来表示。**此外,有些语言如**rust允许一个类型为不同的接口实现同名方法**(比如rust),因此为了避免冲突TypeName可进一步扩展为` InterfaceName` 形式 - - -- **字符串(Key)形式** - - - Full() 完整形式为 `ModPath?PkgPath#Name` - - - String() Format形式为 PkgPath#Name,一般通过该形式展示给 LLM 即可 - - -- **每个 AST 都会带有 Identity,但是是以内嵌的形式到具体节点字段中(Name、ModPath、PkgPath 三个字段)** - - - - - -## 结构体定义(Go) - -- 代码详见 abcoder/lang/uniast#Repository - - -## JSON 定义 - -以下以 `[cloudwego/localsession](https://github.com/cloudwego/localsession.git)` 库解析为示例介绍 - - -## Repository - -一个仓库由 实体Modules 和 关系Graph 组成 - - -```json -{ - "Identity": "/Users/bytedance/golang/work/abcoder/tmp/localsession", - "Modules": { - "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, - "github.com/cloudwego/localsession": {} - }, - "Graph": {} -} -``` - -- Identity: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径作为Identity - - -- Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 - - - 本仓库模块ModePath == Module.Name - - - 外部依赖模块ModePath== Modele.Name@version - - -- Graph:AST Node 的依赖拓扑图,见下文【Graph】 - - -### Module - -代码独立编译单元,对应Identity中的ModPath,内部包含各个包 - - -```json -{ - "Name": "github.com/cloudwego/localsession" - "Language": "go", - "Version": "", - "Name": "github.com/cloudwego/localsession", - "Dir": ".", - "Packages": { - "github.com/cloudwego/localsession": {}, - "github.com/cloudwego/localsession/backup": {} - } - "Dependencies": { - "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" - }, - "Files": { - ".github/ISSUE_TEMPLATE/bug_report.md": {}, - "backup/metainfo.go": {} - } -} -``` - -- Name:模块名(不带版本号) - - -- Language:代码使用的语言--对于多语言的仓库,一个模块的语言必须是唯一的。但是一个仓库可以有不同语言的模块。 - - -- Dir:**模块与仓库根的相对路径。注意:** - - - **只有本仓库内的模块需要设置且不能为空** - - - **第三方依赖必须为空(当前用于判断是否为第三方依赖)** - - -- Dependencies:模块构建的第三方依赖模块字典 {ModName}:{ModPath} - - -- Packages: 包含的子包,{PkgPath}:{Pacakge AST} 字典 - - -- Files:模块文件信息,key为**相对repo的路径。**这里建议包括仓库所有文件,方便writer回写 - - -#### File - -文件信息,包括代码文件和非代码文件都会记录 - - -```json -{ - "Path": "manager.go", - "Imports": [], - "Package": "github.com/cloudwego/localsession" -} -``` - -- Path: 文件**相对仓库根的路径** - - -- Imports: import 代码, - - -##### Import - -```json -{ - "Alias": "_", - "Path": "\"unsafe\"" -} -``` - -- Path:导入路径主要用于writer写入代码,具体内容根据各个语言情况而定 - - - rust 中为 `use xx::yy;` - - - Golang 中为 `"github.com/cloudwego/abcoder"` - - -- Alias:导入别名,可为空 - - -#### Package - -一个代码命名空间,对应Identity.PkgPath,内部包含各个AST Node实体 - - -```json -{ - "IsMain": false, - "IsTest": false, - "PkgPath": "github.com/cloudwego/localsession/backup", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Functions": { - "BackupCtx": {} - }, - "Types": {}, - "Vars": {} -} -``` - -- PkgPath:模块路径,见【Identity】介绍 - - -- IsMain: 是否是二进制包 - - -- IsTest: 是否是测试包 - - -- Functions:包含函数AST, {FuncName}:{Function AST} 的字典 - - -- Types:包含类型AST,{TypeName}:{Type AST}的字典 - - -- Vars:包含全局变量/常量, {VarName}:{Variant AST} 的字典 - - -##### Function - -函数类型的AST Node实体,对应【NodeType】为 FUNC,包括函数、方法、接口函数 - - -```json -{ - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.BindSession", - "File": "manager.go", - "Line": 133, - "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}", - "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": 133, - "StartOffset": 3386, - "EndOffset": 3398 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 133, - "StartOffset": 3400, - "EndOffset": 3409 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "File": "manager.go", - "Line": 139, - "StartOffset": 3547, - "EndOffset": 3564 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "com/cloudwego/localsession.Store", - "File": "manager.go", - "Line": 136, - "StartOffset": 3485, - "EndOffset": 3490 - } - ] -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name:函数名称 - - - 如果函数为method,**应该**以 {TypeName}.{Methodname}来表示 - - -- File:所在的文件名 - - -- Line:**起始位置文件的行号**(从0开始) - - -- StartOffset:代码起始位置**相对文件头的字节偏移量** - - -- EndOffset: 代码结束位置**相对文件头的字节偏移量** - - -- Exported:是否包外可见导出 - - -- IsMethod:是否是一个方法 - - -- IsInterfaceMethod:是否是接口的方法--这里abcoder parse收集InterfaceMethod为了方便LLM理解,但是实际上write中并不会认为其是一个语言实体 - - -- Receiver:如果是方法的话,会有的receiver结构体。 - - - IsPointer:是否是指针接受者(可改变对象内容)。这个在某些语言中有比较重要意义,因此保留 - - - Type:对应的receiver结构体Identity - - -- Params:入参中关联的类型的Dependency数组(见下文【Dependency】),如果是匿名信参数ParamName由ParamTypeName替代 - - -- Results:出参中关联的类型Dependency数组, {ResultName}:{Result Type Identity},如果是匿名信参数ParamName由ParamTypeName替代 - - -- Content:函数完整内容,包括函数签名+`\n`+函数实现代码 - - -- FunctionCalls:当前函数中调用的其他函数Dependency数组。按依赖在代码中出现的次序排列(并去重)。元素为对应的 AST 节点 Identity - - -- MethodCalls:当前函数中调用的方法Dependency数组,按依赖在代码中出现的次序排列(并去重)。规则同【FunctionCalls】。 - - -- Types: 当前函数内引用的类型,如 `var x TypeX`中的TypeX - - -- Vars:当前函数内引用的全局量,包括变量和常量 - - -###### Dependency - -表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别。 - -- 注意:UniAST**一般只收集非标准库的依赖**(下同),因为我们认为对于标准库节点是LLM已经具备的公开知识。 - - -``` -{ - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionID", - "File": "manager.go", - "Line": 133, - "StartOffset": 3386, - "EndOffset": 3398 -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 结构体名称 - - -- File:依赖点(不是被依赖节点)token所处的代码文件 - - -- Line:依赖点(不是被依赖节点)token所处的文件代码行(从零开始) - - -- StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 - - -- EndOffset:依赖点(不是被依赖节点)token结束位置相对代码文件的偏移 - - -##### Type - -类型定义,【NodeType】为 TYPE,包括具体语言中的类型定义,如 结构体、枚举、接口、类型别名等 - - -```json -{ - "Exported": true, - "TypeKind": "struct", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager", - "File": "manager.go", - "Line": 45, - "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": 49, - "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" - } - }, - "Implements": [] -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 结构体名称 - - -- File:声明所在的文件名 - - -- Line:声明所在文件的行号 - - -- TypeKind:类型的种类 Kind -- 这里不做统一约束,由具体语言定义 - - -- Exported:是否包外可见导出 - - -- Content:具体结构体定义,包括类型签名+`\n`+类型具体字段 - - -- SubStructs:字段中非嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val为对应类型 AST 节点 Identity - - -- InlineStructs: 字段中嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val对应类型 AST 节点 Identity - - - 原因:在某些语言如 Golang 中嵌套子结构体的 methods 会被继承到父结构体中,因此和一般子结构体区分开,方便回溯该类型拥有的所有 method - - -- Methods:结构体对应的全部方法**Identity**,key为方法名,val为函数Identity。 - - - 注意这里不应该包括 InlineStruct 的 methods - - -- Implements:该类型实现了哪些接口的**Identity**列表,如: -```json -//github.com/cloudwego/localsession?github.com/cloudwego/localsession#ManagerOptions -"Implements": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session" - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session" - } -] -``` - - - - - -##### Var - -全局量,包括变量和常量,**但是必须是全局** - - -```rust -{ - "IsExported": false, - "IsConst": false, - "IsPointer": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "defaultShardCap", - "File": "manager.go", - "Line": 52, - "StartOffset": 1501, - "EndOffset": 1521, - "Type": { - "ModPath": "", - "PkgPath": "", - "Name": "int" - }, - "Content": "var defaultShardCap int = 10" -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 变量名称 - - -- File:声明所在的文件名 - - -- Line:声明所在文件的行号 - - -- IsExported:是否导出 - - -- IsConst:是否为常量 - - -- Type:其类型对应的Identity(**包括 go 原始类型**),go内置类型可以只有name(如 string, uint) - - -- Content:定义代码,如 `var A int = 1 ` - - -### Graph - -整个仓库的AST Node依赖拓扑图。形式为 Identity => Node 的映射,其中每个 Node 包含对其它节点的依赖关系。基于该拓扑图,可以实现**任意节点上下文的递归获取**。 - - -```json -{ - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions": {}, - "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues": {} -} -``` - -其中 key 通过 【Identity 的完整字符串】形式得到 - - -#### Node - -一个node表示一个独立的语法单元,通常包括代码、位置信息和依赖关系 - - -```go -{ - "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": "SESSION_CONFIG_KEY", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 3 - } - ] -} -``` - -- ModPath: 目标节点模块路径,见【Identity】介绍 - - -- PkgPath:目标节点包路径,见【Identity】介绍 - - -- Name: 目标节点变量名称 - - -- Type: 目标节点类型,见【NodeType】介绍 - - -- Dependencies:该节点依赖的其他节点,每个元素对象为Relation - - -- References:依赖该节点的其他节点,每个元素对象为Relation - - -##### NodeType - -包括三种类型: - - -``` -// Node Type -type NodeType int - -const ( - UNKNOWN NodeType = iota - // top Function、 methods - FUNC - // Struct、TypeAlias、Enum... - TYPE - // Global Varable or Global Const - VAR -) -``` - -- FUNC:函数,包括方法、顶层函数 - - -- TYPE:类型定义,包括 struct、类型别名、接口等通用的类型定义 - - -- VAR:全局变量或常量(不包括局部变量,因为我们局部变量可以收集到FUNC或TYPE定义中) - - -#### Relation - -用于存储两个节点之间的关系。 - - -``` -{ - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "Line": 1 -} -``` - -- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE - - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 变量名称 - - -- Line: 产生关系的位置在主节点代码的行号(即函数体内的行号) - - -## 完整JSON示例 - -- https://github.com/cloudwego/localsession - - - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` - - - 输出 - - -- https://github.com/cloudwego/metainfo - - - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` - - - 输出 - - -## 扩展其它语言 Parser - -当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](https://bytedance.sg.larkoffice.com/docx/QNZwdYBPjoUUKtxD3XMlstlpglh) -Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。 - - -## Identity 节点唯一标识 - -为了保证精确查询和可扩展存储,约定 ModPath**+**PkgPath**+**SymbolName 为 AST Node 的**全球唯一标识**。 - - -```json -{ - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Name": "RecoverCtxOnDemands" -} -``` - -- ModPath: 一个完整的构建单元,ModPath内容为安装路径@版本号。该信息对于LLM并不需要,只是为了保证 Identity 的全球唯一性而保存。它在各个语言中对应不同概念: - - - Golang:对应 module,如 github.com/cloudwego/hertz@v0.1.0 - - - Rust:对应 crate,如 [serde_json](https://crates.io/crates/serde_json)@v1.0.114 - - 为了方便人工debug,这里有个实现约定: - - - 仓库内部函数或类型(包括**本包和本仓库内**其它子包函数)节点的Module**通常**不带版本号 - - - 外部函数(第三方repo引入的函数)的 Module **通常**带上版本号 - - - 判断一个 Module 是否为第三方依赖尽量通过 Module.Dir 是否为空来判断,这里不保证 - - -- PkgPath:语言中一个独立的命名空间,PkgPath对应语言中一个包的import path**:** - - - Golang:对应 package,如 github.com/cloudwego/hertz/pkg/app/server - - - Rust:对应 mod,如 [serde_json](https://crates.io/crates/serde_json)::[value](https://docs.rs/serde_json/1.0.114/serde_json/value/index.html) - - - 提示:这里应该尽量等同于代码文件中的 import (use) 路径,方便 LLM 理解 - - -- Name:在包内的唯一符号名 - - - 如果节点类型 - - - **如果节点为method,应该以**`TypeName.MethodName`**来表示。**此外,有些语言如**rust允许一个类型为不同的接口实现同名方法**(比如rust),因此为了避免冲突TypeName可进一步扩展为` InterfaceName` 形式 - - -- **字符串(Key)形式** - - - Full() 完整形式为 `ModPath?PkgPath#Name` - - - String() Format形式为 PkgPath#Name,一般通过该形式展示给 LLM 即可 - - -- **每个 AST 都会带有 Identity,但是是以内嵌的形式到具体节点字段中(Name、ModPath、PkgPath 三个字段)** - - - - - -## 结构体定义(Go) - -- 代码详见 abcoder/lang/uniast#Repository - - -## JSON 定义 - -以下以 `[cloudwego/localsession](https://github.com/cloudwego/localsession.git)` 库解析为示例介绍 - - -## Repository - -一个仓库由 实体Modules 和 关系Graph 组成 - - -```json -{ - "id": "/Users/bytedance/golang/work/abcoder/tmp/localsession", - "Modules": { - "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b": {}, - "github.com/cloudwego/localsession": {} - }, - "Graph": {} -} -``` - -- id: repo 的唯一名称。由于abcoder parser目前不获取仓库git信息,因此一般使用当前所处的绝对路径 - - -- Modules:包含的子模块,{ModPath} : {Module AST} 的字典,本仓库模块和外部依赖模块都可以出现在Modules中,但是需要通过ModulePath来区分。 - - - 本仓库模块ModePath == Module.Name - - - 外部依赖模块ModePath== Modele.Name@version - - -- Graph:AST Node 的依赖拓扑图,见下文【Graph】 - - -### Module - -代码独立编译单元,对应Identity中的ModPath,内部包含各个包 - - -```json -{ - "Name": "github.com/cloudwego/localsession", - "Language": "go", - "Version": "", - "Name": "github.com/cloudwego/localsession", - "Dir": ".", - "Packages": { - "github.com/cloudwego/localsession": {}, - "github.com/cloudwego/localsession/backup": {} - }, - "Dependencies": { - "github.com/bytedance/gopkg": "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b" - }, - "Files": { - ".github/ISSUE_TEMPLATE/bug_report.md": {}, - "backup/metainfo.go": {} - } -} -``` - -- Name:模块名(不带版本号) - - -- Language:代码使用的语言--对于多语言的仓库,一个模块的语言必须是唯一的。但是一个仓库可以有不同语言的模块。 - - -- Dir:**模块与仓库根的相对路径。注意:** - - - **只有本仓库内的模块需要设置且不能为空** - - - **第三方依赖必须为空(当前用于判断是否为第三方依赖)** - - -- Dependencies:模块构建的第三方依赖模块字典 {ModName}:{ModPath} - - -- Packages: 包含的子包,{PkgPath}:{Pacakge AST} 字典 - - -- Files:模块文件信息,key为**相对repo的路径。**这里建议包括仓库所有文件,方便writer回写 - - -#### File - -文件信息,包括代码文件和非代码文件都会记录 - - -```json - -{ - "Path": "manager.go", - "Imports": [], - "Package": "github.com/cloudwego/localsession" -} -``` - -- Path: 文件**相对仓库根的路径** - - -- Imports: import 代码, - - -##### Import - -```json -{ - "Alias": "_", - "Path": "\"unsafe\"" -} -``` - -- Path:导入路径主要用于writer写入代码,具体内容根据各个语言情况而定 - - - rust 中为 `use xx::yy;` - - - Golang 中为 `"github.com/cloudwego/abcoder"` - - -- Alias:导入别名,可为空 - - -#### Package - -一个代码命名空间,对应Identity.PkgPath,内部包含各个AST Node实体 - - -```json -{ - "IsMain": false, - "IsTest": false, - "PkgPath": "github.com/cloudwego/localsession/backup", - "PkgPath": "github.com/cloudwego/localsession/backup", - "Functions": { - "BackupCtx": {} - }, - "Types": {}, - "Vars": {} -} -``` - -- PkgPath:模块路径,见【Identity】介绍 - - -- IsMain: 是否是二进制包 - - -- IsTest: 是否是测试包 - - -- Functions:包含函数AST, {FuncName}:{Function AST} 的字典 - - -- Types:包含类型AST,{TypeName}:{Type AST}的字典 - - -- Vars:包含全局变量/常量, {VarName}:{Variant AST} 的字典 - - -##### Function - -函数类型的AST Node实体,对应【NodeType】为 FUNC,包括函数、方法、接口函数 - - -```json -{ - "Exported": true, - "IsMethod": true, - "IsInterfaceMethod": false, - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "SessionManager.BindSession", - "File": "manager.go", - "Line": 133, - "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}", - "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": 133, - "StartOffset": 3386, - "EndOffset": 3398 - }, - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "Session", - "File": "manager.go", - "Line": 133, - "StartOffset": 3400, - "EndOffset": 3409 - } - ], - "FunctionCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionID", - "File": "manager.go", - "Line": 139, - "StartOffset": 3547, - "EndOffset": 3564 - } - ], - "MethodCalls": [ - { - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "shard.Store", - "File": "manager.go", - "Line": 136, - "StartOffset": 3485, - "EndOffset": 3490 - } - ] -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name:函数名称 - - - 如果函数为method,**应该**以 {TypeName}.{Methodname}来表示 - - -- File:所在的文件名 - - -- Line:**起始位置文件的行号** - - -- StartOffset:代码起始位置**相对文件头的字节偏移量** - - -- EndOffset: 代码结束位置**相对文件头的字节偏移量** - - -- Exported:是否包外可见导出 - - -- IsMethod:是否是一个方法 - - -- IsInterfaceMethod:是否是接口的方法--这里abcoder parse收集InterfaceMethod为了方便LLM理解,但是实际上write中并不会认为其是一个语言实体 - - -- Receiver:如果是方法的话,会有的receiver结构体。 - - - IsPointer:是否是指针接受者(可改变对象内容)。这个在某些语言中有比较重要意义,因此保留 - - - Type:对应的receiver结构体Identity - - -- Params:入参中关联的类型的Dependency数组(见下文【Dependency】),如果是匿名信参数ParamName由ParamTypeName替代 - - -- Results:出参中关联的类型Dependency数组, {ResultName}:{Result Type Identity},如果是匿名信参数ParamName由ParamTypeName替代 - - -- Content:函数完整内容,包括函数签名+`\n`+函数实现代码 - - -- FunctionCalls:当前函数中调用的其他函数Dependency数组。按依赖在代码中出现的次序排列(并去重)。元素为对应的 AST 节点 Identity - - -- MethodCalls:当前函数中调用的方法Dependency数组,按依赖在代码中出现的次序排列(并去重)。规则同【FunctionCalls】。 - - -- Types: 当前函数内引用的类型,如 `var x TypeX`中的TypeX - - -- Vars:当前函数内引用的全局量,包括变量和常量 - - -###### Dependency - -表示一个依赖关系,包含依赖节点Id、依赖产生位置等信息,方便LLM准确识别 - - -``` -{ - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "transmitSessionIdentity", - "File": "manager.go", - "Line": 140, - "StartOffset": 3547, - "EndOffset": 3564 -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 结构体名称 - - -- File:依赖点(不是被依赖节点)token所处的代码文件 - - -- Line:依赖点(不是被依赖节点)token所处的代码行 - - -- StartOffset:依赖点(不是被依赖节点)token起始位置相对代码文件的偏移 - - -- EndOffset:依赖点(不是被依赖节点)token结束位置相对代码文件的偏移 - - -##### Type - -类型定义,【NodeType】为 TYPE,包括具体语言中的类型定义,如 结构体、枚举、接口、类型别名等 - - -```json -{ - "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}", - "InlineStruct": [ - {} // dependency - ], - "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" - } - } -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 结构体名称 - - -- File:声明所在的文件名 - - -- Line:声明所在文件的行号 - - -- TypeKind:类型的种类 Kind -- 这里不做统一约束,由具体语言定义 - - -- Exported:是否包外可见导出 - - -- Content:具体结构体定义,包括类型签名+`\n`+类型具体字段 - - -- SubStructs:字段中非嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val为对应类型 AST 节点 Identity - - -- InlineStructs: 字段中嵌套引用的子结构体类型**Dependency**(不包括 go 原始类型),map key为字段名,val对应类型 AST 节点 Identity - - - 原因:在某些语言如 Golang 中嵌套子结构体的 methods 会被继承到父结构体中,因此和一般子结构体区分开,方便回溯该类型拥有的所有 method - - -- Methods:结构体对应的全部方法**Identity**,key为方法名,val为函数Identity。 - - - 注意这里不应该包括 InlineStruct 的 methods - - -- Implements:该类型实现了哪些接口**Identity** - - -##### Var - -全局量,包括变量和常量,**但是必须是全局** - - -```rust -{ - "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" -} -``` - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 变量名称 - - -- File:声明所在的文件名 - - -- Line:声明所在文件的行号 - - -- IsExported:是否导出 - - -- IsConst:是否为常量 - - -- Type:其类型对应的Identity(不包括 go 原始类型),go内置类型可以只有name(如 string, uint) - - -- Content:定义代码,如 `var A int = 1 ` - - -### Graph - -整个仓库的AST Node依赖拓扑图。形式为 Identity => Node 的映射,其中每个 Node 包含对其它节点的依赖关系。基于该拓扑图,可以实现**任意节点上下文的递归获取**。 - - -```json -{ - "github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions": {}, - "github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues": {} -} -``` - -其中 key 通过 【Identity 的完整字符串】形式得到 - - -#### Node - -一个node表示一个独立的语法单元,通常包括代码、位置信息和依赖关系 - - -```go -{ - "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": "SESSION_CONFIG_KEY", - "Line": 1 - } - ], - "References": [ - { - "Kind": "Reference", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "InitDefaultManager", - "Line": 3 - } - ] -} -``` - -- ModPath: 目标节点模块路径,见【Identity】介绍 - - -- PkgPath:目标节点包路径,见【Identity】介绍 - - -- Name: 目标节点变量名称 - - -- Type: 目标节点类型,见【NodeType】介绍 - - -- Dependencies:该节点依赖的其他节点,每个元素对象为Relation - - -- References:依赖该节点的其他节点,每个元素对象为Relation - - -##### NodeType - -包括三种类型: - - -``` -// Node Type -type NodeType int - -const ( - UNKNOWN NodeType = iota - // top Function、 methods - FUNC - // Struct、TypeAlias、Enum... - TYPE - // Global Varable or Global Const - VAR -) -``` - -- FUNC:函数,包括方法、顶层函数 - - -- TYPE:类型定义,包括 struct、类型别名、接口等通用的类型定义 - - -- VAR:全局变量或常量(不包括局部变量,因为我们局部变量可以收集到FUNC或TYPE定义中) - - -#### Relation - -用于存储两个节点之间的关系。 - - -``` -{ - "Kind": "Dependency", - "ModPath": "github.com/cloudwego/localsession", - "PkgPath": "github.com/cloudwego/localsession", - "Name": "getPproLabel", - "Line": 1 -} -``` - -- Kind: 关系类型,目前包括 DEPENDENCY 和 REFERENCE - - -- ModPath: 模块路径,见【Identity】介绍 - - -- PkgPath:包路径,见【Identity】介绍 - - -- Name: 变量名称 - - -- Line: 产生关系的位置在主节点代码的行号(从零开始) - - -## 完整JSON示例 - -- https://github.com/cloudwego/localsession - - - 命令:` git clone https://github.com/cloudwego/localsession.git && abcoder parse go ./localsession -load-external-symbol` - - - 输出 [localsession.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/localsession.json) - - -- https://github.com/cloudwego/metainfo - - - 命令`git clone https://github.com/cloudwego/metainfo.git && abcoder parse rust ./metainfo -load-external-symbol` - - - 输出 [metainfo.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/metainfo.json) - - -## 扩展其它语言 Parser - -当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](parser-zh.md) From 74cdb9333c771e4a8f20921ec5811fac0b1e0b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E4=BB=AA?= Date: Mon, 21 Apr 2025 13:11:48 +0800 Subject: [PATCH 15/15] fix --- docs/uniast-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/uniast-zh.md b/docs/uniast-zh.md index ad2b3c93..9cd567ab 100644 --- a/docs/uniast-zh.md +++ b/docs/uniast-zh.md @@ -668,7 +668,7 @@ const ( - 输出 [metainfo.json](https://huggingface.co/datasets/AsterDY/abcoder/blob/main/repos/metainfo.json) -## 扩展其它语言 Parser +# 扩展其它语言 Parser 当前ABCoder/src/lang 已经支持通过LSP来进行第三方语言解析,但是由于LSP对各个语言特性(主要是函数签名和Import)没有统一规范,因此需要扩展实现一些接口才能适配。详见 [ABCoder-Language Plugin 开发规范](https://bytedance.sg.larkoffice.com/docx/QNZwdYBPjoUUKtxD3XMlstlpglh) Universal Abstract-Syntax-Tree 是 ABCoder 建立的一种LLM亲和、语言无关的代码上下文数据结构,表示某个仓库代码的统一抽象语法树。收集了语言实体(函数、类型、常(变)量)的 定义 及其 相互依赖关系,用于后续的 AI 理解、coding-workflow 开发。