diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index da4fb9577..ad3569063 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -40,38 +40,45 @@ jobs: include: - os: ubuntu-latest target: x86_64-unknown-linux-gnu + binary: x86-64 use-cross: false run-integration-tests: true supports-nix: true - os: ubuntu-latest target: x86_64-unknown-linux-musl + binary: x86-64 use-cross: true run-integration-tests: true supports-nix: true - os: ubuntu-latest target: aarch64-unknown-linux-gnu + binary: aarch64 use-cross: true run-integration-tests: false # Cannot run aarch64 binaries on x86_64 supports-nix: true - os: ubuntu-latest target: aarch64-unknown-linux-musl + binary: aarch64 use-cross: true run-integration-tests: false # Cannot run aarch64 binaries on x86_64 supports-nix: true # macos>=14 runs exclusively on aarch64 and will thus fail to execute properly for x64 - os: macos-13 # intel target: x86_64-apple-darwin + binary: x86_64 use-cross: false run-integration-tests: true supports-nix: true - os: macos-latest # aarch64 toolchain: stable target: aarch64-apple-darwin + binary: arm64 use-cross: false run-integration-tests: true supports-nix: true - os: windows-latest target: x86_64-pc-windows-msvc + binary: x86-64 use-cross: false run-integration-tests: true supports-nix: false @@ -124,10 +131,27 @@ jobs: uses: clechasseur/rs-cargo@v2 with: command: install - args: "--path compiler-cli --target ${{ matrix.target }} --debug --locked" + args: "--path compiler-cli --target ${{ matrix.target }} --debug --locked --force" use-cross: ${{ matrix.use-cross }} if: ${{ matrix.run-integration-tests }} + - name: Verify binary architecture + shell: bash + run: | + BINARY_PATH="${CARGO_HOME}/bin/glistix" + if [[ "${{ matrix.target }}" == *"windows"* ]]; then + BINARY_PATH="${BINARY_PATH}.exe" + fi + + if ! file -b "$BINARY_PATH" | grep -q "${{ matrix.binary }}"; then + echo "error: Architecture mismatch" + echo "Expected architecture: '${{ matrix.binary }}'" + echo "Found binary type: '$(file -b "$BINARY_PATH")'" + exit 1 + fi + echo "ok: Architecture match" + if: ${{ matrix.run-integration-tests }} + - name: Run tests uses: clechasseur/rs-cargo@v2 with: @@ -608,3 +632,15 @@ jobs: - name: Test running modules run: make test working-directory: ./test/running_modules + + - name: test/multi_namespace + run: ./test.sh + working-directory: ./test/multi_namespace + + - name: Test FFI in subdirectories + run: make + working-directory: ./test/subdir_ffi + + - name: test/unicode_path + run: make + working-directory: ./test/unicode_path ⭐ diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ef59a0812..36ef27752 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -28,19 +28,24 @@ jobs: include: - os: ubuntu-latest target: x86_64-unknown-linux-musl + binary: x86-64 use-cross: true - os: ubuntu-latest target: aarch64-unknown-linux-musl + binary: aarch64 use-cross: true # macos>=14 runs exclusively on aarch64 and will thus fail to execute properly for x64 - os: macos-13 target: x86_64-apple-darwin + binary: x86_64 use-cross: false - os: macos-latest target: aarch64-apple-darwin + binary: arm64 use-cross: false - os: windows-latest target: x86_64-pc-windows-msvc + binary: x86-64 use-cross: false steps: - name: Checkout repository @@ -64,6 +69,22 @@ jobs: args: --release --target ${{ matrix.target }} use-cross: ${{ matrix.use-cross }} + - name: Verify binary architecture + shell: bash + run: | + BINARY_PATH="target/${{ matrix.target }}/release/glistix" + if [[ "${{ matrix.target }}" == *"windows"* ]]; then + BINARY_PATH="${BINARY_PATH}.exe" + fi + + if ! file -b "$BINARY_PATH" | grep -q "${{ matrix.binary }}"; then + echo "error: Architecture mismatch" + echo "Expected architecture: '${{ matrix.binary }}'" + echo "Found binary type: '$(file -b "$BINARY_PATH")'" + exit 1 + fi + echo "ok: Architecture match" + - name: Build archive shell: bash run: | diff --git a/.gitignore b/.gitignore index b500d0152..1056fe823 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ erl_crash.dump *.lock !flake.lock node_modules/ +compiler-cli/build/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 56e8c6c38..ca0346bd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,37 +1,13 @@ # Gleam's Changelog - ## Unreleased ### Compiler ### Build tool -### Language Server +### Language server ### Formatter -### Bug fix - -## v1.6.3 - 2024-12-03 - -### Bug fixed - -- Fixed a bug where Gleam would be unable to compile to BEAM bytecode on older - versions of Erlang/OTP. - ([yoshi](https://github.com/joshi-monster)) - -## v1.6.2 - 2024-11-23 - -### Bug fixed - -- Fixed a bug where patterns in `use` expressions would not be checked to ensure that - they were exhaustive. - ([Surya Rose](https://github.com/GearsDatapacks)) - -## v1.6.1 - 2024-11-19 - -### Bug fix - -- Fixed a bug where `gleam update` would fail to update versions. - ([Jason Sipula](https://github.com/SnakeDoc)) +### Bug fixes diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f9a0dfd47..e28ef500a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,73 +1,134 @@ + # Contributor Covenant Code of Conduct ## Our Pledge -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment -include: +Examples of behavior that contributes to a positive environment for our +community include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community -Examples of unacceptable behavior by participants include: +Examples of unacceptable behavior include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission +* Publishing others' private information, such as a physical or email address, + without their explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting -## Our Responsibilities +## Enforcement Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. ## Scope -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at (email TBD). All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +reported to the community leaders responsible for enforcement at +(email TBD). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. [homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations + diff --git a/Cargo.lock b/Cargo.lock index e4e47d877..ee3ed1d82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,59 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "age" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc171f4874fa10887e47088f81a55fcf030cd421aa31ec2b370cafebcc608a" +dependencies = [ + "age-core", + "base64 0.21.7", + "bech32", + "chacha20poly1305", + "cookie-factory", + "hmac", + "i18n-embed", + "i18n-embed-fl", + "lazy_static", + "nom", + "pin-project", + "rand", + "rust-embed", + "scrypt", + "sha2", + "subtle", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "age-core" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2bf6a89c984ca9d850913ece2da39e1d200563b0a94b002b253beee4c5acf99" +dependencies = [ + "base64 0.21.7", + "chacha20poly1305", + "cookie-factory", + "hkdf", + "io_tee", + "nom", + "rand", + "secrecy", + "sha2", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -81,6 +134,12 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "askama" version = "0.12.1" @@ -150,7 +209,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -208,6 +267,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.0" @@ -223,6 +288,12 @@ dependencies = [ "serde", ] +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + [[package]] name = "bimap" version = "0.6.3" @@ -293,24 +364,27 @@ checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "capnp" -version = "0.14.11" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dca085c2c7d9d65ad749d450b19b551efaa8e3476a439bdca07aca8533097f3" +checksum = "bce4e2d41c16cf9188f47ca4d59fdcdca1f33705af211bdb41f0afbd3442f8b5" +dependencies = [ + "embedded-io", +] [[package]] name = "capnpc" -version = "0.14.9" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdc9f1dc84666d4ff007b1a16c8f97db80764a624625979be05d869bcff43aaa" +checksum = "1aa3d5f01e69ed11656d2c7c47bf34327ea9bfb5c85c7de787fcd7b6c5e45b61" dependencies = [ "capnp", ] @@ -333,6 +407,41 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + [[package]] name = "clap" version = "4.5.16" @@ -411,6 +520,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "cookie-factory" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" +dependencies = [ + "futures", +] + [[package]] name = "cpufeatures" version = "0.2.12" @@ -483,6 +601,46 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.5.0" @@ -543,6 +701,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -592,6 +751,12 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "encode_unicode" version = "0.3.6" @@ -620,6 +785,12 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "filetime" version = "0.2.23" @@ -628,10 +799,19 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "windows-sys 0.52.0", ] +[[package]] +name = "find-crate" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" +dependencies = [ + "toml", +] + [[package]] name = "fixedbitset" version = "0.4.2" @@ -648,6 +828,50 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluent" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb74634707bebd0ce645a981148e8fb8c7bccd4c33c652aeffd28bf2f96d555a" +dependencies = [ + "fluent-bundle", + "unic-langid", +] + +[[package]] +name = "fluent-bundle" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe0a21ee80050c678013f82edf4b705fe2f26f1f9877593d13198612503f493" +dependencies = [ + "fluent-langneg", + "fluent-syntax", + "intl-memoizer", + "intl_pluralrules", + "rustc-hash 1.1.0", + "self_cell 0.10.3", + "smallvec", + "unic-langid", +] + +[[package]] +name = "fluent-langneg" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "fluent-syntax" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d" +dependencies = [ + "thiserror", +] + [[package]] name = "fnv" version = "1.0.7" @@ -696,9 +920,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -706,9 +930,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" @@ -723,15 +947,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -740,21 +964,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -850,6 +1074,7 @@ dependencies = [ name = "glistix-core" version = "0.6.0" dependencies = [ + "age", "askama", "async-trait", "base16", @@ -876,6 +1101,7 @@ dependencies = [ "lsp-server", "lsp-types", "num-bigint", + "num-traits", "pathdiff", "petgraph", "pretty_assertions", @@ -891,7 +1117,6 @@ dependencies = [ "strum", "tar", "termcolor", - "textwrap", "thiserror", "toml", "tracing", @@ -982,6 +1207,24 @@ dependencies = [ "x509-parser", ] +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "home" version = "0.5.9" @@ -1117,6 +1360,193 @@ dependencies = [ "tracing", ] +[[package]] +name = "i18n-config" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e88074831c0be5b89181b05e6748c4915f77769ecc9a4c372f88b169a8509c9" +dependencies = [ + "basic-toml", + "log", + "serde", + "serde_derive", + "thiserror", + "unic-langid", +] + +[[package]] +name = "i18n-embed" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7839d8c7bb8da7bd58c1112d3a1aeb7f178ff3df4ae87783e758ca3bfb750b7" +dependencies = [ + "arc-swap", + "fluent", + "fluent-langneg", + "fluent-syntax", + "i18n-embed-impl", + "intl-memoizer", + "lazy_static", + "log", + "parking_lot", + "rust-embed", + "thiserror", + "unic-langid", + "walkdir", +] + +[[package]] +name = "i18n-embed-fl" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e9571c3cba9eba538eaa5ee40031b26debe76f0c7e17bafc97ea57a76cd82e" +dependencies = [ + "dashmap", + "find-crate", + "fluent", + "fluent-syntax", + "i18n-config", + "i18n-embed", + "lazy_static", + "proc-macro-error2", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.58", + "unic-langid", +] + +[[package]] +name = "i18n-embed-impl" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2cc0e0523d1fe6fc2c6f66e5038624ea8091b3e7748b5e8e0c84b1698db6c2" +dependencies = [ + "find-crate", + "i18n-config", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "id-arena" version = "2.2.1" @@ -1125,12 +1555,23 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1183,6 +1624,15 @@ dependencies = [ "hashbrown 0.14.3", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "insta" version = "1.39.0" @@ -1197,6 +1647,31 @@ dependencies = [ "walkdir", ] +[[package]] +name = "intl-memoizer" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe22e020fce238ae18a6d5d8c502ee76a52a6e880d99477657e6acc30ec57bda" +dependencies = [ + "type-map", + "unic-langid", +] + +[[package]] +name = "intl_pluralrules" +version = "7.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "io_tee" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" + [[package]] name = "ipnet" version = "2.9.0" @@ -1283,6 +1758,22 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.22" @@ -1440,9 +1931,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1471,6 +1962,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "opener" version = "0.7.2" @@ -1489,6 +1986,29 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.7", + "smallvec", + "windows-targets 0.52.6", +] + [[package]] name = "pathdiff" version = "0.2.1" @@ -1498,6 +2018,16 @@ dependencies = [ "camino", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1552,6 +2082,17 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1574,6 +2115,28 @@ dependencies = [ "yansi", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "proc-macro2" version = "1.0.79" @@ -1646,9 +2209,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8746739f11d39ce5ad5c2520a9b75285310dbfe78c541ccf832d38615765aec0" +checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14" dependencies = [ "bitflags 2.5.0", "memchr", @@ -1765,6 +2328,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_users" version = "0.4.5" @@ -1822,9 +2394,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.0", "bytes", @@ -1898,6 +2470,40 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rust-embed" +version = "8.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "8.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478" +dependencies = [ + "proc-macro2", + "quote", + "rust-embed-utils", + "syn 2.0.58", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "8.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d" +dependencies = [ + "sha2", + "walkdir", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -1916,6 +2522,15 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rusticata-macros" version = "4.1.0" @@ -1991,6 +2606,15 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + [[package]] name = "same-file" version = "1.0.6" @@ -2006,6 +2630,53 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "pbkdf2", + "salsa20", + "sha2", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "self_cell" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d" +dependencies = [ + "self_cell 1.0.4", +] + +[[package]] +name = "self_cell" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + [[package]] name = "serde" version = "1.0.204" @@ -2039,11 +2710,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2122,12 +2794,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" - [[package]] name = "socket2" version = "0.5.6" @@ -2140,9 +2806,9 @@ dependencies = [ [[package]] name = "spdx" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47317bbaf63785b53861e1ae2d11b80d6b624211d42cb20efcd210ee6f8a14bc" +checksum = "bae30cc7bfe3656d60ee99bf6836f472b0c53dddcbf335e253329abb16e535a2" dependencies = [ "smallvec", ] @@ -2153,6 +2819,12 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_vcruntime" version = "2.0.0" @@ -2236,6 +2908,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "tar" version = "0.4.42" @@ -2269,16 +2952,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "test-helpers-rs" version = "0.1.0" @@ -2323,18 +2996,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "textwrap" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" -dependencies = [ - "smawk", - "terminal_size", - "unicode-linebreak", - "unicode-width", -] - [[package]] name = "thiserror" version = "1.0.63" @@ -2396,6 +3057,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2570,12 +3241,40 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash 1.1.0", +] + [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unic-langid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dd9d1e72a73b25e07123a80776aae3e7b0ec461ef94f9151eed6ec88005a44" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5422c1f65949306c99240b81de9f3f15929f5a8bfe05bb44b034cc8bf593e5" +dependencies = [ + "serde", + "tinystr", +] + [[package]] name = "unicase" version = "2.7.0" @@ -2585,33 +3284,12 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -2630,6 +3308,16 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -2638,9 +3326,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -2648,6 +3336,18 @@ dependencies = [ "serde", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.1" @@ -3058,6 +3758,30 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + [[package]] name = "x509-parser" version = "0.15.1" @@ -3098,8 +3822,89 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", + "synstructure 0.13.1", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", + "synstructure 0.13.1", +] + [[package]] name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] diff --git a/Makefile b/Makefile index b5c2ccc19..908e3de3e 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ test: ## Run the compiler unit tests cd test/project_deno && cargo run clean && cargo run check && cargo run test cd test/hextarball && make test cd test/running_modules && make test + cd test/subdir_ffi && make .PHONY: language-test language-test: ## Run the language integration tests for all targets diff --git a/changelog/v1.7.md b/changelog/v1.7.md new file mode 100644 index 000000000..576533507 --- /dev/null +++ b/changelog/v1.7.md @@ -0,0 +1,368 @@ +# Changelog + +## 1.7.0 - 2025-01-05 + +Happy birthday Louis! 🎁 + +## 1.7.0-rc3 - 2025-01-02 + +### Formatter + +- Function captures are now formatted like regular function calls. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- Record updates are now formatted like function calls. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +### Bug fixes + +- Fixed a bug where the "convert from use" code action would generate invalid + code with labelled arguments. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- Fixed a bug where private types would be allowed to be used in other modules. + ([Surya Rose](https://github.com/GearsDatapacks)) + +## 1.7.0-rc2 - 2024-12-30 + +### Bug fixes + +- Fixed a bug on JavaScript where a trailing `:bytes` segment would give the + wrong pattern match result for a sliced bit array. + ([Richard Viney](https://github.com/richard-viney)) + +## 1.7.0-rc1 - 2024-12-29 + +### Compiler + +- Removed compiler hint about pattern matching a `Result(a, b)` when being used + where `a` is expected. + ([Kieran O'Reilly](https://github.com/SoTeKie)) + +- Optimised code generated for record updates. + ([yoshi](https://github.com/joshi-monster)) + +- The compiler now allows for record updates to change the generic type + parameters of the record: + + ```gleam + type Box(value) { + Box(password: String, value: value) + } + + fn insert(box: Box(a), value: b) -> Box(b) { + Box(..box, value:) + } + ``` + + ([yoshi](https://github.com/joshi-monster)) + +- It is now allowed to write a block with no expressions. Like an empty function + body, an empty block is considered incomplete as if it contained a `todo` + expression. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The shorthand names for the two targets, `erl` and `js` are now + deprecated in code such as `@target`. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- A custom panic message can now be specified when asserting a value with + `let assert`: + + ```gleam + let assert Ok(regex) = regex.compile("ab?c+") as "This regex is always valid" + ``` + + ([Surya Rose](https://github.com/GearsDatapacks)) + +- When targeting JavaScript the compiler now generates faster and smaller code + for `Int` values in bit array expressions and patterns by evaluating them at + compile time where possible. + ([Richard Viney](https://github.com/richard-viney)) + +- Qualified records can now be used in clause guards. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- The compiler now allows deprecating specific custom type variants using the + `@deprecated` attribute: + + ```gleam + pub type HashAlgorithm { + @deprecated("Please upgrade to another algorithm") + Md5 + Sha224 + Sha512 + } + + pub fn hash_password(input: String) -> String { + hash(input:, algorithm: Md5) // Warning: Deprecated value used + } + ``` + + ([Iesha](https://github.com/wilbert-mad)) + +- On the JavaScript target, taking byte-aligned slices of bit arrays is now an + O(1) operation instead of O(N), significantly improving performance. + ([Richard Viney](https://github.com/richard-viney)) + +- Better error message for when an existing type constructor is used as a value + constructor. + ([Jiangda Wang](https://github.com/Frank-III)) + +- Print better error messages when shell commands used by compiler cannot be + found. + ([wheatfox](https://github.com/enkerewpo)) + +### Build tool + +- Improved the error message you get when trying to add a package that doesn't + exist with `gleam add`. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- External files (such as `.mjs` and `.erl`) are now permitted in subdirectories + of `src/` and `test/`. + ([PgBiel](https://github.com/PgBiel)) + +- `gleam publish` now requires more verbose confirmation for publishing Gleam + team packages and v0 packages. + ([Louis Pilfold](https://github.com/lpil)) + +- `gleam publish` now warns when publishing packages that define multiple + top-level modules, as this can lead to namespace pollution and conflicts for + consumers. + ([Aleksei Gurianov](https://github.com/guria)) + +- New projects now require `gleam_stdlib` v0.44.0. + ([Louis Pilfold](https://github.com/lpil)) + +- `gleam remove` no longer requires a network connection. + ([yoshi](https://github.com/joshi-monster)) + +- Commands that work with the Hex package manager API now create and store an + API key rather than creating a new one each time. This API key is encrypted + with a local password, reducing risk of your Hex password being compromised. + ([Louis Pilfold](https://github.com/lpil)) + +- The build tool now sets the `REBAR_SKIP_PROJECT_PLUGINS` environment variable + when using rebar3 to compile Erlang dependencies. With future versions of + rebar3 this will cause it to skip project plugins, significantly reducing the + amount of code it'll need to download and compile, improving compile times. + ([Tristan Sloughter](https://github.com/tsloughter)) + +### Language server + +- The language server now provides type information when hovering over argument + labels. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- The language server now suggests a code action to desugar a use expression + into the equivalent function call. For example, this snippet of code: + + ```gleam + pub fn main() { + use profile <- result.try(fetch_profile(user)) + render_welcome(user, profile) + } + ``` + + Will be turned into: + + ```gleam + pub fn main() { + result.try(fetch_profile(user), fn(profile) { + render_welcome(user, profile) + }) + } + ``` + + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The language server now suggests a code action to turn a function call into + the equivalent use expression. For example, this snippet of code: + + ```gleam + pub fn main() { + result.try(fetch_profile(user) fn(profile) { + render_welcome(user, profile) + }) + } + ``` + + Will be turned into: + + ```gleam + pub fn main() { + use profile <- result.try(fetch_profile(user)) + render_welcome(user, profile) + } + ``` + + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The language server now provides correct information when hovering over + patterns in use expressions. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- The language server now suggests a code action to convert an inexhaustive + `let` assignment into a `case` expression: + + ```gleam + pub fn unwrap_result(result: Result(a, b)) -> a { + let Ok(inner) = result + inner + } + ``` + + Becomes: + + ```gleam + pub fn unwrap_result(result: Result(a, b)) -> a { + let inner = case result { + Ok(inner) -> inner + Error(_) -> todo + } + inner + } + ``` + + ([Surya Rose](https://github.com/GearsDatapacks)) + +- The language server now provides an action to extract a value into a variable. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The language server now suggests a code action to expand a function capture + into the equivalent anonymous function. For example, this snippet of code: + + ```gleam + pub fn main() { + list.map([1, 2, 3], int.add(_, 11)) + } + ``` + + Will be turned into: + + ```gleam + pub fn main() { + list.map([1, 2, 3], fn(value) { int.add(value, 11) }) + } + ``` + + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The language server now suggests a code action to generate a dynamic decoder + for a custom type. For example, this code: + + ```gleam + pub type Person { + Person(name: String, age: Int) + } + ``` + + Will become: + + ```gleam + import gleam/dynamic/decode + + pub type Person { + Person(name: String, age: Int) + } + + fn person_decoder() -> decode.Decoder(Person) { + use name <- decode.field("name", decode.string) + use age <- decode.field("age", decode.int) + decode.success(Person(name:, age:)) + } + ``` + + ([Surya Rose](https://github.com/GearsDatapacks)) + +### Formatter + +- The formatter now adds a `todo` inside empty blocks. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- The formatter now formats lists the same in constants as in expressions. + ([Jiangda Wang](https://github.com/Frank-III)) + +### Documentation + +- Canonical links created for documentation pages if published on Hex. + Previously published documentation would need to be updated. + Resolves versioned pages to point to latest page for search engines. + ([Dave Lage](https://github.com/rockerBOO)) + +### Bug fixes + +- The compiler now throws an error when a float literal ends with an `e` and + is missing an exponent. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a crash with ENOTEMPTY (os error 39) when building on NTFS partitions. + ([Ivan Ermakov](https://github.com/ivanjermakov)) + +- Fixed a bug where the compiler would crash when pattern matching on multiple + subjects and one of them being a constant record. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Variant inference on prelude types now works correctly if the variant is + constant. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a bug where patterns in `use` expressions would not be checked to ensure + that they were exhaustive. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a bug where a `module.mjs` file would be overwritten by a `module.gleam` + file of same name without warning. It now produces an error. + ([PgBiel](https://github.com/PgBiel)) + +- Modules depending on removed or renamed modules now get automatically + recompiled. + ([Sakari Bergen](https://github.com/sbergen)) + +- The compiler now raises a warning for unused case expressions, code blocks and + pipelines that would be safe to remove. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + +- Fixed a bug where assigning the prefix of a string pattern to a variable + nested inside another pattern would produce invalid code on Javascript. + ([yoshi](https://github.com/joshi-monster)) + +- Fixed a bug where expressions which use an unsafe integer on JavaScript would + not emit a warning if an external function had been referenced. + ([Richard Viney](https://github.com/richard-viney)) + +- Fixed a bug where nested tuple access would not be parsed correctly when + the left-hand side was a function call. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a bug where Gleam would be unable to compile to BEAM bytecode on older + versions of Erlang/OTP. + ([yoshi](https://github.com/joshi-monster)) + +- Fixed a bug where the inferred variant of values was not properly cached, + leading to incorrect errors on incremental builds and in the language server. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a bug where Gleam would be unable to compile to BEAM bytecode if the + project path contains a non-ascii character. + ([yoshi](https://github.com/joshi-monster)) + +- Fixed a bug where the compiler would display incorrect hints about ignoring + unused variables in certain cases. + ([Surya Rose](https://github.com/GearsDatapacks)) + +- Fixed a bug where the completer would not include braces in type import + completions when it should have. + ([Jiangda Wang](https://github.com/Frank-III)) + +- Fixed a bug where `gleam new` would generate the github `test` workflow + configuration with incompatible Erlang OTP and Elixir versions. + ([John Strunk](https://github.com/jrstrunk)) + +## v1.6.1 - 2024-11-19 + +### Bug fixes + +- Fixed a bug where `gleam update` would fail to update versions. + ([Jason Sipula](https://github.com/SnakeDoc)) diff --git a/compiler-cli/Cargo.toml b/compiler-cli/Cargo.toml index 2743d64dd..8ca120ef3 100644 --- a/compiler-cli/Cargo.toml +++ b/compiler-cli/Cargo.toml @@ -37,6 +37,7 @@ same-file = "1" opener = "0" # Pubgrub dependency resolution algorithm pubgrub = "0" + camino = { workspace = true, features = ["serde1"] } async-trait.workspace = true base16.workspace = true diff --git a/compiler-cli/src/beam_compiler.rs b/compiler-cli/src/beam_compiler.rs index f7d0fe5ca..ec1a7837b 100644 --- a/compiler-cli/src/beam_compiler.rs +++ b/compiler-cli/src/beam_compiler.rs @@ -4,6 +4,8 @@ use glistix_core::{ paths, Result, }; +use crate::fs::get_os; + use std::{ collections::HashSet, io::{self, BufRead, BufReader, Write}, @@ -111,6 +113,7 @@ impl BeamCompiler { .map_err(|e| match e.kind() { io::ErrorKind::NotFound => Error::ShellProgramNotFound { program: "escript".into(), + os: get_os(), }, other => Error::ShellCommand { program: "escript".into(), diff --git a/compiler-cli/src/build_lock.rs b/compiler-cli/src/build_lock.rs index f3e6470c6..e4eff990e 100644 --- a/compiler-cli/src/build_lock.rs +++ b/compiler-cli/src/build_lock.rs @@ -10,33 +10,42 @@ use strum::IntoEnumIterator; #[derive(Debug)] pub(crate) struct BuildLock { directory: Utf8PathBuf, + filename: String, } impl BuildLock { /// Lock the build directory for the specified mode and target. pub fn new_target(paths: &ProjectPaths, mode: Mode, target: Target) -> Result { - let build = paths.build_directory_for_target(mode, target); - crate::fs::mkdir(&build)?; - Ok(Self { directory: build }) + let directory = paths.build_directory(); + crate::fs::mkdir(&directory)?; + Ok(Self { + directory, + filename: format!("gleam-{mode}-{target}.lock"), + }) } /// Lock the packages directory. pub fn new_packages(paths: &ProjectPaths) -> Result { - let packages = paths.build_packages_directory(); - crate::fs::mkdir(&packages)?; + let directory = paths.build_packages_directory(); + crate::fs::mkdir(&directory)?; Ok(Self { - directory: packages, + directory, + filename: "gleam.lock".to_string(), }) } - /// Lock the specified directory + /// Construct the lock file path + pub fn lock_path(&self) -> Utf8PathBuf { + self.directory.join(&self.filename) + } + + /// Lock the directory specified by the lock pub fn lock(&self, telemetry: &Telem) -> Result { - tracing::debug!(path=?self.directory, "locking_build_directory"); + let lock_path = self.lock_path(); + tracing::debug!(path=?lock_path, "locking_directory"); crate::fs::mkdir(&self.directory)?; - let lock_path = self.directory.join("gleam.lock"); - let mut file = fslock::LockFile::open(lock_path.as_str()).map_err(|e| Error::FileIo { kind: FileKind::File, path: lock_path.clone(), @@ -44,9 +53,9 @@ impl BuildLock { err: Some(e.to_string()), })?; - if !file.try_lock_with_pid().expect("Trying build locking") { + if !file.try_lock_with_pid().expect("Trying directory locking") { telemetry.waiting_for_build_directory_lock(); - file.lock_with_pid().expect("Build locking") + file.lock_with_pid().expect("Directory locking") } Ok(Guard(file)) diff --git a/compiler-cli/src/cli.rs b/compiler-cli/src/cli.rs index ba001556a..2a5b31d15 100644 --- a/compiler-cli/src/cli.rs +++ b/compiler-cli/src/cli.rs @@ -77,6 +77,11 @@ pub fn confirm(question: &str) -> Result { } } +pub fn confirm_with_text(response: &str) -> Result { + let answer = ask(&format!("Type '{response}' to continue"))?; + Ok(response == answer) +} + pub fn ask_password(question: &str) -> Result { let prompt = format!("{question} (will not be printed as you type): "); rpassword::prompt_password(prompt) diff --git a/compiler-cli/src/dependencies.rs b/compiler-cli/src/dependencies.rs index 845abacd3..721a9e93f 100644 --- a/compiler-cli/src/dependencies.rs +++ b/compiler-cli/src/dependencies.rs @@ -25,6 +25,9 @@ use itertools::Itertools; use same_file::is_same_file; use strum::IntoEnumIterator; +#[cfg(test)] +mod tests; + use crate::{ build_lock::BuildLock, cli, @@ -60,54 +63,6 @@ fn list_manifest_packages(mut buffer: W, manifest: Manifest) }) } -#[test] -fn list_manifest_format() { - let mut buffer = vec![]; - let manifest = Manifest { - requirements: HashMap::new(), - packages: vec![ - ManifestPackage { - name: "root".into(), - version: Version::parse("1.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4]), - }, - }, - ManifestPackage { - name: "aaa".into(), - version: Version::new(0, 4, 2), - build_tools: ["rebar3".into(), "make".into()].into(), - otp_app: Some("aaa_app".into()), - requirements: vec!["zzz".into(), "gleam_stdlib".into()], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![3, 22]), - }, - }, - ManifestPackage { - name: "zzz".into(), - version: Version::new(0, 4, 0), - build_tools: ["mix".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![3, 22]), - }, - }, - ], - }; - list_manifest_packages(&mut buffer, manifest).unwrap(); - assert_eq!( - std::str::from_utf8(&buffer).unwrap(), - r#"root 1.0.0 -aaa 0.4.2 -zzz 0.4.0 -"# - ) -} - #[derive(Debug, Clone, Copy)] pub enum UseManifest { Yes, @@ -134,6 +89,77 @@ pub fn update(packages: Vec) -> Result<()> { Ok(()) } +/// Edit the manifest.toml file in this proejct, removing all extra requirements and packages +/// that are no longer present in the gleam.toml config. +pub fn cleanup(paths: &ProjectPaths, telemetry: Telem) -> Result { + let span = tracing::info_span!("remove_deps"); + let _enter = span.enter(); + + // We do this before acquiring the build lock so that we don't create the + // build directory if there is no gleam.toml + crate::config::ensure_config_exists(paths)?; + + let lock = BuildLock::new_packages(paths)?; + let _guard = lock.lock(&telemetry); + + // Read the project config + let config = crate::config::read(paths.root_config())?; + let mut manifest = read_manifest_from_disc(paths)?; + + remove_extra_requirements(&config, &mut manifest)?; + + // Remove any packages that are no longer required due to manifest changes + let local = LocalPackages::read_from_disc(paths)?; + remove_extra_packages(paths, &local, &manifest, &telemetry)?; + + // Record new state of the packages directory + tracing::debug!("writing_manifest_toml"); + write_manifest_to_disc(paths, &manifest)?; + LocalPackages::from_manifest(&manifest).write_to_disc(paths)?; + + Ok(manifest) +} + +/// Remove requirements and unneeded packages from manifest that are no longer present in config. +fn remove_extra_requirements(config: &PackageConfig, manifest: &mut Manifest) -> Result<()> { + // "extra requirements" are all packages that are requirements in the manifest, but no longer + // part of the gleam.toml config. + let is_extra_requirement = |name: &EcoString| { + !config.dev_dependencies.contains_key(name) && !config.dependencies.contains_key(name) + }; + + // If a requirement is also used as a dependency, we do not want to force-unlock it. + // If the dependents get deleted as well, this transitive dependency will be dropped. + let is_unlockable_requirement = |name: &EcoString| { + manifest + .packages + .iter() + .all(|p| !p.requirements.contains(name)) + }; + + let extra_requirements = manifest + .requirements + .keys() + .filter(|&name| is_extra_requirement(name) && is_unlockable_requirement(name)) + .cloned() + .collect::>(); + + manifest + .requirements + .retain(|name, _| !is_extra_requirement(name)); + + // Unlock all packages that we we want to remove - this removes them and all unneeded + // dependencies from `locked`. + let mut locked = config.locked(Some(manifest))?; + unlock_packages(&mut locked, extra_requirements.as_slice(), Some(manifest))?; + // Remove all unlocked packages from the manifest - these are truly no longer needed. + manifest + .packages + .retain(|package| locked.contains_key(&package.name)); + + Ok(()) +} + pub fn parse_gleam_add_specifier(package: &str) -> Result<(EcoString, Requirement)> { let Some((package, version)) = package.split_once('@') else { // Default to the latest version available. @@ -185,76 +211,6 @@ pub fn parse_gleam_add_specifier(package: &str) -> Result<(EcoString, Requiremen Ok((package.into(), requirement)) } -#[test] -fn parse_gleam_add_specifier_invalid_semver() { - assert!(parse_gleam_add_specifier("some_package@1.2.3.4").is_err()); -} - -#[test] -fn parse_gleam_add_specifier_non_numeric_version() { - assert!(parse_gleam_add_specifier("some_package@not_a_version").is_err()); -} - -#[test] -fn parse_gleam_add_specifier_default() { - let provided = "some_package"; - let expected = ">= 0.0.0"; - let (package, version) = parse_gleam_add_specifier(provided).unwrap(); - match &version { - Requirement::Hex { version: v } => { - assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); - } - _ => assert!(false, "failed hexpm version parse: {provided}"), - } - assert_eq!(version, Requirement::hex(expected)); - assert_eq!("some_package", package); -} - -#[test] -fn parse_gleam_add_specifier_major_only() { - let provided = "wobble@1"; - let expected = ">= 1.0.0 and < 2.0.0"; - let (package, version) = parse_gleam_add_specifier(provided).unwrap(); - match &version { - Requirement::Hex { version: v } => { - assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); - } - _ => assert!(false, "failed hexpm version parse: {provided}"), - } - assert_eq!(version, Requirement::hex(expected)); - assert_eq!("wobble", package); -} - -#[test] -fn parse_gleam_add_specifier_major_and_minor() { - let provided = "wibble@1.2"; - let expected = ">= 1.2.0 and < 2.0.0"; - let (package, version) = parse_gleam_add_specifier(provided).unwrap(); - match &version { - Requirement::Hex { version: v } => { - assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); - } - _ => assert!(false, "failed hexpm version parse: {provided}"), - } - assert_eq!(version, Requirement::hex(expected)); - assert_eq!("wibble", package); -} - -#[test] -fn parse_gleam_add_specifier_major_minor_and_patch() { - let provided = "bobble@1.2.3"; - let expected = "1.2.3"; - let (package, version) = parse_gleam_add_specifier(provided).unwrap(); - match &version { - Requirement::Hex { version: v } => { - assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); - } - _ => assert!(false, "failed hexpm version parse: {provided}"), - } - assert_eq!(version, Requirement::hex(expected)); - assert_eq!("bobble", package); -} - pub fn download( paths: &ProjectPaths, telemetry: Telem, @@ -496,124 +452,6 @@ impl LocalPackages { } } -#[test] -fn missing_local_packages() { - let manifest = Manifest { - requirements: HashMap::new(), - packages: vec![ - ManifestPackage { - name: "root".into(), - version: Version::parse("1.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4]), - }, - }, - ManifestPackage { - name: "local1".into(), - version: Version::parse("1.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), - }, - }, - ManifestPackage { - name: "local2".into(), - version: Version::parse("3.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), - }, - }, - ], - }; - let mut extra = LocalPackages { - packages: [ - ("local2".into(), Version::parse("2.0.0").unwrap()), - ("local3".into(), Version::parse("3.0.0").unwrap()), - ] - .into(), - } - .missing_local_packages(&manifest, "root"); - extra.sort(); - assert_eq!( - extra, - [ - &ManifestPackage { - name: "local1".into(), - version: Version::parse("1.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), - }, - }, - &ManifestPackage { - name: "local2".into(), - version: Version::parse("3.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), - }, - }, - ] - ) -} - -#[test] -fn extra_local_packages() { - let mut extra = LocalPackages { - packages: [ - ("local1".into(), Version::parse("1.0.0").unwrap()), - ("local2".into(), Version::parse("2.0.0").unwrap()), - ("local3".into(), Version::parse("3.0.0").unwrap()), - ] - .into(), - } - .extra_local_packages(&Manifest { - requirements: HashMap::new(), - packages: vec![ - ManifestPackage { - name: "local1".into(), - version: Version::parse("1.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), - }, - }, - ManifestPackage { - name: "local2".into(), - version: Version::parse("3.0.0").unwrap(), - build_tools: ["gleam".into()].into(), - otp_app: None, - requirements: vec![], - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![4, 5]), - }, - }, - ], - }); - extra.sort(); - assert_eq!( - extra, - [ - ("local2".into(), Version::new(2, 0, 0)), - ("local3".into(), Version::new(3, 0, 0)), - ] - ) -} - fn get_manifest( paths: &ProjectPaths, runtime: tokio::runtime::Handle, @@ -649,7 +487,7 @@ fn get_manifest( if packages_to_update.is_empty() && is_same_requirements( &manifest.requirements, - &config.all_drect_dependencies()?, + &config.all_direct_dependencies()?, paths.root(), )? { @@ -877,7 +715,7 @@ fn resolve_versions( let manifest = Manifest { packages: manifest_packages, - requirements: config.all_drect_dependencies()?, + requirements: config.all_direct_dependencies()?, }; Ok(manifest) @@ -1093,218 +931,6 @@ fn find_deps_to_unlock( .collect() } -#[test] -fn provide_wrong_package() { - let mut provided = HashMap::new(); - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - "wrong_name".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - if let Err(Error::WrongDependencyProvided { - expected, found, .. - }) = result - { - assert_eq!(expected, "wrong_name"); - assert_eq!(found, "hello_world"); - } else { - panic!("Expected WrongDependencyProvided error") - } -} - -#[test] -fn provide_existing_package() { - let mut provided = HashMap::new(); - let project_paths = crate::project_paths_at_current_directory_without_toml(); - - let result = provide_local_package( - "hello_world".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); - - let result = provide_local_package( - "hello_world".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); -} - -#[test] -fn provide_conflicting_package() { - let mut provided = HashMap::new(); - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - "hello_world".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); - - let result = provide_package( - "hello_world".into(), - Utf8PathBuf::from("./test/other"), - ProvidedPackageSource::Local { - path: Utf8Path::new("./test/other").to_path_buf(), - }, - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - if let Err(Error::ProvidedDependencyConflict { package, .. }) = result { - assert_eq!(package, "hello_world"); - } else { - panic!("Expected ProvidedDependencyConflict error") - } -} - -#[test] -fn glistix_provide_conflicting_package_patched_by_root() { - let mut provided = HashMap::new(); - - let patched_package = EcoString::from("hello_world"); - let mut root_config = PackageConfig::default(); - let _ = root_config.dependencies.insert( - patched_package.clone(), - Requirement::Path { - path: Utf8PathBuf::from("./test/hello_world"), - }, - ); - root_config - .glistix - .preview - .local_overrides - .push(patched_package.clone()); - - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - patched_package.clone(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &root_config, - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); - - let result = provide_local_package( - patched_package, - Utf8Path::new("./test/"), - Utf8Path::new("./"), - &project_paths, - &root_config, - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - // OK: There was a conflict, but root had a dependency with an override. - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); -} - -#[test] -fn glistix_provide_conflicting_package_patched_by_root_but_not_root_dependency() { - let mut provided = HashMap::new(); - - let patched_package = EcoString::from("hello_world"); - let mut root_config = PackageConfig::default(); - root_config - .glistix - .preview - .local_overrides - .push(patched_package.clone()); - - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - patched_package.clone(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &root_config, - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); - - let result = provide_local_package( - patched_package, - Utf8Path::new("./test/"), - Utf8Path::new("./"), - &project_paths, - &root_config, - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - // There was an override, but no matching root dependency, so it doesn't count. - if let Err(Error::ProvidedDependencyConflict { package, .. }) = result { - assert_eq!(package, "hello_world"); - } else { - panic!("Expected ProvidedDependencyConflict error, got {result:?}") - } -} - -#[test] -fn provided_is_absolute() { - let mut provided = HashMap::new(); - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - "hello_world".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "subpackage".into()], - ); - assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); - let package = provided.get("hello_world").unwrap().clone(); - if let ProvidedPackageSource::Local { path } = package.source { - assert!(path.is_absolute()) - } else { - panic!("Provide_local_package provided a package that is not local!") - } -} - -#[test] -fn provided_recursive() { - let mut provided = HashMap::new(); - let project_paths = crate::project_paths_at_current_directory_without_toml(); - let result = provide_local_package( - "hello_world".into(), - Utf8Path::new("./test/hello_world"), - Utf8Path::new("./"), - &project_paths, - &PackageConfig::default(), - &mut provided, - &mut vec!["root".into(), "hello_world".into(), "subpackage".into()], - ); - assert_eq!( - result, - Err(Error::PackageCycle { - packages: vec!["subpackage".into(), "hello_world".into()], - }) - ) -} - /// Determine the information to add to the manifest for a specific package async fn lookup_package( name: String, @@ -1394,545 +1020,15 @@ impl dependency::PackageFetcher for PackageFetcher { .runtime .block_on(self.http.send(request)) .map_err(Box::new)?; - hexpm::get_package_response(response, HEXPM_PUBLIC_KEY).map_err(|e| e.into()) - } -} - -#[test] -fn provided_local_to_hex() { - let provided_package = ProvidedPackage { - version: Version::new(1, 0, 0), - source: ProvidedPackageSource::Local { - path: "canonical/path/to/package".into(), - }, - requirements: [ - ( - "req_1".into(), - hexpm::version::Range::new("~> 1.0.0".into()), - ), - ( - "req_2".into(), - hexpm::version::Range::new("== 1.0.0".into()), - ), - ] - .into(), - }; - - let hex_package = hexpm::Package { - name: "package".into(), - repository: "local".into(), - releases: vec![hexpm::Release { - version: Version::new(1, 0, 0), - retirement_status: None, - outer_checksum: vec![], - meta: (), - requirements: [ - ( - "req_1".into(), - hexpm::Dependency { - requirement: hexpm::version::Range::new("~> 1.0.0".into()), - optional: false, - app: None, - repository: None, - }, - ), - ( - "req_2".into(), - hexpm::Dependency { - requirement: hexpm::version::Range::new("== 1.0.0".into()), - optional: false, - app: None, - repository: None, - }, - ), - ] - .into(), - }], - }; - - assert_eq!( - provided_package.to_hex_package(&"package".into()), - hex_package - ); -} - -#[test] -fn provided_git_to_hex() { - let provided_package = ProvidedPackage { - version: Version::new(1, 0, 0), - source: ProvidedPackageSource::Git { - repo: "https://github.com/gleam-lang/gleam.git".into(), - commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), - }, - requirements: [ - ( - "req_1".into(), - hexpm::version::Range::new("~> 1.0.0".into()), - ), - ( - "req_2".into(), - hexpm::version::Range::new("== 1.0.0".into()), - ), - ] - .into(), - }; - - let hex_package = hexpm::Package { - name: "package".into(), - repository: "local".into(), - releases: vec![hexpm::Release { - version: Version::new(1, 0, 0), - retirement_status: None, - outer_checksum: vec![], - meta: (), - requirements: [ - ( - "req_1".into(), - hexpm::Dependency { - requirement: hexpm::version::Range::new("~> 1.0.0".into()), - optional: false, - app: None, - repository: None, - }, - ), - ( - "req_2".into(), - hexpm::Dependency { - requirement: hexpm::version::Range::new("== 1.0.0".into()), - optional: false, - app: None, - repository: None, - }, - ), - ] - .into(), - }], - }; - - assert_eq!( - provided_package.to_hex_package(&"package".into()), - hex_package - ); -} -#[test] -fn provided_local_to_manifest() { - let provided_package = ProvidedPackage { - version: Version::new(1, 0, 0), - source: ProvidedPackageSource::Local { - path: "canonical/path/to/package".into(), - }, - requirements: [ - ( - "req_1".into(), - hexpm::version::Range::new("~> 1.0.0".into()), - ), - ( - "req_2".into(), - hexpm::version::Range::new("== 1.0.0".into()), - ), - ] - .into(), - }; - - let manifest_package = ManifestPackage { - name: "package".into(), - version: Version::new(1, 0, 0), - otp_app: None, - build_tools: vec!["gleam".into()], - requirements: vec!["req_1".into(), "req_2".into()], - source: ManifestPackageSource::Local { - path: "canonical/path/to/package".into(), - }, - }; - - assert_eq!( - provided_package.to_manifest_package("package"), - manifest_package - ); -} - -#[test] -fn provided_git_to_manifest() { - let provided_package = ProvidedPackage { - version: Version::new(1, 0, 0), - source: ProvidedPackageSource::Git { - repo: "https://github.com/gleam-lang/gleam.git".into(), - commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), - }, - requirements: [ - ( - "req_1".into(), - hexpm::version::Range::new("~> 1.0.0".into()), - ), - ( - "req_2".into(), - hexpm::version::Range::new("== 1.0.0".into()), - ), - ] - .into(), - }; - - let manifest_package = ManifestPackage { - name: "package".into(), - version: Version::new(1, 0, 0), - otp_app: None, - build_tools: vec!["gleam".into()], - requirements: vec!["req_1".into(), "req_2".into()], - source: ManifestPackageSource::Git { - repo: "https://github.com/gleam-lang/gleam.git".into(), - commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), - }, - }; - - assert_eq!( - provided_package.to_manifest_package("package"), - manifest_package - ); -} - -#[test] -fn verified_requirements_equality_with_canonicalized_paths() { - let temp_dir = tempfile::tempdir().expect("Failed to create a temp directory"); - let temp_path = Utf8PathBuf::from_path_buf(temp_dir.path().to_path_buf()) - .expect("Path should be valid UTF-8"); - - let sub_dir = temp_path.join("subdir"); - std::fs::create_dir(&sub_dir).expect("Failed to create a subdir"); - let file_path = sub_dir.join("file.txt"); - fs::write(&file_path, "content").expect("Failed to write to file"); - - let canonical_path = std::fs::canonicalize(&file_path).expect("Failed to canonicalize path"); - let relative_path = temp_path.join("./subdir/../subdir/./file.txt"); - - let requirements1 = HashMap::from([( - EcoString::from("dep1"), - Requirement::Path { - path: Utf8PathBuf::from(canonical_path.to_str().expect("Path should be valid UTF-8")), - }, - )]); - - let requirements2 = HashMap::from([( - EcoString::from("dep1"), - Requirement::Path { - path: Utf8PathBuf::from(relative_path.to_string()), - }, - )]); - - assert!( - is_same_requirements(&requirements1, &requirements2, &temp_path) - .expect("Requirements should be the same") - ); -} - -#[cfg(test)] -fn create_testable_unlock_manifest( - packages: Vec<(EcoString, Version, Vec)>, - requirements: Vec<(EcoString, EcoString)>, -) -> Manifest { - let manifest_packages = packages - .into_iter() - .map(|(name, version, requirements)| ManifestPackage { - name, - version, - build_tools: vec!["gleam".into()], - otp_app: None, - requirements, - source: ManifestPackageSource::Hex { - outer_checksum: Base16Checksum(vec![]), + match hexpm::get_package_response(response, HEXPM_PUBLIC_KEY) { + Ok(a) => Ok(a), + Err(e) => match e { + hexpm::ApiError::NotFound => { + Err(format!("I couldn't find a package called `{}`", package).into()) + } + _ => Err(e.into()), }, - }) - .collect(); - - let root_requirements = requirements - .into_iter() - .map(|(name, range)| { - ( - name, - Requirement::Hex { - version: hexpm::version::Range::new(range.into()), - }, - ) - }) - .collect(); - - Manifest { - packages: manifest_packages, - requirements: root_requirements, + } } } - -#[test] -fn test_unlock_package() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ("package_d".into(), Version::new(4, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ( - "package_b".into(), - Version::new(2, 0, 0), - vec!["package_c".into()], - ), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ("package_d".into(), Version::new(4, 0, 0), vec![]), - ]; - - let manifest = create_testable_unlock_manifest(packages, Vec::new()); - - let packages_to_unlock = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(!locked.contains_key("package_b")); - assert!(!locked.contains_key("package_c")); - assert!(locked.contains_key("package_d")); -} - -#[test] -fn test_unlock_package_without_manifest() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ]); - - let packages_to_unlock = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, None).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(locked.contains_key("package_b")); - assert!(locked.contains_key("package_c")); -} - -#[test] -fn test_unlock_nonexistent_package() { - let initial_locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ("package_b".into(), Version::new(2, 0, 0), vec![]), - ]; - - let manifest = create_testable_unlock_manifest(packages, Vec::new()); - - let packages_to_unlock = vec!["nonexistent_package".into()]; - let mut locked = initial_locked.clone(); - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert_eq!( - initial_locked, locked, - "Locked packages should remain unchanged" - ); -} - -#[test] -fn test_unlock_multiple_packages() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ("package_d".into(), Version::new(4, 0, 0)), - ("package_e".into(), Version::new(5, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ( - "package_b".into(), - Version::new(2, 0, 0), - vec!["package_c".into()], - ), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ( - "package_d".into(), - Version::new(4, 0, 0), - vec!["package_e".into()], - ), - ("package_e".into(), Version::new(5, 0, 0), vec![]), - ]; - - let manifest = create_testable_unlock_manifest(packages, Vec::new()); - - let packages_to_unlock = vec!["package_a".into(), "package_d".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(!locked.contains_key("package_b")); - assert!(!locked.contains_key("package_c")); - assert!(!locked.contains_key("package_d")); - assert!(!locked.contains_key("package_e")); -} - -#[test] -fn test_unlock_packages_empty_input() { - let initial_locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ("package_b".into(), Version::new(2, 0, 0), vec![]), - ]; - - let manifest = create_testable_unlock_manifest(packages, Vec::new()); - - let packages_to_unlock: Vec = vec![]; - let mut locked = initial_locked.clone(); - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert_eq!( - initial_locked, locked, - "Locked packages should remain unchanged when no packages are specified to unlock" - ); -} - -#[test] -fn test_unlock_package_preserve_shared_deps() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_c".into()], - ), - ( - "package_b".into(), - Version::new(2, 0, 0), - vec!["package_c".into()], - ), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ]; - - let manifest = create_testable_unlock_manifest(packages, Vec::new()); - - let packages_to_unlock: Vec = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(locked.contains_key("package_b")); - assert!(locked.contains_key("package_c")); -} - -#[test] -fn test_unlock_package_with_root_dep() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ( - "package_b".into(), - Version::new(2, 0, 0), - vec!["package_c".into()], - ), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ]; - - let requirements = vec![("package_b".into(), ">= 2.0.0".into())]; - - let manifest = create_testable_unlock_manifest(packages, requirements); - - let packages_to_unlock: Vec = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(locked.contains_key("package_b")); - assert!(locked.contains_key("package_c")); -} - -#[test] -fn test_unlock_root_dep_package() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into()], - ), - ("package_b".into(), Version::new(2, 0, 0), vec![]), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ]; - - let requirements = vec![("package_a".into(), ">= 1.0.0".into())]; - - let manifest = create_testable_unlock_manifest(packages, requirements); - - let packages_to_unlock: Vec = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(!locked.contains_key("package_b")); - assert!(locked.contains_key("package_c")); -} - -#[test] -fn test_unlock_package_with_and_without_root_dep() { - let mut locked = HashMap::from([ - ("package_a".into(), Version::new(1, 0, 0)), - ("package_b".into(), Version::new(2, 0, 0)), - ("package_c".into(), Version::new(3, 0, 0)), - ]); - - let packages = vec![ - ( - "package_a".into(), - Version::new(1, 0, 0), - vec!["package_b".into(), "package_c".into()], - ), - ("package_b".into(), Version::new(2, 0, 0), vec![]), - ("package_c".into(), Version::new(3, 0, 0), vec![]), - ]; - - let requirements = vec![("package_b".into(), ">= 2.0.0".into())]; - - let manifest = create_testable_unlock_manifest(packages, requirements); - - let packages_to_unlock: Vec = vec!["package_a".into()]; - unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); - - assert!(!locked.contains_key("package_a")); - assert!(locked.contains_key("package_b")); - assert!(!locked.contains_key("package_c")); -} diff --git a/compiler-cli/src/dependencies/tests.rs b/compiler-cli/src/dependencies/tests.rs new file mode 100644 index 000000000..7bf5123f2 --- /dev/null +++ b/compiler-cli/src/dependencies/tests.rs @@ -0,0 +1,1176 @@ +use std::collections::HashMap; + +use camino::{Utf8Path, Utf8PathBuf}; +use ecow::EcoString; +use hexpm::version::Version; +use pretty_assertions::assert_eq; + +use glistix_core::{ + build::Runtime, + config::{DenoConfig, DenoFlag, Docs, ErlangConfig, JavaScriptConfig, Repository}, + manifest::{Base16Checksum, Manifest, ManifestPackage, ManifestPackageSource}, + requirement::Requirement, + Error, +}; + +use crate::dependencies::*; + +#[test] +fn list_manifest_format() { + let mut buffer = vec![]; + let manifest = Manifest { + requirements: HashMap::new(), + packages: vec![ + ManifestPackage { + name: "root".into(), + version: Version::parse("1.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4]), + }, + }, + ManifestPackage { + name: "aaa".into(), + version: Version::new(0, 4, 2), + build_tools: ["rebar3".into(), "make".into()].into(), + otp_app: Some("aaa_app".into()), + requirements: vec!["zzz".into(), "gleam_stdlib".into()], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![3, 22]), + }, + }, + ManifestPackage { + name: "zzz".into(), + version: Version::new(0, 4, 0), + build_tools: ["mix".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![3, 22]), + }, + }, + ], + }; + list_manifest_packages(&mut buffer, manifest).unwrap(); + assert_eq!( + std::str::from_utf8(&buffer).unwrap(), + r#"root 1.0.0 +aaa 0.4.2 +zzz 0.4.0 +"# + ) +} + +#[test] +fn parse_gleam_add_specifier_invalid_semver() { + assert!(parse_gleam_add_specifier("some_package@1.2.3.4").is_err()); +} + +#[test] +fn parse_gleam_add_specifier_non_numeric_version() { + assert!(parse_gleam_add_specifier("some_package@not_a_version").is_err()); +} + +#[test] +fn parse_gleam_add_specifier_default() { + let provided = "some_package"; + let expected = ">= 0.0.0"; + let (package, version) = parse_gleam_add_specifier(provided).unwrap(); + match &version { + Requirement::Hex { version: v } => { + assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); + } + _ => assert!(false, "failed hexpm version parse: {provided}"), + } + assert_eq!(version, Requirement::hex(expected)); + assert_eq!("some_package", package); +} + +#[test] +fn parse_gleam_add_specifier_major_only() { + let provided = "wobble@1"; + let expected = ">= 1.0.0 and < 2.0.0"; + let (package, version) = parse_gleam_add_specifier(provided).unwrap(); + match &version { + Requirement::Hex { version: v } => { + assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); + } + _ => assert!(false, "failed hexpm version parse: {provided}"), + } + assert_eq!(version, Requirement::hex(expected)); + assert_eq!("wobble", package); +} + +#[test] +fn parse_gleam_add_specifier_major_and_minor() { + let provided = "wibble@1.2"; + let expected = ">= 1.2.0 and < 2.0.0"; + let (package, version) = parse_gleam_add_specifier(provided).unwrap(); + match &version { + Requirement::Hex { version: v } => { + assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); + } + _ => assert!(false, "failed hexpm version parse: {provided}"), + } + assert_eq!(version, Requirement::hex(expected)); + assert_eq!("wibble", package); +} + +#[test] +fn parse_gleam_add_specifier_major_minor_and_patch() { + let provided = "bobble@1.2.3"; + let expected = "1.2.3"; + let (package, version) = parse_gleam_add_specifier(provided).unwrap(); + match &version { + Requirement::Hex { version: v } => { + assert!(v.to_pubgrub().is_ok(), "failed pubgrub parse: {v}"); + } + _ => assert!(false, "failed hexpm version parse: {provided}"), + } + assert_eq!(version, Requirement::hex(expected)); + assert_eq!("bobble", package); +} + +#[test] +fn missing_local_packages() { + let manifest = Manifest { + requirements: HashMap::new(), + packages: vec![ + ManifestPackage { + name: "root".into(), + version: Version::parse("1.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4]), + }, + }, + ManifestPackage { + name: "local1".into(), + version: Version::parse("1.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), + }, + }, + ManifestPackage { + name: "local2".into(), + version: Version::parse("3.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), + }, + }, + ], + }; + let mut extra = LocalPackages { + packages: [ + ("local2".into(), Version::parse("2.0.0").unwrap()), + ("local3".into(), Version::parse("3.0.0").unwrap()), + ] + .into(), + } + .missing_local_packages(&manifest, "root"); + extra.sort(); + assert_eq!( + extra, + [ + &ManifestPackage { + name: "local1".into(), + version: Version::parse("1.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), + }, + }, + &ManifestPackage { + name: "local2".into(), + version: Version::parse("3.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), + }, + }, + ] + ) +} + +#[test] +fn extra_local_packages() { + let mut extra = LocalPackages { + packages: [ + ("local1".into(), Version::parse("1.0.0").unwrap()), + ("local2".into(), Version::parse("2.0.0").unwrap()), + ("local3".into(), Version::parse("3.0.0").unwrap()), + ] + .into(), + } + .extra_local_packages(&Manifest { + requirements: HashMap::new(), + packages: vec![ + ManifestPackage { + name: "local1".into(), + version: Version::parse("1.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4, 5]), + }, + }, + ManifestPackage { + name: "local2".into(), + version: Version::parse("3.0.0").unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements: vec![], + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![4, 5]), + }, + }, + ], + }); + extra.sort(); + assert_eq!( + extra, + [ + ("local2".into(), Version::new(2, 0, 0)), + ("local3".into(), Version::new(3, 0, 0)), + ] + ) +} + +#[test] +fn provide_wrong_package() { + let mut provided = HashMap::new(); + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + "wrong_name".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + if let Err(Error::WrongDependencyProvided { + expected, found, .. + }) = result + { + assert_eq!(expected, "wrong_name"); + assert_eq!(found, "hello_world"); + } else { + panic!("Expected WrongDependencyProvided error") + } +} + +#[test] +fn provide_existing_package() { + let mut provided = HashMap::new(); + let project_paths = crate::project_paths_at_current_directory_without_toml(); + + let result = provide_local_package( + "hello_world".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); + + let result = provide_local_package( + "hello_world".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); +} + +#[test] +fn provide_conflicting_package() { + let mut provided = HashMap::new(); + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + "hello_world".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); + + let result = provide_package( + "hello_world".into(), + Utf8PathBuf::from("./test/other"), + ProvidedPackageSource::Local { + path: Utf8Path::new("./test/other").to_path_buf(), + }, + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + if let Err(Error::ProvidedDependencyConflict { package, .. }) = result { + assert_eq!(package, "hello_world"); + } else { + panic!("Expected ProvidedDependencyConflict error") + } +} + +#[test] +fn glistix_provide_conflicting_package_patched_by_root() { + let mut provided = HashMap::new(); + + let patched_package = EcoString::from("hello_world"); + let mut root_config = PackageConfig::default(); + let _ = root_config.dependencies.insert( + patched_package.clone(), + Requirement::Path { + path: Utf8PathBuf::from("./test/hello_world"), + }, + ); + root_config + .glistix + .preview + .local_overrides + .push(patched_package.clone()); + + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + patched_package.clone(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &root_config, + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); + + let result = provide_local_package( + patched_package, + Utf8Path::new("./test/"), + Utf8Path::new("./"), + &project_paths, + &root_config, + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + // OK: There was a conflict, but root had a dependency with an override. + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); +} + +#[test] +fn glistix_provide_conflicting_package_patched_by_root_but_not_root_dependency() { + let mut provided = HashMap::new(); + + let patched_package = EcoString::from("hello_world"); + let mut root_config = PackageConfig::default(); + root_config + .glistix + .preview + .local_overrides + .push(patched_package.clone()); + + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + patched_package.clone(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &root_config, + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); + + let result = provide_local_package( + patched_package, + Utf8Path::new("./test/"), + Utf8Path::new("./"), + &project_paths, + &root_config, + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + // There was an override, but no matching root dependency, so it doesn't count. + if let Err(Error::ProvidedDependencyConflict { package, .. }) = result { + assert_eq!(package, "hello_world"); + } else { + panic!("Expected ProvidedDependencyConflict error, got {result:?}") + } +} + +#[test] +fn provided_is_absolute() { + let mut provided = HashMap::new(); + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + "hello_world".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "subpackage".into()], + ); + assert_eq!(result, Ok(hexpm::version::Range::new("== 0.1.0".into()))); + let package = provided.get("hello_world").unwrap().clone(); + if let ProvidedPackageSource::Local { path } = package.source { + assert!(path.is_absolute()) + } else { + panic!("Provide_local_package provided a package that is not local!") + } +} + +#[test] +fn provided_recursive() { + let mut provided = HashMap::new(); + let project_paths = crate::project_paths_at_current_directory_without_toml(); + let result = provide_local_package( + "hello_world".into(), + Utf8Path::new("./test/hello_world"), + Utf8Path::new("./"), + &project_paths, + &PackageConfig::default(), + &mut provided, + &mut vec!["root".into(), "hello_world".into(), "subpackage".into()], + ); + assert_eq!( + result, + Err(Error::PackageCycle { + packages: vec!["subpackage".into(), "hello_world".into()], + }) + ) +} +#[test] +fn provided_local_to_hex() { + let provided_package = ProvidedPackage { + version: Version::new(1, 0, 0), + source: ProvidedPackageSource::Local { + path: "canonical/path/to/package".into(), + }, + requirements: [ + ( + "req_1".into(), + hexpm::version::Range::new("~> 1.0.0".into()), + ), + ( + "req_2".into(), + hexpm::version::Range::new("== 1.0.0".into()), + ), + ] + .into(), + }; + + let hex_package = hexpm::Package { + name: "package".into(), + repository: "local".into(), + releases: vec![hexpm::Release { + version: Version::new(1, 0, 0), + retirement_status: None, + outer_checksum: vec![], + meta: (), + requirements: [ + ( + "req_1".into(), + hexpm::Dependency { + requirement: hexpm::version::Range::new("~> 1.0.0".into()), + optional: false, + app: None, + repository: None, + }, + ), + ( + "req_2".into(), + hexpm::Dependency { + requirement: hexpm::version::Range::new("== 1.0.0".into()), + optional: false, + app: None, + repository: None, + }, + ), + ] + .into(), + }], + }; + + assert_eq!( + provided_package.to_hex_package(&"package".into()), + hex_package + ); +} + +#[test] +fn provided_git_to_hex() { + let provided_package = ProvidedPackage { + version: Version::new(1, 0, 0), + source: ProvidedPackageSource::Git { + repo: "https://github.com/gleam-lang/gleam.git".into(), + commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), + }, + requirements: [ + ( + "req_1".into(), + hexpm::version::Range::new("~> 1.0.0".into()), + ), + ( + "req_2".into(), + hexpm::version::Range::new("== 1.0.0".into()), + ), + ] + .into(), + }; + + let hex_package = hexpm::Package { + name: "package".into(), + repository: "local".into(), + releases: vec![hexpm::Release { + version: Version::new(1, 0, 0), + retirement_status: None, + outer_checksum: vec![], + meta: (), + requirements: [ + ( + "req_1".into(), + hexpm::Dependency { + requirement: hexpm::version::Range::new("~> 1.0.0".into()), + optional: false, + app: None, + repository: None, + }, + ), + ( + "req_2".into(), + hexpm::Dependency { + requirement: hexpm::version::Range::new("== 1.0.0".into()), + optional: false, + app: None, + repository: None, + }, + ), + ] + .into(), + }], + }; + + assert_eq!( + provided_package.to_hex_package(&"package".into()), + hex_package + ); +} + +#[test] +fn provided_local_to_manifest() { + let provided_package = ProvidedPackage { + version: Version::new(1, 0, 0), + source: ProvidedPackageSource::Local { + path: "canonical/path/to/package".into(), + }, + requirements: [ + ( + "req_1".into(), + hexpm::version::Range::new("~> 1.0.0".into()), + ), + ( + "req_2".into(), + hexpm::version::Range::new("== 1.0.0".into()), + ), + ] + .into(), + }; + + let manifest_package = ManifestPackage { + name: "package".into(), + version: Version::new(1, 0, 0), + otp_app: None, + build_tools: vec!["gleam".into()], + requirements: vec!["req_1".into(), "req_2".into()], + source: ManifestPackageSource::Local { + path: "canonical/path/to/package".into(), + }, + }; + + assert_eq!( + provided_package.to_manifest_package("package"), + manifest_package + ); +} + +#[test] +fn provided_git_to_manifest() { + let provided_package = ProvidedPackage { + version: Version::new(1, 0, 0), + source: ProvidedPackageSource::Git { + repo: "https://github.com/gleam-lang/gleam.git".into(), + commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), + }, + requirements: [ + ( + "req_1".into(), + hexpm::version::Range::new("~> 1.0.0".into()), + ), + ( + "req_2".into(), + hexpm::version::Range::new("== 1.0.0".into()), + ), + ] + .into(), + }; + + let manifest_package = ManifestPackage { + name: "package".into(), + version: Version::new(1, 0, 0), + otp_app: None, + build_tools: vec!["gleam".into()], + requirements: vec!["req_1".into(), "req_2".into()], + source: ManifestPackageSource::Git { + repo: "https://github.com/gleam-lang/gleam.git".into(), + commit: "bd9fe02f72250e6a136967917bcb1bdccaffa3c8".into(), + }, + }; + + assert_eq!( + provided_package.to_manifest_package("package"), + manifest_package + ); +} + +#[test] +fn verified_requirements_equality_with_canonicalized_paths() { + let temp_dir = tempfile::tempdir().expect("Failed to create a temp directory"); + let temp_path = Utf8PathBuf::from_path_buf(temp_dir.path().to_path_buf()) + .expect("Path should be valid UTF-8"); + + let sub_dir = temp_path.join("subdir"); + std::fs::create_dir(&sub_dir).expect("Failed to create a subdir"); + let file_path = sub_dir.join("file.txt"); + fs::write(&file_path, "content").expect("Failed to write to file"); + + let canonical_path = std::fs::canonicalize(&file_path).expect("Failed to canonicalize path"); + let relative_path = temp_path.join("./subdir/../subdir/./file.txt"); + + let requirements1 = HashMap::from([( + EcoString::from("dep1"), + Requirement::Path { + path: Utf8PathBuf::from(canonical_path.to_str().expect("Path should be valid UTF-8")), + }, + )]); + + let requirements2 = HashMap::from([( + EcoString::from("dep1"), + Requirement::Path { + path: Utf8PathBuf::from(relative_path.to_string()), + }, + )]); + + assert!( + is_same_requirements(&requirements1, &requirements2, &temp_path) + .expect("Requirements should be the same") + ); +} + +fn create_testable_unlock_manifest( + packages: Vec<(EcoString, Version, Vec)>, + requirements: Vec<(EcoString, EcoString)>, +) -> Manifest { + let manifest_packages = packages + .into_iter() + .map(|(name, version, requirements)| ManifestPackage { + name, + version, + build_tools: vec!["gleam".into()], + otp_app: None, + requirements, + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![]), + }, + }) + .collect(); + + let root_requirements = requirements + .into_iter() + .map(|(name, range)| { + ( + name, + Requirement::Hex { + version: hexpm::version::Range::new(range.into()), + }, + ) + }) + .collect(); + + Manifest { + packages: manifest_packages, + requirements: root_requirements, + } +} + +#[test] +fn test_unlock_package() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ("package_d".into(), Version::new(4, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ( + "package_b".into(), + Version::new(2, 0, 0), + vec!["package_c".into()], + ), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ("package_d".into(), Version::new(4, 0, 0), vec![]), + ]; + + let manifest = create_testable_unlock_manifest(packages, Vec::new()); + + let packages_to_unlock = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(!locked.contains_key("package_b")); + assert!(!locked.contains_key("package_c")); + assert!(locked.contains_key("package_d")); +} + +#[test] +fn test_unlock_package_without_manifest() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ]); + + let packages_to_unlock = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, None).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(locked.contains_key("package_b")); + assert!(locked.contains_key("package_c")); +} + +#[test] +fn test_unlock_nonexistent_package() { + let initial_locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ("package_b".into(), Version::new(2, 0, 0), vec![]), + ]; + + let manifest = create_testable_unlock_manifest(packages, Vec::new()); + + let packages_to_unlock = vec!["nonexistent_package".into()]; + let mut locked = initial_locked.clone(); + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert_eq!( + initial_locked, locked, + "Locked packages should remain unchanged" + ); +} + +#[test] +fn test_unlock_multiple_packages() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ("package_d".into(), Version::new(4, 0, 0)), + ("package_e".into(), Version::new(5, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ( + "package_b".into(), + Version::new(2, 0, 0), + vec!["package_c".into()], + ), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ( + "package_d".into(), + Version::new(4, 0, 0), + vec!["package_e".into()], + ), + ("package_e".into(), Version::new(5, 0, 0), vec![]), + ]; + + let manifest = create_testable_unlock_manifest(packages, Vec::new()); + + let packages_to_unlock = vec!["package_a".into(), "package_d".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(!locked.contains_key("package_b")); + assert!(!locked.contains_key("package_c")); + assert!(!locked.contains_key("package_d")); + assert!(!locked.contains_key("package_e")); +} + +#[test] +fn test_unlock_packages_empty_input() { + let initial_locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ("package_b".into(), Version::new(2, 0, 0), vec![]), + ]; + + let manifest = create_testable_unlock_manifest(packages, Vec::new()); + + let packages_to_unlock: Vec = vec![]; + let mut locked = initial_locked.clone(); + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert_eq!( + initial_locked, locked, + "Locked packages should remain unchanged when no packages are specified to unlock" + ); +} + +#[test] +fn test_unlock_package_preserve_shared_deps() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_c".into()], + ), + ( + "package_b".into(), + Version::new(2, 0, 0), + vec!["package_c".into()], + ), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ]; + + let manifest = create_testable_unlock_manifest(packages, Vec::new()); + + let packages_to_unlock: Vec = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(locked.contains_key("package_b")); + assert!(locked.contains_key("package_c")); +} + +#[test] +fn test_unlock_package_with_root_dep() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ( + "package_b".into(), + Version::new(2, 0, 0), + vec!["package_c".into()], + ), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ]; + + let requirements = vec![("package_b".into(), ">= 2.0.0".into())]; + + let manifest = create_testable_unlock_manifest(packages, requirements); + + let packages_to_unlock: Vec = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(locked.contains_key("package_b")); + assert!(locked.contains_key("package_c")); +} + +#[test] +fn test_unlock_root_dep_package() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into()], + ), + ("package_b".into(), Version::new(2, 0, 0), vec![]), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ]; + + let requirements = vec![("package_a".into(), ">= 1.0.0".into())]; + + let manifest = create_testable_unlock_manifest(packages, requirements); + + let packages_to_unlock: Vec = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(!locked.contains_key("package_b")); + assert!(locked.contains_key("package_c")); +} + +#[test] +fn test_unlock_package_with_and_without_root_dep() { + let mut locked = HashMap::from([ + ("package_a".into(), Version::new(1, 0, 0)), + ("package_b".into(), Version::new(2, 0, 0)), + ("package_c".into(), Version::new(3, 0, 0)), + ]); + + let packages = vec![ + ( + "package_a".into(), + Version::new(1, 0, 0), + vec!["package_b".into(), "package_c".into()], + ), + ("package_b".into(), Version::new(2, 0, 0), vec![]), + ("package_c".into(), Version::new(3, 0, 0), vec![]), + ]; + + let requirements = vec![("package_b".into(), ">= 2.0.0".into())]; + + let manifest = create_testable_unlock_manifest(packages, requirements); + + let packages_to_unlock: Vec = vec!["package_a".into()]; + unlock_packages(&mut locked, &packages_to_unlock, Some(&manifest)).unwrap(); + + assert!(!locked.contains_key("package_a")); + assert!(locked.contains_key("package_b")); + assert!(!locked.contains_key("package_c")); +} + +fn manifest_package(name: &str, version: &str, requirements: Vec) -> ManifestPackage { + ManifestPackage { + name: name.into(), + version: Version::parse(version).unwrap(), + build_tools: ["gleam".into()].into(), + otp_app: None, + requirements, + source: ManifestPackageSource::Hex { + outer_checksum: Base16Checksum(vec![1, 2, 3, 4]), + }, + } +} + +fn package_config( + dependencies: HashMap, + dev_dependencies: HashMap, +) -> PackageConfig { + PackageConfig { + name: "the_package".into(), + version: Version::parse("1.0.0").unwrap(), + gleam_version: None, + licences: vec![], + description: "".into(), + documentation: Docs { pages: vec![] }, + dependencies, + dev_dependencies, + repository: Repository::None, + links: vec![], + erlang: ErlangConfig { + application_start_module: None, + extra_applications: vec![], + }, + javascript: JavaScriptConfig { + typescript_declarations: false, + runtime: Runtime::NodeJs, + deno: DenoConfig { + allow_env: DenoFlag::AllowAll, + allow_sys: true, + allow_hrtime: true, + allow_net: DenoFlag::AllowAll, + allow_ffi: true, + allow_read: DenoFlag::AllowAll, + allow_run: DenoFlag::AllowAll, + allow_write: DenoFlag::AllowAll, + allow_all: true, + unstable: true, + location: None, + }, + }, + target: Target::Erlang, + internal_modules: None, + glistix: Default::default(), + } +} + +#[test] +fn test_remove_do_nothing() { + let config = package_config( + HashMap::from([("a".into(), Requirement::hex("~>1"))]), + HashMap::from([("b".into(), Requirement::hex("~>2"))]), + ); + + let mut manifest = Manifest { + requirements: HashMap::from([ + ("a".into(), Requirement::hex("~>1")), + ("b".into(), Requirement::hex("~>2")), + ]), + packages: vec![ + manifest_package("a", "1.0.0", vec![]), + manifest_package("b", "2.0.8", vec![]), + ], + }; + + let manifest_copy = manifest.clone(); + + remove_extra_requirements(&config, &mut manifest).unwrap(); + + assert_eq!(manifest.requirements, manifest_copy.requirements); + assert_eq!(manifest.packages, manifest_copy.packages); +} + +#[test] +fn test_remove_simple() { + let config = package_config(HashMap::new(), HashMap::new()); + + let mut manifest = Manifest { + requirements: HashMap::from([("a".into(), Requirement::hex("~>1"))]), + packages: vec![manifest_package("a", "1.0.0", vec![])], + }; + + remove_extra_requirements(&config, &mut manifest).unwrap(); + + assert_eq!(manifest.requirements, config.dependencies); + assert_eq!(manifest.packages, vec![]); +} + +#[test] +fn test_remove_package_with_transitive_dependencies() { + let config = package_config(HashMap::new(), HashMap::new()); + + let mut manifest = Manifest { + requirements: HashMap::from([("a".into(), Requirement::hex("~>1"))]), + packages: vec![ + manifest_package("a", "1.0.0", vec!["b".into()]), + manifest_package("b", "1.2.3", vec!["c".into()]), + manifest_package("c", "2.0.0", vec![]), + ], + }; + + remove_extra_requirements(&config, &mut manifest).unwrap(); + + assert_eq!(manifest.requirements, config.dependencies); + assert_eq!(manifest.packages, vec![]); +} + +#[test] +fn test_remove_package_with_shared_transitive_dependencies() { + let config = package_config( + HashMap::from([("a".into(), Requirement::hex("~>1"))]), + HashMap::new(), + ); + + let mut manifest = Manifest { + requirements: HashMap::from([ + ("a".into(), Requirement::hex("~>1")), + ("b".into(), Requirement::hex("~>1")), + ]), + packages: vec![ + manifest_package("a", "1.0.0", vec!["c".into()]), + manifest_package("b", "1.2.3", vec!["c".into(), "d".into()]), + manifest_package("c", "2.0.0", vec![]), + manifest_package("d", "0.1.0", vec![]), + ], + }; + + remove_extra_requirements(&config, &mut manifest).unwrap(); + + assert_eq!(manifest.requirements, config.dependencies); + assert_eq!( + manifest.packages, + vec![ + manifest_package("a", "1.0.0", vec!["c".into()]), + manifest_package("c", "2.0.0", vec![]), + ] + ); +} + +#[test] +fn test_remove_package_that_is_also_a_transitive_dependency() { + let config = package_config( + HashMap::from([("a".into(), Requirement::hex("~>1"))]), + HashMap::new(), + ); + + let mut manifest = Manifest { + requirements: HashMap::from([ + ("a".into(), Requirement::hex("~>1")), + ("b".into(), Requirement::hex("~>1")), + ]), + packages: vec![ + manifest_package("a", "1.0.0", vec!["b".into(), "c".into()]), + manifest_package("b", "1.2.3", vec!["c".into(), "d".into()]), + manifest_package("c", "2.0.0", vec![]), + manifest_package("d", "0.1.0", vec![]), + ], + }; + + let manifest_copy = manifest.clone(); + + remove_extra_requirements(&config, &mut manifest).unwrap(); + + assert_eq!(manifest.requirements, config.dependencies); + assert_eq!(manifest.packages, manifest_copy.packages); +} diff --git a/compiler-cli/src/docs.rs b/compiler-cli/src/docs.rs index 5de1946b3..621d75084 100644 --- a/compiler-cli/src/docs.rs +++ b/compiler-cli/src/docs.rs @@ -2,7 +2,7 @@ use std::time::{Instant, SystemTime}; use camino::{Utf8Path, Utf8PathBuf}; -use crate::{cli, fs::ProjectIO, hex::ApiKeyCommand, http::HttpClient}; +use crate::{cli, fs::ProjectIO, http::HttpClient}; use glistix_core::{ analyse::TargetSupport, build::{Codegen, Compile, Mode, Options, Package, Target}, @@ -15,42 +15,21 @@ use glistix_core::{ }; pub fn remove(package: String, version: String) -> Result<()> { - RemoveCommand::new(package, version).run() -} - -struct RemoveCommand { - package: String, - version: String, -} - -impl RemoveCommand { - pub fn new(package: String, version: String) -> Self { - Self { package, version } - } -} - -impl ApiKeyCommand for RemoveCommand { - fn with_api_key( - &mut self, - handle: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()> { - let http = HttpClient::new(); - - // Remove docs from API - let request = hexpm::remove_docs_request(&self.package, &self.version, api_key, hex_config) - .map_err(Error::hex)?; - let response = handle.block_on(http.send(request))?; - hexpm::remove_docs_response(response).map_err(Error::hex)?; - - // Done! - println!( - "The docs for {} {} have been removed from HexDocs", - self.package, self.version - ); - Ok(()) - } + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let hex_config = hexpm::Config::new(); + let api_key = + crate::hex::HexAuthentication::new(&runtime, hex_config.clone()).get_or_create_api_key()?; + let http = HttpClient::new(); + + // Remove docs from API + let request = hexpm::remove_docs_request(&package, &version, &api_key, &hex_config) + .map_err(Error::hex)?; + let response = runtime.block_on(http.send(request))?; + hexpm::remove_docs_response(response).map_err(Error::hex)?; + + // Done! + println!("The docs for {package} {version} have been removed from HexDocs"); + Ok(()) } #[derive(Debug)] @@ -146,60 +125,43 @@ pub(crate) fn build_documentation( Ok(outputs) } -struct PublishCommand { - config: PackageConfig, - archive: Vec, -} - pub fn publish() -> Result<()> { - PublishCommand::new()?.run() -} + let paths = crate::find_project_paths()?; + let config = crate::config::root_config()?; -impl PublishCommand { - pub fn new() -> Result { - let paths = crate::find_project_paths()?; - let config = crate::config::root_config()?; - - // Reset the build directory so we know the state of the project - crate::fs::delete_directory(&paths.build_directory_for_target(Mode::Prod, config.target))?; - - let mut built = crate::build::main( - Options { - root_target_support: TargetSupport::Enforced, - warnings_as_errors: false, - codegen: Codegen::All, - compile: Compile::All, - mode: Mode::Prod, - target: None, - no_print_progress: false, - }, - crate::build::download_dependencies(cli::Reporter::new())?, - )?; - let outputs = - build_documentation(&config, &mut built.root_package, DocContext::HexPublish)?; - let archive = crate::fs::create_tar_archive(outputs)?; - Ok(Self { config, archive }) - } -} + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let hex_config = hexpm::Config::new(); + let api_key = + crate::hex::HexAuthentication::new(&runtime, hex_config.clone()).get_or_create_api_key()?; -impl ApiKeyCommand for PublishCommand { - fn with_api_key( - &mut self, - handle: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()> { - let start = Instant::now(); - cli::print_publishing_documentation(); - handle.block_on(hex::publish_documentation( - &self.config.name, - &self.config.version, - std::mem::take(&mut self.archive), - api_key, - hex_config, - &HttpClient::new(), - ))?; - cli::print_published(start.elapsed()); - Ok(()) - } + // Reset the build directory so we know the state of the project + crate::fs::delete_directory(&paths.build_directory_for_target(Mode::Prod, config.target))?; + + let mut built = crate::build::main( + Options { + root_target_support: TargetSupport::Enforced, + warnings_as_errors: false, + codegen: Codegen::All, + compile: Compile::All, + mode: Mode::Prod, + target: None, + no_print_progress: false, + }, + crate::build::download_dependencies(cli::Reporter::new())?, + )?; + let outputs = build_documentation(&config, &mut built.root_package, DocContext::HexPublish)?; + let archive = crate::fs::create_tar_archive(outputs)?; + + let start = Instant::now(); + cli::print_publishing_documentation(); + runtime.block_on(hex::publish_documentation( + &config.name, + &config.version, + archive, + &api_key, + &hex_config, + &HttpClient::new(), + ))?; + cli::print_published(start.elapsed()); + Ok(()) } diff --git a/compiler-cli/src/fs.rs b/compiler-cli/src/fs.rs index fc7914fdb..805a4dfef 100644 --- a/compiler-cli/src/fs.rs +++ b/compiler-cli/src/fs.rs @@ -1,6 +1,6 @@ use glistix_core::{ build::{NullTelemetry, Target}, - error::{Error, FileIoAction, FileKind}, + error::{parse_os, Error, FileIoAction, FileKind, OS}, io::{ BeamCompiler, CommandExecutor, Content, DirEntry, FileSystemReader, FileSystemWriter, OutputFile, ReadDir, Stdio, WrappedReader, @@ -13,7 +13,6 @@ use glistix_core::{ }; use std::{ collections::HashSet, - ffi::OsStr, fmt::Debug, fs::File, io::{self, BufRead, BufReader, Write}, @@ -55,6 +54,32 @@ pub fn get_project_root(path: Utf8PathBuf) -> Result { }) } +pub fn get_os() -> OS { + parse_os(std::env::consts::OS, get_distro_str().as_str()) +} + +// try to extract the distro id from /etc/os-release +pub fn extract_distro_id(os_release: String) -> String { + let distro = os_release.lines().find(|line| line.starts_with("ID=")); + if let Some(distro) = distro { + let id = distro.split('=').nth(1).unwrap_or("").replace("\"", ""); + return id; + } + "".to_string() +} + +pub fn get_distro_str() -> String { + let path = Utf8Path::new("/etc/os-release"); + if std::env::consts::OS != "linux" || !path.exists() { + return "other".to_string(); + } + let os_release = read(path); + match os_release { + Ok(os_release) => extract_distro_id(os_release), + Err(_) => "other".to_string(), + } +} + /// A `FileWriter` implementation that writes to the file system. #[derive(Debug, Clone)] pub struct ProjectIO { @@ -74,38 +99,6 @@ impl ProjectIO { } impl FileSystemReader for ProjectIO { - fn gleam_source_files(&self, dir: &Utf8Path) -> Vec { - if !dir.is_dir() { - return vec![]; - } - let dir = dir.to_path_buf(); - walkdir::WalkDir::new(dir) - .follow_links(true) - .into_iter() - .filter_map(Result::ok) - .filter(|e| e.file_type().is_file()) - .map(|d| d.into_path()) - .filter(move |d| d.extension() == Some(OsStr::new("gleam"))) - .map(|pb| Utf8PathBuf::from_path_buf(pb).expect("Non Utf-8 Path")) - .collect() - } - - fn gleam_cache_files(&self, dir: &Utf8Path) -> Vec { - if !dir.is_dir() { - return vec![]; - } - let dir = dir.to_path_buf(); - walkdir::WalkDir::new(dir) - .follow_links(true) - .into_iter() - .filter_map(Result::ok) - .filter(|e| e.file_type().is_file()) - .map(|d| d.into_path()) - .filter(|p| p.extension().and_then(OsStr::to_str) == Some("cache")) - .map(|pb| Utf8PathBuf::from_path_buf(pb).expect("Non Utf-8 Path")) - .collect() - } - fn read(&self, path: &Utf8Path) -> Result { read(path) } @@ -216,6 +209,7 @@ impl CommandExecutor for ProjectIO { Err(error) => Err(match error.kind() { io::ErrorKind::NotFound => Error::ShellProgramNotFound { program: program.to_string(), + os: get_os(), }, other => Error::ShellCommand { diff --git a/compiler-cli/src/fs/tests.rs b/compiler-cli/src/fs/tests.rs index e2ccc4851..45d24ea88 100644 --- a/compiler-cli/src/fs/tests.rs +++ b/compiler-cli/src/fs/tests.rs @@ -99,3 +99,47 @@ fn is_gleam_path_test() { Utf8Path::new("/some-prefix/") )); } + +#[test] +fn extract_distro_id_test() { + let os_release = " +PRETTY_NAME=\"Debian GNU/Linux 12 (bookworm)\" +NAME=\"Debian GNU/Linux\" +VERSION_ID=\"12\" +VERSION=\"12 (bookworm)\" +VERSION_CODENAME=bookworm +ID=debian +HOME_URL=\"https://www.debian.org/\" +"; + assert_eq!(super::extract_distro_id(os_release.to_string()), "debian"); + + let os_release = " +VERSION_CODENAME=jammy +ID=ubuntu +ID_LIKE=debian +HOME_URL=\"https://www.ubuntu.com/\" +"; + assert_eq!(super::extract_distro_id(os_release.to_string()), "ubuntu"); + + assert_eq!(super::extract_distro_id("".to_string()), ""); + assert_eq!(super::extract_distro_id("\n".to_string()), ""); + assert_eq!(super::extract_distro_id("ID=".to_string()), ""); + assert_eq!(super::extract_distro_id("ID= ".to_string()), " "); + assert_eq!( + super::extract_distro_id("ID= space test ".to_string()), + " space test " + ); + assert_eq!(super::extract_distro_id("id=ubuntu".to_string()), ""); + assert_eq!( + super::extract_distro_id("NAME=\"Debian\"\nID=debian".to_string()), + "debian" + ); + assert_eq!( + super::extract_distro_id("\n\nNAME=\n\n\nID=test123\n".to_string()), + "test123" + ); + assert_eq!( + super::extract_distro_id("\nID=\"id first\"\nID=another_id".to_string()), + "id first" + ); +} diff --git a/compiler-cli/src/hex.rs b/compiler-cli/src/hex.rs index 399acff0e..33abe45f6 100644 --- a/compiler-cli/src/hex.rs +++ b/compiler-cli/src/hex.rs @@ -1,204 +1,116 @@ +mod auth; + +use crate::{cli, http::HttpClient}; use glistix_core::{ hex::{self, RetirementReason}, io::HttpClient as _, Error, Result, }; -use crate::{cli, http::HttpClient}; - -const USER_PROMPT: &str = "https://hex.pm username"; -const USER_KEY: &str = "HEXPM_USER"; -const PASS_PROMPT: &str = "https://hex.pm password"; -const PASS_KEY: &str = "HEXPM_PASS"; -const API_KEY: &str = "HEXPM_API_KEY"; - -/// A helper trait that handles the provisioning and destruction of a Hex API key. -pub trait ApiKeyCommand { - fn with_api_key( - &mut self, - runtime: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()>; - - fn with_new_api_key( - &mut self, - runtime: &tokio::runtime::Runtime, - hex_config: &hexpm::Config, - ) -> Result<()> { - let hostname = crate::publish::get_hostname(); - let http = HttpClient::new(); +pub use auth::HexAuthentication; - // Get login creds from user - let username = std::env::var(USER_KEY).or_else(|_| cli::ask(USER_PROMPT))?; - let password = std::env::var(PASS_KEY).or_else(|_| cli::ask_password(PASS_PROMPT))?; - - // Get API key - let api_key = runtime.block_on(hex::create_api_key( - &hostname, &username, &password, hex_config, &http, - ))?; - - // Perform the API operation but don't exit early if it fails, we want to always - // remove the API key - let result = self.with_api_key(runtime.handle(), hex_config, &api_key); - - // Ensure to remove the API key - runtime.block_on(hex::remove_api_key(&hostname, hex_config, &api_key, &http))?; - - result - } - - fn run(&mut self) -> Result<()> { - let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); - let hex_config = hexpm::Config::new(); - - let api_key = std::env::var(API_KEY).unwrap_or_default().trim().to_owned(); - - if api_key.is_empty() { - self.with_new_api_key(&runtime, &hex_config) - } else { - self.with_api_key(runtime.handle(), &hex_config, &api_key) - } - } -} - -pub struct RetireCommand { +pub fn retire( package: String, version: String, reason: RetirementReason, message: Option, +) -> Result<()> { + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let config = hexpm::Config::new(); + let api_key = HexAuthentication::new(&runtime, config.clone()).get_or_create_api_key()?; + + runtime.block_on(hex::retire_release( + &package, + &version, + reason, + message.as_deref(), + &api_key, + &config, + &HttpClient::new(), + ))?; + cli::print_retired(&package, &version); + Ok(()) } -impl RetireCommand { - pub fn new( - package: String, - version: String, - reason: RetirementReason, - message: Option, - ) -> Self { - Self { - package, - version, - reason, - message, - } - } -} - -impl ApiKeyCommand for RetireCommand { - fn with_api_key( - &mut self, - handle: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()> { - handle.block_on(hex::retire_release( - &self.package, - &self.version, - self.reason, - self.message.as_deref(), - api_key, - hex_config, - &HttpClient::new(), - ))?; - cli::print_retired(&self.package, &self.version); - Ok(()) - } +pub fn unretire(package: String, version: String) -> Result<()> { + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let config = hexpm::Config::new(); + let api_key = HexAuthentication::new(&runtime, config.clone()).get_or_create_api_key()?; + + runtime.block_on(hex::unretire_release( + &package, + &version, + &api_key, + &config, + &HttpClient::new(), + ))?; + cli::print_unretired(&package, &version); + Ok(()) } -pub struct UnretireCommand { - package: String, - version: String, -} +pub fn revert(package: Option, version: Option) -> Result<()> { + let (package, version) = match (package, version) { + (Some(pkg), Some(ver)) => (pkg, ver), + (None, Some(ver)) => (crate::config::root_config()?.name.to_string(), ver), + (Some(pkg), None) => { + let query = format!("Which version of package {pkg} do you want to revert?"); + let ver = cli::ask(&query)?; + (pkg, ver) + } + (None, None) => { + // Only want to access root_config once rather than twice + let config = crate::config::root_config()?; + (config.name.to_string(), config.version.to_string()) + } + }; -impl UnretireCommand { - pub fn new(package: String, version: String) -> Self { - Self { package, version } + let question = format!("Do you wish to revert {package} version {version}?"); + if !cli::confirm(&question)? { + println!("Not reverting."); + return Ok(()); } -} -impl ApiKeyCommand for UnretireCommand { - fn with_api_key( - &mut self, - handle: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()> { - handle.block_on(hex::unretire_release( - &self.package, - &self.version, - api_key, - hex_config, - &HttpClient::new(), - ))?; - cli::print_unretired(&self.package, &self.version); - Ok(()) - } -} - -pub struct RevertCommand { - package: String, - version: String, -} + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let hex_config = hexpm::Config::new(); + let api_key = HexAuthentication::new(&runtime, hex_config.clone()).get_or_create_api_key()?; + let http = HttpClient::new(); -pub fn revertcommand(package: Option, version: Option) -> Result<()> { - RevertCommand::setup(package, version)?.run()?; + // Revert release from API + let request = hexpm::revert_release_request(&package, &version, &api_key, &hex_config) + .map_err(Error::hex)?; + let response = runtime.block_on(http.send(request))?; + hexpm::revert_release_response(response).map_err(Error::hex)?; + // Done! + println!("{package} {version} has been removed from Hex"); Ok(()) } -impl RevertCommand { - fn setup(package: Option, version: Option) -> Result { - let (package, version): (String, String) = match (package, version) { - (Some(pkg), Some(ver)) => (pkg, ver), - (None, Some(ver)) => (crate::config::root_config()?.name.to_string(), ver), - (Some(pkg), None) => { - let query = - "Which version of package ".to_string() + &pkg + " do you want to revert?"; - let ver = cli::ask(&query)?; - (pkg, ver) - } - (None, None) => { - // Only want to access root_config once rather than twice - let config = crate::config::root_config()?; - - (config.name.to_string(), config.version.to_string()) - } - }; - - let question = - "Do you wish to revert ".to_string() + &package + " version " + &version + "?"; - let should_revert = cli::confirm(&question)?; - if should_revert { - Ok(Self { version, package }) - } else { - println!("Not reverting."); - std::process::exit(0); +pub(crate) fn authenticate() -> Result<()> { + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let http = HttpClient::new(); + let config = hexpm::Config::new(); + let mut auth = HexAuthentication::new(&runtime, config.clone()); + let previous = auth.read_stored_api_key()?; + + if previous.is_some() { + let question = "You already have a local Hex API token. Would you like to replace it +with a new one?"; + if !cli::confirm(question)? { + return Ok(()); } } -} - -impl ApiKeyCommand for RevertCommand { - fn with_api_key( - &mut self, - handle: &tokio::runtime::Handle, - hex_config: &hexpm::Config, - api_key: &str, - ) -> Result<()> { - let http = HttpClient::new(); - // Revert release from API - let request = - hexpm::revert_release_request(&self.package, &self.version, api_key, hex_config) - .map_err(Error::hex)?; - let response = handle.block_on(http.send(request))?; - hexpm::revert_release_response(response).map_err(Error::hex)?; + let new_key = auth.create_and_store_api_key()?; - // Done! - println!( - "{} {} has been removed from Hex", - self.package, self.version - ); - Ok(()) + if let Some(previous) = previous { + println!("Deleting previous key `{}` from Hex", previous.name); + runtime.block_on(hex::remove_api_key( + &previous.name, + &config, + &new_key.unencrypted, + &http, + ))?; } + Ok(()) } diff --git a/compiler-cli/src/hex/auth.rs b/compiler-cli/src/hex/auth.rs new file mode 100644 index 000000000..3d63e8971 --- /dev/null +++ b/compiler-cli/src/hex/auth.rs @@ -0,0 +1,160 @@ +use crate::{cli, http::HttpClient}; +use glistix_core::{encryption, hex, paths::global_hexpm_credentials_path, Error, Result}; +use std::time::SystemTime; + +pub const USER_PROMPT: &str = "https://hex.pm username"; +pub const USER_ENV_NAME: &str = "HEXPM_USER"; +pub const PASS_PROMPT: &str = "https://hex.pm password"; +pub const LOCAL_PASS_PROMPT: &str = "Local password"; +pub const PASS_ENV_NAME: &str = "HEXPM_PASS"; +pub const API_ENV_NAME: &str = "HEXPM_API_KEY"; + +#[derive(Debug)] +pub struct EncryptedApiKey { + pub name: String, + pub encrypted: String, +} + +#[derive(Debug)] +pub struct UnencryptedApiKey { + pub unencrypted: String, +} + +pub struct HexAuthentication<'runtime> { + runtime: &'runtime tokio::runtime::Runtime, + http: HttpClient, + local_password: Option, + hex_config: hexpm::Config, +} + +impl<'runtime> HexAuthentication<'runtime> { + /// Reads the stored API key from disc, if it exists. + /// + pub fn new(runtime: &'runtime tokio::runtime::Runtime, hex_config: hexpm::Config) -> Self { + Self { + runtime, + http: HttpClient::new(), + local_password: None, + hex_config, + } + } + + /// Create a new API key, removing the previous one if it already exists. + /// + pub fn create_and_store_api_key(&mut self) -> Result { + let name = generate_api_key_name(); + let path = global_hexpm_credentials_path(); + + // Get login creds from user + let username = ask_username()?; + let password = ask_password()?; + + // Get API key + let future = hex::create_api_key(&name, &username, &password, &self.hex_config, &self.http); + let api_key = self.runtime.block_on(future)?; + + if self.local_password.is_none() { + println!( + " +Please enter a new unique password. This will be used to locally +encrypt your Hex API key. +" + ); + } + let password = self.ask_local_password()?; + let encrypted = encryption::encrypt_with_passphrase(api_key.as_bytes(), &password)?; + + crate::fs::write(&path, &format!("{name}\n{encrypted}"))?; + println!("Encrypted Hex API key written to {path}"); + + Ok(UnencryptedApiKey { + unencrypted: api_key, + }) + } + + fn ask_local_password(&mut self) -> Result { + if let Some(pw) = self.local_password.as_ref() { + return Ok(pw.clone()); + } + let pw = ask_local_password()?; + self.local_password = Some(pw.clone()); + Ok(pw) + } + + /// Get an API key from + /// 1. the HEXPM_API_KEY env var + /// 2. the file system (encrypted) + /// 3. the Hex API + pub fn get_or_create_api_key(&mut self) -> Result { + if let Some(key) = Self::read_env_api_key()? { + return Ok(key); + } + + if let Some(key) = self.read_and_decrypt_stored_api_key()? { + return Ok(key.unencrypted); + } + + Ok(self.create_and_store_api_key()?.unencrypted) + } + + fn read_env_api_key() -> Result> { + let api_key = std::env::var(API_ENV_NAME).unwrap_or_default(); + if api_key.trim().is_empty() { + Ok(None) + } else { + Ok(Some(api_key)) + } + } + + fn read_and_decrypt_stored_api_key(&mut self) -> Result> { + let Some(EncryptedApiKey { encrypted, .. }) = self.read_stored_api_key()? else { + return Ok(None); + }; + let password = self.ask_local_password()?; + let unencrypted = encryption::decrypt_with_passphrase(encrypted.as_bytes(), &password)?; + Ok(Some(UnencryptedApiKey { unencrypted })) + } + + pub fn read_stored_api_key(&self) -> Result> { + let path = global_hexpm_credentials_path(); + if !path.exists() { + return Ok(None); + } + let text = crate::fs::read(&path)?; + let mut chunks = text.splitn(2, '\n'); + let Some(name) = chunks.next() else { + return Ok(None); + }; + let Some(encrypted) = chunks.next() else { + return Ok(None); + }; + Ok(Some(EncryptedApiKey { + name: name.to_string(), + encrypted: encrypted.to_string(), + })) + } +} + +fn ask_local_password() -> std::result::Result { + std::env::var(PASS_ENV_NAME).or_else(|_| cli::ask_password(LOCAL_PASS_PROMPT)) +} + +fn ask_password() -> std::result::Result { + std::env::var(PASS_ENV_NAME).or_else(|_| cli::ask_password(PASS_PROMPT)) +} + +fn ask_username() -> std::result::Result { + std::env::var(USER_ENV_NAME).or_else(|_| cli::ask(USER_PROMPT)) +} + +pub fn generate_api_key_name() -> String { + let timestamp = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .expect("This function must only be called after January 1, 1970. Sorry time traveller!") + .as_secs(); + let name = hostname::get() + .expect("Looking up hostname") + .to_string_lossy() + .to_string(); + format!("{name}-{timestamp}") +} diff --git a/compiler-cli/src/lsp.rs b/compiler-cli/src/lsp.rs index 2158d6d47..2cc401f27 100644 --- a/compiler-cli/src/lsp.rs +++ b/compiler-cli/src/lsp.rs @@ -19,7 +19,11 @@ Many editors will automatically start the language server for you when you open a Gleam project. If yours does not you may need to look up how to configure your editor to use a language server. -You can exit this program by pressing ctrl+c. +If you are seeing this in the logs of your editor you can safely +ignore this message. + +If you have run `gleam lsp` yourself in your terminal then exit +this program by pressing ctrl+c. " ); diff --git a/compiler-cli/src/main.rs b/compiler-cli/src/main.rs index 5967bff6f..b8dc8ce30 100644 --- a/compiler-cli/src/main.rs +++ b/compiler-cli/src/main.rs @@ -83,7 +83,6 @@ use glistix_core::{ paths::ProjectPaths, version::COMPILER_VERSION, }; -use hex::ApiKeyCommand as _; use std::str::FromStr; use camino::Utf8PathBuf; @@ -341,7 +340,7 @@ pub struct CompilePackage { /// This likely wants to be a `.mjs` file as NodeJS does not permit /// importing of other JavaScript file extensions. /// - #[arg(long = "javascript-prelude")] + #[arg(verbatim_doc_comment, long = "javascript-prelude")] javascript_prelude: Option, /// The location of the Nix prelude module, relative to the `out` @@ -407,6 +406,7 @@ enum Hex { /// - HEXPM_USER: (optional) The Hex username to authenticate with. /// - HEXPM_PASS: (optional) The Hex password to authenticate with. /// - HEXPM_API_KEY: (optional) A Hex API key to use instead of authenticating. + #[command(verbatim_doc_comment)] Revert { #[arg(long)] package: Option, @@ -414,6 +414,9 @@ enum Hex { #[arg(long)] version: Option, }, + + /// Authenticate with Hex + Authenticate, } #[derive(Subcommand, Debug)] @@ -493,6 +496,8 @@ fn main() { Command::Deps(Dependencies::Update(options)) => dependencies::update(options.packages), + Command::Hex(Hex::Authenticate) => hex::authenticate(), + Command::New(options) => new::create(options, COMPILER_VERSION), Command::Shell => shell::command(), @@ -529,13 +534,11 @@ fn main() { version, reason, message, - }) => hex::RetireCommand::new(package, version, reason, message).run(), + }) => hex::retire(package, version, reason, message), - Command::Hex(Hex::Unretire { package, version }) => { - hex::UnretireCommand::new(package, version).run() - } + Command::Hex(Hex::Unretire { package, version }) => hex::unretire(package, version), - Command::Hex(Hex::Revert { package, version }) => hex::revertcommand(package, version), + Command::Hex(Hex::Revert { package, version }) => hex::revert(package, version), Command::Add { packages, dev } => add::command(packages, dev), diff --git a/compiler-cli/src/new.rs b/compiler-cli/src/new.rs index fef8e2253..d8940762b 100644 --- a/compiler-cli/src/new.rs +++ b/compiler-cli/src/new.rs @@ -15,14 +15,14 @@ mod tests; use crate::{fs::get_current_directory, NewOptions}; -const GLEAM_STDLIB_REQUIREMENT: &str = ">= 0.34.0 and < 2.0.0"; +const GLEAM_STDLIB_REQUIREMENT: &str = ">= 0.44.0 and < 2.0.0"; const GLEEUNIT_REQUIREMENT: &str = ">= 1.0.0 and < 2.0.0"; #[allow(dead_code)] const ERLANG_OTP_VERSION: &str = "27.1.2"; #[allow(dead_code)] const REBAR3_VERSION: &str = "3"; #[allow(dead_code)] -const ELIXIR_VERSION: &str = "1.15.4"; +const ELIXIR_VERSION: &str = "1"; const GLISTIX_STDLIB_URL: &str = "https://github.com/glistix/stdlib"; diff --git a/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_default_template@gleam.toml.snap b/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_default_template@gleam.toml.snap index 9e43a7b99..edf9e8b37 100644 --- a/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_default_template@gleam.toml.snap +++ b/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_default_template@gleam.toml.snap @@ -1,6 +1,7 @@ --- source: compiler-cli/src/new/tests.rs -expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\")).unwrap()" +assertion_line: 56 +expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\"),).unwrap()" --- name = "my_project" version = "1.0.0" @@ -17,7 +18,7 @@ version = "1.0.0" # https://gleam.run/writing-gleam/gleam-toml/. [dependencies] -gleam_stdlib = ">= 0.34.0 and < 2.0.0" +gleam_stdlib = ">= 0.44.0 and < 2.0.0" [dev-dependencies] gleeunit = ">= 1.0.0 and < 2.0.0" diff --git a/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_javascript_template@gleam.toml.snap b/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_javascript_template@gleam.toml.snap index ab0f37de9..e9bfeeba8 100644 --- a/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_javascript_template@gleam.toml.snap +++ b/compiler-cli/src/new/snapshots/gleam__new__tests__new_with_javascript_template@gleam.toml.snap @@ -1,6 +1,7 @@ --- source: compiler-cli/src/new/tests.rs -expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\")).unwrap()" +assertion_line: 84 +expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\"),).unwrap()" --- name = "my_project" version = "1.0.0" @@ -18,7 +19,7 @@ target = "javascript" # https://gleam.run/writing-gleam/gleam-toml/. [dependencies] -gleam_stdlib = ">= 0.34.0 and < 2.0.0" +gleam_stdlib = ">= 0.44.0 and < 2.0.0" [dev-dependencies] gleeunit = ">= 1.0.0 and < 2.0.0" diff --git a/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_default_template@gleam.toml.snap b/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_default_template@gleam.toml.snap index 8c5fe8fcc..3c4dc6e87 100644 --- a/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_default_template@gleam.toml.snap +++ b/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_default_template@gleam.toml.snap @@ -1,7 +1,6 @@ --- source: compiler-cli/src/new/tests.rs expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\"),).unwrap()" -snapshot_kind: text --- name = "my_project" version = "1.0.0" @@ -45,4 +44,4 @@ local-overrides = ["gleam_stdlib"] # this feature, as it is mostly a temporary workaround while Gleam doesn't have # a proper dependency patching system. [glistix.preview.hex-patch] -gleam_stdlib = ">= 0.34.0 and < 2.0.0" +gleam_stdlib = ">= 0.44.0 and < 2.0.0" diff --git a/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_javascript_template@gleam.toml.snap b/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_javascript_template@gleam.toml.snap index c529dae5c..b05f5b921 100644 --- a/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_javascript_template@gleam.toml.snap +++ b/compiler-cli/src/new/snapshots/glistix__new__tests__new_with_javascript_template@gleam.toml.snap @@ -1,7 +1,6 @@ --- source: compiler-cli/src/new/tests.rs expression: "crate::fs::read(Utf8PathBuf::from_path_buf(file_path.to_path_buf()).expect(\"Non Utf8 Path\"),).unwrap()" -snapshot_kind: text --- name = "my_project" version = "1.0.0" @@ -45,4 +44,4 @@ local-overrides = ["gleam_stdlib"] # this feature, as it is mostly a temporary workaround while Gleam doesn't have # a proper dependency patching system. [glistix.preview.hex-patch] -gleam_stdlib = ">= 0.34.0 and < 2.0.0" +gleam_stdlib = ">= 0.44.0 and < 2.0.0" diff --git a/compiler-cli/src/publish.rs b/compiler-cli/src/publish.rs index 09e6971e6..9070d02f2 100644 --- a/compiler-cli/src/publish.rs +++ b/compiler-cli/src/publish.rs @@ -5,7 +5,7 @@ use glistix_core::{ build::{Codegen, Compile, Mode, Options, Package, Target}, config::{PackageConfig, SpdxLicense}, docs::DocContext, - error::SmallVersion, + error::{wrap, SmallVersion}, hex, paths::{self, ProjectPaths}, requirement::Requirement, @@ -16,81 +16,106 @@ use itertools::Itertools; use sha2::Digest; use std::{io::Write, path::PathBuf, time::Instant}; -use crate::{build, cli, docs, fs, hex::ApiKeyCommand, http::HttpClient}; +use crate::{build, cli, docs, fs, http::HttpClient}; -pub fn command(replace: bool, yes: bool) -> Result<()> { - let command = PublishCommand::setup(replace, yes)?; +pub fn command(replace: bool, i_am_sure: bool) -> Result<()> { + let paths = crate::find_project_paths()?; + let mut config = crate::config::root_config()?; - if let Some(mut command) = command { - command.run()?; - } - Ok(()) -} - -pub struct PublishCommand { - config: PackageConfig, - package_tarball: Vec, - docs_tarball: Vec, - replace: bool, -} + let should_publish = check_for_gleam_prefix(&config)? + && check_for_version_zero(&config)? + && check_repo_url(&config, i_am_sure)?; -impl PublishCommand { - pub fn setup(replace: bool, i_am_sure: bool) -> Result> { - let paths = crate::find_project_paths()?; - let mut config = crate::config::root_config()?; - - let should_publish = check_for_gleam_prefix(&config, i_am_sure)? - && check_for_version_zero(&config, i_am_sure)? - && check_repo_url(&config, i_am_sure)?; + if !should_publish { + println!("Not publishing."); + return Ok(()); + } - if !should_publish { - println!("Not publishing."); - std::process::exit(0); + let Tarball { + mut compile_result, + data: package_tarball, + src_files_added, + generated_files_added, + } = do_build_hex_tarball(&paths, &mut config)?; + + check_for_name_squatting(&compile_result)?; + check_for_multiple_top_level_modules(&compile_result, i_am_sure)?; + + // Build HTML documentation + let docs_tarball = fs::create_tar_archive(docs::build_documentation( + &config, + &mut compile_result, + DocContext::HexPublish, + )?)?; + + // Ask user if this is correct + if !generated_files_added.is_empty() { + println!("\nGenerated files:"); + for file in generated_files_added.iter().sorted() { + println!(" - {}", file.0); } + } + println!("\nSource files:"); + for file in src_files_added.iter().sorted() { + println!(" - {file}"); + } + println!("\nName: {}", config.name); + println!("Version: {}", config.version); - let Tarball { - mut compile_result, - data: package_tarball, - src_files_added, - generated_files_added, - } = do_build_hex_tarball(&paths, &mut config)?; - - check_for_name_squatting(&compile_result)?; - - // Build HTML documentation - let docs_tarball = fs::create_tar_archive(docs::build_documentation( - &config, - &mut compile_result, - DocContext::HexPublish, - )?)?; - - // Ask user if this is correct - if !generated_files_added.is_empty() { - println!("\nGenerated files:"); - for file in generated_files_added.iter().sorted() { - println!(" - {}", file.0); - } - } - println!("\nSource files:"); - for file in src_files_added.iter().sorted() { - println!(" - {file}"); - } - println!("\nName: {}", config.name); - println!("Version: {}", config.version); + let should_publish = i_am_sure || cli::confirm("\nDo you wish to publish this package?")?; + if !should_publish { + println!("Not publishing."); + return Ok(()); + } - let should_publish = i_am_sure || cli::confirm("\nDo you wish to publish this package?")?; - if !should_publish { - println!("Not publishing."); - std::process::exit(0); - } + let runtime = tokio::runtime::Runtime::new().expect("Unable to start Tokio async runtime"); + let hex_config = hexpm::Config::new(); + let api_key = + crate::hex::HexAuthentication::new(&runtime, hex_config.clone()).get_or_create_api_key()?; + let start = Instant::now(); + cli::print_publishing(&config.name, &config.version); + + runtime.block_on(hex::publish_package( + package_tarball, + config.version.to_string(), + &api_key, + &hex_config, + replace, + &HttpClient::new(), + ))?; + + cli::print_publishing_documentation(); + runtime.block_on(hex::publish_documentation( + &config.name, + &config.version, + docs_tarball, + &api_key, + &hex_config, + &HttpClient::new(), + ))?; + cli::print_published(start.elapsed()); + println!( + "\nView your package at https://hex.pm/packages/{}", + &config.name + ); - Ok(Some(Self { - config, - docs_tarball, - package_tarball, - replace, - })) + // Prompt the user to make a git tag if they have not. + let has_repo = config.repository.url().is_some(); + let git = PathBuf::from(".git"); + let version = format!("v{}", &config.version); + let git_tag = git.join("refs").join("tags").join(&version); + if has_repo && git.exists() && !git_tag.exists() { + println!( + " +Please push a git tag for this release so source code links in the +HTML documentation will work: + + git tag {version} + git push origin {version} +" + ) } + Ok(()) } fn check_for_name_squatting(package: &Package) -> Result<(), Error> { @@ -123,6 +148,50 @@ fn check_for_name_squatting(package: &Package) -> Result<(), Error> { Ok(()) } +fn check_for_multiple_top_level_modules(package: &Package, i_am_sure: bool) -> Result<(), Error> { + // Collect top-level module names + let mut top_level_module_names = package + .modules + .iter() + .filter_map(|module| module.name.split('/').next()) + .collect::>(); + + // Remove duplicates + top_level_module_names.sort_unstable(); + top_level_module_names.dedup(); + + // If more than one top-level module name is found, prompt for confirmation + if top_level_module_names.len() > 1 { + let text = wrap(&format!( + "Your package defines multiple top-level modules: {}. + +Defining multiple top-level modules can lead to namespace pollution \ +and potential conflicts for consumers. + +To fix this, move all your modules under a single top-level module of your choice. + +For example: + src/{1}.gleam + src/{1}/module1.gleam + src/{1}/module2.gleam", + top_level_module_names.join(", "), + package.config.name + )); + println!("{text}\n"); + + let should_publish = + i_am_sure || cli::confirm("\nDo you wish to continue publishing this package?")?; + println!(); + + if !should_publish { + println!("Not publishing."); + std::process::exit(0); + } + } + + Ok(()) +} + fn check_repo_url(config: &PackageConfig, i_am_sure: bool) -> Result { let Some(url) = config.repository.url() else { return Ok(true); @@ -147,7 +216,7 @@ valid, {} returned status {}", } /// Ask for confirmation if the package name if a v0.x.x version -fn check_for_version_zero(config: &PackageConfig, i_am_sure: bool) -> Result { +fn check_for_version_zero(config: &PackageConfig) -> Result { if config.version.major != 0 { return Ok(true); } @@ -158,15 +227,19 @@ fn check_for_version_zero(config: &PackageConfig, i_am_sure: bool) -> Result Result { +fn check_for_gleam_prefix(config: &PackageConfig) -> Result { if !config.name.starts_with("gleam_") || config.name.starts_with("gleam_community_") { return Ok(true); } @@ -174,68 +247,13 @@ fn check_for_gleam_prefix(config: &PackageConfig, i_am_sure: bool) -> Result Result<()> { - let start = Instant::now(); - cli::print_publishing(&self.config.name, &self.config.version); - - runtime.block_on(hex::publish_package( - std::mem::take(&mut self.package_tarball), - self.config.version.to_string(), - api_key, - hex_config, - self.replace, - &HttpClient::new(), - ))?; - - cli::print_publishing_documentation(); - runtime.block_on(hex::publish_documentation( - &self.config.name, - &self.config.version, - std::mem::take(&mut self.docs_tarball), - api_key, - hex_config, - &HttpClient::new(), - ))?; - cli::print_published(start.elapsed()); - println!( - "\nView your package at https://hex.pm/packages/{}", - &self.config.name - ); - - // Prompt the user to make a git tag if they have not. - let has_repo = self.config.repository.url().is_some(); - let git = PathBuf::from(".git"); - let version = format!("v{}", &self.config.version); - let git_tag = git.join("refs").join("tags").join(&version); - if has_repo && git.exists() && !git_tag.exists() { - println!( - " -Please push a git tag for this release so source code links in the -HTML documentation will work: - - git tag {version} - git push origin {version} -" - ) - } - Ok(()) - } -} - struct Tarball { compile_result: Package, data: Vec, @@ -785,13 +803,6 @@ fn prevent_publish_git_dependency() { ); } -pub fn get_hostname() -> String { - hostname::get() - .expect("Looking up hostname") - .to_string_lossy() - .to_string() -} - fn quotes(x: &str) -> String { format!(r#"<<"{x}">>"#) } diff --git a/compiler-cli/src/remove.rs b/compiler-cli/src/remove.rs index 68a4f4bbc..c5117c2d9 100644 --- a/compiler-cli/src/remove.rs +++ b/compiler-cli/src/remove.rs @@ -5,7 +5,7 @@ use glistix_core::{ Error, Result, }; -use crate::{cli, fs, UseManifest}; +use crate::{cli, fs}; pub fn command(packages: Vec) -> Result<()> { // Read gleam.toml so we can remove deps from it @@ -45,13 +45,9 @@ pub fn command(packages: Vec) -> Result<()> { // Write the updated config fs::write(Utf8Path::new("gleam.toml"), &toml.to_string())?; let paths = crate::find_project_paths()?; - _ = crate::dependencies::download( - &paths, - cli::Reporter::new(), - None, - Vec::new(), - UseManifest::Yes, - )?; + + _ = crate::dependencies::cleanup(&paths, cli::Reporter::new())?; + for package_to_remove in packages { cli::print_removed(&package_to_remove); } diff --git a/compiler-cli/templates/gleam@@compile.erl b/compiler-cli/templates/gleam@@compile.erl index 462297610..808eb0677 100644 --- a/compiler-cli/templates/gleam@@compile.erl +++ b/compiler-cli/templates/gleam@@compile.erl @@ -4,12 +4,15 @@ % TODO: Don't concurrently print warnings and errors % TODO: Some tests -main(_) -> compile_package_loop(). +main(_) -> + ok = io:setopts([binary, {encoding, utf8}]), + ok = configure_logging(), + compile_package_loop(). compile_package_loop() -> - case file:read_line(standard_io) of + case io:get_line("") of eof -> ok; - {ok, Line} -> + Line -> Chars = unicode:characters_to_list(Line), {ok, Tokens, _} = erl_scan:string(Chars), {ok, {Lib, Out, Modules}} = erl_parse:parse_term(Tokens), @@ -25,9 +28,8 @@ compile_package(Lib, Out, Modules) -> filename:extension(Module) =:= ".ex" end, {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), ok = filelib:ensure_dir([Out, $/]), + ok = add_lib_to_erlang_path(Lib), {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), {ElixirOk, _ElixirBeams} = case ErlangOk of true -> compile_elixir(ElixirModules, Out); @@ -166,6 +168,6 @@ configure_logging() -> log(Term) -> case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; + true -> io:fwrite("~p~n", [Term]), ok; false -> ok end. diff --git a/compiler-core/Cargo.toml b/compiler-core/Cargo.toml index f5ac34015..2cabf45a1 100644 --- a/compiler-core/Cargo.toml +++ b/compiler-core/Cargo.toml @@ -19,13 +19,13 @@ capnp = "0" # Template rendering askama = "0" # Markdown parsing -pulldown-cmark = { version = "0", default-features = false, features = ["html"] } +pulldown-cmark = { version = "0", default-features = false, features = [ + "html", +] } # Non-empty vectors vec1 = "1" # XDG directory locations dirs-next = "2" -# Helper for wrapping text onto lines based upon width -textwrap = { version = "=0.15.0", features = ["terminal_size"] } # SPDX license parsing spdx = "0" # Binary format de-serialization @@ -46,6 +46,10 @@ unicode-segmentation = "1.12.0" bimap = "0.6.3" # Parsing of arbitrary width int values num-bigint = "0.4.6" +num-traits = "0.2.19" +# Encryption +age = { version = "0.11", features = ["armor"] } + async-trait.workspace = true base16.workspace = true bytes.workspace = true diff --git a/compiler-core/generated/schema_capnp.rs b/compiler-core/generated/schema_capnp.rs index 49be45fb5..e7431e532 100644 --- a/compiler-core/generated/schema_capnp.rs +++ b/compiler-core/generated/schema_capnp.rs @@ -8,47 +8,62 @@ pub mod property { /* Value */ pub struct Owned { _phantom: ::core::marker::PhantomData } - impl <'a, Value> ::capnp::traits::Owned<'a> for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Reader = Reader<'a, Value>; type Builder = Builder<'a, Value>; } - impl <'a, Value> ::capnp::traits::OwnedStruct<'a> for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Reader = Reader<'a, Value>; type Builder = Builder<'a, Value>; } - impl ::capnp::traits::Pipelined for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Pipeline = Pipeline; } + impl ::capnp::introspect::Introspect for Owned where Value: ::capnp::traits::Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types:: }).into() } } + impl ::capnp::traits::Owned for Owned where Value: ::capnp::traits::Owned { type Reader<'a> = Reader<'a, Value>; type Builder<'a> = Builder<'a, Value>; } + impl ::capnp::traits::OwnedStruct for Owned where Value: ::capnp::traits::Owned { type Reader<'a> = Reader<'a, Value>; type Builder<'a> = Builder<'a, Value>; } + impl ::capnp::traits::Pipelined for Owned where Value: ::capnp::traits::Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] - pub struct Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + pub struct Reader<'a,Value> where Value: ::capnp::traits::Owned { reader: ::capnp::private::layout::StructReader<'a>, _phantom: ::core::marker::PhantomData } + impl ::core::marker::Copy for Reader<'_,Value> where Value: ::capnp::traits::Owned {} + impl ::core::clone::Clone for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn clone(&self) -> Self { *self } + } - impl <'a,Value> ::capnp::traits::HasTypeId for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl ::capnp::traits::HasTypeId for Reader<'_,Value> where Value: ::capnp::traits::Owned { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,Value> ::capnp::traits::FromStructReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,Value> { - Reader { reader, _phantom: ::core::marker::PhantomData, } + impl <'a,Value> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,Value> where Value: ::capnp::traits::Owned { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, _phantom: ::core::marker::PhantomData, } } } - impl <'a,Value> ::capnp::traits::FromPointerReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + impl <'a,Value> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> where Value: ::capnp::traits::Owned { + fn from(reader: Reader<'a,Value>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types::}))) } } - impl <'a,Value> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl ::core::fmt::Debug for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) + } + } + + impl <'a,Value> ::capnp::traits::FromPointerReader<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) + } + } + + impl <'a,Value> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> { self.reader } } - impl <'a,Value> ::capnp::traits::Imbue<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> ::capnp::traits::Imbue<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) { self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table)) } } - impl <'a,Value> Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> Reader<'a,Value> where Value: ::capnp::traits::Owned { pub fn reborrow(&self) -> Reader<'_,Value> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -63,7 +78,7 @@ pub mod property { /* Value */ !self.reader.get_pointer_field(0).is_null() } #[inline] - pub fn get_value(self) -> ::capnp::Result<>::Reader> { + pub fn get_value(self) -> ::capnp::Result<::Reader<'a>> { ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None) } #[inline] @@ -72,64 +87,68 @@ pub mod property { /* Value */ } } - pub struct Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + pub struct Builder<'a,Value> where Value: ::capnp::traits::Owned { builder: ::capnp::private::layout::StructBuilder<'a>, _phantom: ::core::marker::PhantomData } - impl <'a,Value> ::capnp::traits::HasStructSize for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl ::capnp::traits::HasStructSize for Builder<'_,Value> where Value: ::capnp::traits::Owned { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 }; } - impl <'a,Value> ::capnp::traits::HasTypeId for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl ::capnp::traits::HasTypeId for Builder<'_,Value> where Value: ::capnp::traits::Owned { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,Value> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, Value> { - Builder { builder, _phantom: ::core::marker::PhantomData, } + impl <'a,Value> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,Value> where Value: ::capnp::traits::Owned { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, _phantom: ::core::marker::PhantomData, } + } + } + + impl <'a,Value> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> where Value: ::capnp::traits::Owned { + fn from(builder: Builder<'a,Value>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types::}))) } } - impl <'a,Value> ::capnp::traits::ImbueMut<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> ::capnp::traits::ImbueMut<'a> for Builder<'a,Value> where Value: ::capnp::traits::Owned { fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) { self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table)) } } - impl <'a,Value> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,Value> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + impl <'a,Value> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,Value> where Value: ::capnp::traits::Owned { + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,Value> ::capnp::traits::SetPointerBuilder for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,Value>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl ::capnp::traits::SetterInput> for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } - impl <'a,Value> Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> Builder<'a,Value> where Value: ::capnp::traits::Owned { pub fn into_reader(self) -> Reader<'a,Value> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,Value> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,Value> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_key(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_key(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_key(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_key(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -137,27 +156,27 @@ pub mod property { /* Value */ } #[inline] pub fn has_key(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn get_value(self) -> ::capnp::Result<>::Builder> { + pub fn get_value(self) -> ::capnp::Result<::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn initn_value(self, length: u32) -> >::Builder { + pub fn initn_value(self, length: u32) -> ::Builder<'a> { ::capnp::any_pointer::Builder::new(self.builder.get_pointer_field(1)).initn_as(length) } #[inline] - pub fn set_value(&mut self, value: >::Reader) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_value(&mut self, value: impl ::capnp::traits::SetterInput) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] - pub fn init_value(self, ) -> >::Builder { + pub fn init_value(self, ) -> ::Builder<'a> { ::capnp::any_pointer::Builder::new(self.builder.get_pointer_field(1)).init_as() } #[inline] pub fn has_value(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } @@ -166,8 +185,8 @@ pub mod property { /* Value */ _phantom: ::core::marker::PhantomData } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, _phantom: ::core::marker::PhantomData, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, _phantom: ::core::marker::PhantomData, } } } impl Pipeline where Value: ::capnp::traits::Pipelined, ::Pipeline: ::capnp::capability::FromTypelessPipeline { @@ -176,8 +195,77 @@ pub mod property { /* Value */ } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 2 }; + pub static ENCODED_NODE: [::capnp::Word; 50] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(141, 0, 0, 0, 15, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 80, 114, 111), + ::capnp::word(112, 101, 114, 116, 121, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(107, 101, 121, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(18, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(18, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(86, 97, 108, 117, 101, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type where Value: ::capnp::traits::Owned { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type where Value: ::capnp::traits::Owned { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0xc89a_765d_c97e_1d6a; } } @@ -189,47 +277,62 @@ pub mod option { /* Value */ pub struct Owned { _phantom: ::core::marker::PhantomData } - impl <'a, Value> ::capnp::traits::Owned<'a> for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Reader = Reader<'a, Value>; type Builder = Builder<'a, Value>; } - impl <'a, Value> ::capnp::traits::OwnedStruct<'a> for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Reader = Reader<'a, Value>; type Builder = Builder<'a, Value>; } - impl ::capnp::traits::Pipelined for Owned where Value: for<'c> ::capnp::traits::Owned<'c> { type Pipeline = Pipeline; } + impl ::capnp::introspect::Introspect for Owned where Value: ::capnp::traits::Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types:: }).into() } } + impl ::capnp::traits::Owned for Owned where Value: ::capnp::traits::Owned { type Reader<'a> = Reader<'a, Value>; type Builder<'a> = Builder<'a, Value>; } + impl ::capnp::traits::OwnedStruct for Owned where Value: ::capnp::traits::Owned { type Reader<'a> = Reader<'a, Value>; type Builder<'a> = Builder<'a, Value>; } + impl ::capnp::traits::Pipelined for Owned where Value: ::capnp::traits::Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] - pub struct Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + pub struct Reader<'a,Value> where Value: ::capnp::traits::Owned { reader: ::capnp::private::layout::StructReader<'a>, _phantom: ::core::marker::PhantomData } + impl ::core::marker::Copy for Reader<'_,Value> where Value: ::capnp::traits::Owned {} + impl ::core::clone::Clone for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn clone(&self) -> Self { *self } + } - impl <'a,Value> ::capnp::traits::HasTypeId for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl ::capnp::traits::HasTypeId for Reader<'_,Value> where Value: ::capnp::traits::Owned { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,Value> ::capnp::traits::FromStructReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,Value> { - Reader { reader, _phantom: ::core::marker::PhantomData, } + impl <'a,Value> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,Value> where Value: ::capnp::traits::Owned { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, _phantom: ::core::marker::PhantomData, } } } - impl <'a,Value> ::capnp::traits::FromPointerReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + impl <'a,Value> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> where Value: ::capnp::traits::Owned { + fn from(reader: Reader<'a,Value>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types::}))) } } - impl <'a,Value> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl ::core::fmt::Debug for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) + } + } + + impl <'a,Value> ::capnp::traits::FromPointerReader<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) + } + } + + impl <'a,Value> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> { self.reader } } - impl <'a,Value> ::capnp::traits::Imbue<'a> for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> ::capnp::traits::Imbue<'a> for Reader<'a,Value> where Value: ::capnp::traits::Owned { fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) { self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table)) } } - impl <'a,Value> Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> Reader<'a,Value> where Value: ::capnp::traits::Owned { pub fn reborrow(&self) -> Reader<'_,Value> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -258,80 +361,84 @@ pub mod option { /* Value */ } } - pub struct Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + pub struct Builder<'a,Value> where Value: ::capnp::traits::Owned { builder: ::capnp::private::layout::StructBuilder<'a>, _phantom: ::core::marker::PhantomData } - impl <'a,Value> ::capnp::traits::HasStructSize for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl ::capnp::traits::HasStructSize for Builder<'_,Value> where Value: ::capnp::traits::Owned { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,Value> ::capnp::traits::HasTypeId for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl ::capnp::traits::HasTypeId for Builder<'_,Value> where Value: ::capnp::traits::Owned { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,Value> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, Value> { - Builder { builder, _phantom: ::core::marker::PhantomData, } + impl <'a,Value> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,Value> where Value: ::capnp::traits::Owned { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, _phantom: ::core::marker::PhantomData, } + } + } + + impl <'a,Value> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> where Value: ::capnp::traits::Owned { + fn from(builder: Builder<'a,Value>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::, annotation_types: _private::get_annotation_types::}))) } } - impl <'a,Value> ::capnp::traits::ImbueMut<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> ::capnp::traits::ImbueMut<'a> for Builder<'a,Value> where Value: ::capnp::traits::Owned { fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) { self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table)) } } - impl <'a,Value> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,Value> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + impl <'a,Value> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,Value> where Value: ::capnp::traits::Owned { + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,Value> ::capnp::traits::SetPointerBuilder for Reader<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,Value>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl ::capnp::traits::SetterInput> for Reader<'_,Value> where Value: ::capnp::traits::Owned { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } - impl <'a,Value> Builder<'a,Value> where Value: for<'c> ::capnp::traits::Owned<'c> { + impl <'a,Value> Builder<'a,Value> where Value: ::capnp::traits::Owned { pub fn into_reader(self) -> Reader<'a,Value> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,Value> { - Builder { .. *self } + Builder { builder: self.builder.reborrow(), ..*self } } pub fn reborrow_as_reader(&self) -> Reader<'_,Value> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_none(&mut self, _value: ()) { self.builder.set_data_field::(0, 0); } #[inline] - pub fn initn_some(self, length: u32) -> >::Builder { + pub fn initn_some(self, length: u32) -> ::Builder<'a> { self.builder.set_data_field::(0, 1); ::capnp::any_pointer::Builder::new(self.builder.get_pointer_field(0)).initn_as(length) } #[inline] - pub fn set_some(&mut self, value: >::Reader) -> ::capnp::Result<()> { + pub fn set_some(&mut self, value: impl ::capnp::traits::SetterInput) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 1); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] - pub fn init_some(self, ) -> >::Builder { + pub fn init_some(self, ) -> ::Builder<'a> { self.builder.set_data_field::(0, 1); ::capnp::any_pointer::Builder::new(self.builder.get_pointer_field(0)).init_as() } #[inline] pub fn has_some(&self) -> bool { if self.builder.get_data_field::(0) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -356,48 +463,132 @@ pub mod option { /* Value */ _phantom: ::core::marker::PhantomData } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, _phantom: ::core::marker::PhantomData, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, _phantom: ::core::marker::PhantomData, } } } impl Pipeline where Value: ::capnp::traits::Pipelined, ::Pipeline: ::capnp::capability::FromTypelessPipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 50] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 2, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 162, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(141, 0, 0, 0, 15, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 79, 112, 116), + ::capnp::word(105, 111, 110, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 111, 110, 101, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 111, 109, 101, 0, 0, 0, 0), + ::capnp::word(18, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(18, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(86, 97, 108, 117, 101, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type where Value: ::capnp::traits::Owned { + match index { + 0 => <() as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type where Value: ::capnp::traits::Owned { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0xeedd_8aba_d955_cbfd; } pub enum Which { None(()), Some(A0), } - pub type WhichReader<'a,Value> = Which<::capnp::Result<>::Reader>>; - pub type WhichBuilder<'a,Value> = Which<::capnp::Result<>::Builder>>; + pub type WhichReader<'a,Value> = Which<::capnp::Result<::Reader<'a>>>; + pub type WhichBuilder<'a,Value> = Which<::capnp::Result<::Builder<'a>>>; } pub mod module { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -415,7 +606,7 @@ pub mod module { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -500,17 +691,21 @@ pub mod module { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -521,39 +716,39 @@ pub mod module { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -561,15 +756,15 @@ pub mod module { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_types(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_types(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_types(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_types(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -577,15 +772,15 @@ pub mod module { } #[inline] pub fn has_types(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_values(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_values(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + pub fn set_values(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_values(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -593,15 +788,15 @@ pub mod module { } #[inline] pub fn has_values(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_accessors(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None) } #[inline] - pub fn set_accessors(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + pub fn set_accessors(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_accessors(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -609,15 +804,15 @@ pub mod module { } #[inline] pub fn has_accessors(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_package(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None) } #[inline] - pub fn set_package(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(4).set_text(value); + pub fn set_package(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap() } #[inline] pub fn init_package(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -625,15 +820,15 @@ pub mod module { } #[inline] pub fn has_package(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } #[inline] pub fn get_types_constructors(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(5), ::core::option::Option::None) } #[inline] - pub fn set_types_constructors(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(5), value, false) + pub fn set_types_constructors(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false) } #[inline] pub fn init_types_constructors(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -641,7 +836,7 @@ pub mod module { } #[inline] pub fn has_types_constructors(&self) -> bool { - !self.builder.get_pointer_field(5).is_null() + !self.builder.is_pointer_field_null(5) } #[inline] pub fn get_line_numbers(self) -> ::capnp::Result> { @@ -649,7 +844,7 @@ pub mod module { } #[inline] pub fn set_line_numbers(&mut self, value: crate::schema_capnp::line_numbers::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(6), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false) } #[inline] pub fn init_line_numbers(self, ) -> crate::schema_capnp::line_numbers::Builder<'a> { @@ -657,15 +852,15 @@ pub mod module { } #[inline] pub fn has_line_numbers(&self) -> bool { - !self.builder.get_pointer_field(6).is_null() + !self.builder.is_pointer_field_null(6) } #[inline] pub fn get_src_path(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(7), ::core::option::Option::None) } #[inline] - pub fn set_src_path(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(7).set_text(value); + pub fn set_src_path(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(7), value, false).unwrap() } #[inline] pub fn init_src_path(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -673,7 +868,7 @@ pub mod module { } #[inline] pub fn has_src_path(&self) -> bool { - !self.builder.get_pointer_field(7).is_null() + !self.builder.is_pointer_field_null(7) } #[inline] pub fn get_is_internal(self) -> bool { @@ -689,7 +884,7 @@ pub mod module { } #[inline] pub fn set_required_version(&mut self, value: crate::schema_capnp::version::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(8), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(8), value, false) } #[inline] pub fn init_required_version(self, ) -> crate::schema_capnp::version::Builder<'a> { @@ -697,14 +892,14 @@ pub mod module { } #[inline] pub fn has_required_version(&self) -> bool { - !self.builder.get_pointer_field(8).is_null() + !self.builder.is_pointer_field_null(8) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -716,8 +911,272 @@ pub mod module { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 9 }; + pub static ENCODED_NODE: [::capnp::Word; 237] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(129, 5, 219, 80, 68, 149, 82, 154), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(9, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 162, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 55, 2, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 77, 111, 100), + ::capnp::word(117, 108, 101, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(9, 1, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(4, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(84, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(81, 1, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(76, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(152, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(149, 1, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(148, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(224, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(221, 1, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(216, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(228, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 0, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(225, 1, 0, 0, 146, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(228, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 0, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 2, 0, 0, 98, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(56, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(7, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(53, 2, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(48, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(60, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(57, 2, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(56, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(68, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(9, 0, 0, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(65, 2, 0, 0, 130, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 115, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(122, 109, 11, 224, 98, 109, 251, 177), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 108, 117, 101, 115, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(28, 5, 251, 168, 241, 216, 198, 212), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 99, 99, 101, 115, 115, 111, 114), + ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(143, 103, 68, 141, 152, 59, 35, 132), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 99, 107, 97, 103, 101, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 115, 67, 111, 110), + ::capnp::word(115, 116, 114, 117, 99, 116, 111, 114), + ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(242, 117, 25, 190, 73, 132, 187, 199), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 105, 110, 101, 78, 117, 109, 98), + ::capnp::word(101, 114, 115, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 33, 49, 62, 78, 11, 246, 235), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 114, 99, 80, 97, 116, 104, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 115, 73, 110, 116, 101, 114, 110), + ::capnp::word(97, 108, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(114, 101, 113, 117, 105, 114, 101, 100), + ::capnp::word(86, 101, 114, 115, 105, 111, 110, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(156, 250, 40, 69, 63, 108, 134, 252), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + 3 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + 4 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 5 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + 6 => ::introspect(), + 7 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 8 => ::introspect(), + 9 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7,8,9]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,8,6,0,4,9,7,1,5,2]; pub const TYPE_ID: u64 = 0x9a52_9544_50db_0581; } } @@ -725,26 +1184,41 @@ pub mod module { pub mod version { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -760,9 +1234,9 @@ pub mod version { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -783,17 +1257,21 @@ pub mod version { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 0 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -804,31 +1282,31 @@ pub mod version { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_major(self) -> u32 { @@ -858,15 +1336,97 @@ pub mod version { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 0 }; + pub static ENCODED_NODE: [::capnp::Word; 62] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(156, 250, 40, 69, 63, 108, 134, 252), + ::capnp::word(13, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 170, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 101, 114), + ::capnp::word(115, 105, 111, 110, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(80, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(77, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(84, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(109, 97, 106, 111, 114, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 105, 110, 111, 114, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 116, 99, 104, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1,2]; pub const TYPE_ID: u64 = 0xfc86_6c3f_4528_fa9c; } } @@ -874,26 +1434,41 @@ pub mod version { pub mod types_variant_constructors { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -911,7 +1486,7 @@ pub mod types_variant_constructors { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -936,17 +1511,21 @@ pub mod types_variant_constructors { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -957,39 +1536,39 @@ pub mod types_variant_constructors { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_variants(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_value_constructor::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_variants(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_value_constructor::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_variants(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_value_constructor::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_variants(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_value_constructor::Owned> { @@ -997,15 +1576,15 @@ pub mod types_variant_constructors { } #[inline] pub fn has_variants(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_type_parameters_ids(self) -> ::capnp::Result<::capnp::primitive_list::Builder<'a,u16>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_type_parameters_ids(&mut self, value: ::capnp::primitive_list::Reader<'a,u16>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_type_parameters_ids(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::primitive_list::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_type_parameters_ids(self, size: u32) -> ::capnp::primitive_list::Builder<'a,u16> { @@ -1013,21 +1592,100 @@ pub mod types_variant_constructors { } #[inline] pub fn has_type_parameters_ids(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 2 }; + pub static ENCODED_NODE: [::capnp::Word; 60] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(242, 117, 25, 190, 73, 132, 187, 199), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 50, 1, 0, 0), + ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 115, 86, 97, 114, 105, 97, 110), + ::capnp::word(116, 67, 111, 110, 115, 116, 114, 117), + ::capnp::word(99, 116, 111, 114, 115, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(65, 0, 0, 0, 146, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(96, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 114, 105, 97, 110, 116, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(219, 85, 99, 173, 224, 242, 6, 232), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 80, 97, 114, 97), + ::capnp::word(109, 101, 116, 101, 114, 115, 73, 100), + ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::primitive_list::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0xc7bb_8449_be19_75f2; } } @@ -1035,26 +1693,41 @@ pub mod types_variant_constructors { pub mod type_value_constructor { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1072,7 +1745,7 @@ pub mod type_value_constructor { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -1097,17 +1770,21 @@ pub mod type_value_constructor { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -1118,39 +1795,39 @@ pub mod type_value_constructor { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -1158,15 +1835,15 @@ pub mod type_value_constructor { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_parameters(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_value_constructor_parameter::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_value_constructor_parameter::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_value_constructor_parameter::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_value_constructor_parameter::Owned> { @@ -1174,21 +1851,94 @@ pub mod type_value_constructor { } #[inline] pub fn has_parameters(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 2 }; + pub static ENCODED_NODE: [::capnp::Word; 54] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(219, 85, 99, 173, 224, 242, 6, 232), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 18, 1, 0, 0), + ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 86, 97, 108, 117, 101, 67, 111), + ::capnp::word(110, 115, 116, 114, 117, 99, 116, 111), + ::capnp::word(114, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(72, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 114, 97, 109, 101, 116, 101), + ::capnp::word(114, 115, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(234, 83, 193, 19, 176, 48, 149, 161), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0xe806_f2e0_ad63_55db; } } @@ -1196,26 +1946,41 @@ pub mod type_value_constructor { pub mod type_value_constructor_parameter { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1233,7 +1998,7 @@ pub mod type_value_constructor_parameter { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -1250,17 +2015,21 @@ pub mod type_value_constructor_parameter { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -1271,31 +2040,31 @@ pub mod type_value_constructor_parameter { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -1303,7 +2072,7 @@ pub mod type_value_constructor_parameter { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1311,14 +2080,14 @@ pub mod type_value_constructor_parameter { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -1327,8 +2096,61 @@ pub mod type_value_constructor_parameter { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 35] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(234, 83, 193, 19, 176, 48, 149, 161), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 90, 1, 0, 0), + ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 86, 97, 108, 117, 101, 67, 111), + ::capnp::word(110, 115, 116, 114, 117, 99, 116, 111), + ::capnp::word(114, 80, 97, 114, 97, 109, 101, 116), + ::capnp::word(101, 114, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0xa195_30b0_13c1_53ea; } } @@ -1336,26 +2158,41 @@ pub mod type_value_constructor_parameter { pub mod type_constructor { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1373,7 +2210,7 @@ pub mod type_constructor { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -1438,17 +2275,21 @@ pub mod type_constructor { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 7 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -1459,31 +2300,31 @@ pub mod type_constructor { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -1491,7 +2332,7 @@ pub mod type_constructor { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1499,15 +2340,15 @@ pub mod type_constructor { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_parameters(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned> { @@ -1515,15 +2356,15 @@ pub mod type_constructor { } #[inline] pub fn has_parameters(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(2).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -1531,7 +2372,7 @@ pub mod type_constructor { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_publicity(self) -> ::capnp::Result> { @@ -1539,7 +2380,7 @@ pub mod type_constructor { } #[inline] pub fn set_publicity(&mut self, value: crate::schema_capnp::publicity::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_publicity(self, ) -> crate::schema_capnp::publicity::Builder<'a> { @@ -1547,15 +2388,15 @@ pub mod type_constructor { } #[inline] pub fn has_publicity(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_deprecated(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None) } #[inline] - pub fn set_deprecated(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(4).set_text(value); + pub fn set_deprecated(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap() } #[inline] pub fn init_deprecated(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -1563,7 +2404,7 @@ pub mod type_constructor { } #[inline] pub fn has_deprecated(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } #[inline] pub fn get_origin(self) -> ::capnp::Result> { @@ -1571,7 +2412,7 @@ pub mod type_constructor { } #[inline] pub fn set_origin(&mut self, value: crate::schema_capnp::src_span::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(5), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false) } #[inline] pub fn init_origin(self, ) -> crate::schema_capnp::src_span::Builder<'a> { @@ -1579,15 +2420,15 @@ pub mod type_constructor { } #[inline] pub fn has_origin(&self) -> bool { - !self.builder.get_pointer_field(5).is_null() + !self.builder.is_pointer_field_null(5) } #[inline] pub fn get_documentation(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(6), ::core::option::Option::None) } #[inline] - pub fn set_documentation(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(6).set_text(value); + pub fn set_documentation(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false).unwrap() } #[inline] pub fn init_documentation(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -1595,14 +2436,14 @@ pub mod type_constructor { } #[inline] pub fn has_documentation(&self) -> bool { - !self.builder.get_pointer_field(6).is_null() + !self.builder.is_pointer_field_null(6) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -1617,8 +2458,163 @@ pub mod type_constructor { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 7 }; + pub static ENCODED_NODE: [::capnp::Word; 131] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(122, 109, 11, 224, 98, 109, 251, 177), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(7, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 234, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 143, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 67, 111, 110, 115, 116, 114, 117), + ::capnp::word(99, 116, 111, 114, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(28, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(181, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(188, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(185, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(184, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(212, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(209, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(204, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(216, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(213, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(212, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(224, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(221, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(220, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(232, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 0, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(229, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(224, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(236, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 0, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(233, 0, 0, 0, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(232, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(244, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 114, 97, 109, 101, 116, 101), + ::capnp::word(114, 115, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 117, 98, 108, 105, 99, 105, 116), + ::capnp::word(121, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 28, 233, 33, 200, 211, 73, 197), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 101, 112, 114, 101, 99, 97, 116), + ::capnp::word(101, 100, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(111, 114, 105, 103, 105, 110, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 111, 99, 117, 109, 101, 110, 116), + ::capnp::word(97, 116, 105, 111, 110, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 3 => ::introspect(), + 4 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 5 => ::introspect(), + 6 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[4,6,2,5,1,3,0]; pub const TYPE_ID: u64 = 0xb1fb_6d62_e00b_6d7a; } } @@ -1626,26 +2622,41 @@ pub mod type_constructor { pub mod accessors_map { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1663,7 +2674,7 @@ pub mod accessors_map { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -1696,17 +2707,21 @@ pub mod accessors_map { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 3 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -1717,31 +2732,31 @@ pub mod accessors_map { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -1749,7 +2764,7 @@ pub mod accessors_map { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -1757,15 +2772,15 @@ pub mod accessors_map { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_shared_accessors(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_shared_accessors(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_shared_accessors(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_shared_accessors(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -1773,15 +2788,15 @@ pub mod accessors_map { } #[inline] pub fn has_shared_accessors(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_variant_specific_accessors(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::variant_specific_accessors::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_variant_specific_accessors(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::variant_specific_accessors::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + pub fn set_variant_specific_accessors(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::variant_specific_accessors::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_variant_specific_accessors(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::variant_specific_accessors::Owned> { @@ -1789,14 +2804,14 @@ pub mod accessors_map { } #[inline] pub fn has_variant_specific_accessors(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -1805,8 +2820,115 @@ pub mod accessors_map { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 3 }; + pub static ENCODED_NODE: [::capnp::Word; 87] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(143, 103, 68, 141, 152, 59, 35, 132), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(3, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 210, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 65, 99, 99), + ::capnp::word(101, 115, 115, 111, 114, 115, 77, 97), + ::capnp::word(112, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 0, 0, 0, 130, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(148, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(145, 0, 0, 0, 202, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(152, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(180, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 104, 97, 114, 101, 100, 65, 99), + ::capnp::word(99, 101, 115, 115, 111, 114, 115, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(158, 200, 86, 219, 173, 1, 90, 174), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 114, 105, 97, 110, 116, 83), + ::capnp::word(112, 101, 99, 105, 102, 105, 99, 65), + ::capnp::word(99, 99, 101, 115, 115, 111, 114, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 53, 175, 243, 170, 173, 34, 197), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0,2]; pub const TYPE_ID: u64 = 0x8423_3b98_8d44_678f; } } @@ -1814,26 +2936,41 @@ pub mod accessors_map { pub mod variant_specific_accessors { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1851,7 +2988,7 @@ pub mod variant_specific_accessors { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -1868,17 +3005,21 @@ pub mod variant_specific_accessors { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -1889,39 +3030,39 @@ pub mod variant_specific_accessors { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_accessors(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_accessors(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_accessors(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_accessors(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -1929,21 +3070,90 @@ pub mod variant_specific_accessors { } #[inline] pub fn has_accessors(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 51] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(25, 53, 175, 243, 170, 173, 34, 197), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 50, 1, 0, 0), + ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 83, 112, 101, 99), + ::capnp::word(105, 102, 105, 99, 65, 99, 99, 101), + ::capnp::word(115, 115, 111, 114, 115, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(88, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(97, 99, 99, 101, 115, 115, 111, 114), + ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(158, 200, 86, 219, 173, 1, 90, 174), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0xc522_adaa_f3af_3519; } } @@ -1951,26 +3161,41 @@ pub mod variant_specific_accessors { pub mod record_accessor { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -1988,7 +3213,7 @@ pub mod record_accessor { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2017,17 +3242,21 @@ pub mod record_accessor { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 2 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2038,31 +3267,31 @@ pub mod record_accessor { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -2070,7 +3299,7 @@ pub mod record_accessor { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -2078,7 +3307,7 @@ pub mod record_accessor { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_index(self) -> u16 { @@ -2093,8 +3322,8 @@ pub mod record_accessor { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_label(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + pub fn set_label(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap() } #[inline] pub fn init_label(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2102,14 +3331,14 @@ pub mod record_accessor { } #[inline] pub fn has_label(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -2118,37 +3347,384 @@ pub mod record_accessor { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 2 }; + pub static ENCODED_NODE: [::capnp::Word; 63] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(158, 200, 86, 219, 173, 1, 90, 174), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 226, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 82, 101, 99), + ::capnp::word(111, 114, 100, 65, 99, 99, 101, 115), + ::capnp::word(115, 111, 114, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(80, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(77, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(72, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(84, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 100, 101, 120, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 97, 98, 101, 108, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,2,0]; pub const TYPE_ID: u64 = 0xae5a_01ad_db56_c89e; } } +pub mod inferred_variant { + pub use self::Which::{Unknown,Inferred}; + + #[derive(Copy, Clone)] + pub struct Owned(()); + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } + + pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } + + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) + } + } + + impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) + } + } + + impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> { + fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> { + self.reader + } + } + + impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> { + fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) { + self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table)) + } + } + + impl <> Reader<'_,> { + pub fn reborrow(&self) -> Reader<'_,> { + Self { .. *self } + } + + pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { + self.reader.total_size() + } + #[inline] + pub fn which(self) -> ::core::result::Result { + match self.reader.get_data_field::(0) { + 0 => { + ::core::result::Result::Ok(Unknown( + () + )) + } + 1 => { + ::core::result::Result::Ok(Inferred( + self.reader.get_data_field::(1) + )) + } + x => ::core::result::Result::Err(::capnp::NotInSchema(x)) + } + } + } + + pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 }; + } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> { + fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) { + self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table)) + } + } + + impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() + } + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) + } + } + + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + } + + impl <'a,> Builder<'a,> { + pub fn into_reader(self) -> Reader<'a,> { + self.builder.into_reader().into() + } + pub fn reborrow(&mut self) -> Builder<'_,> { + Builder { builder: self.builder.reborrow() } + } + pub fn reborrow_as_reader(&self) -> Reader<'_,> { + self.builder.as_reader().into() + } + + pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { + self.builder.as_reader().total_size() + } + #[inline] + pub fn set_unknown(&mut self, _value: ()) { + self.builder.set_data_field::(0, 0); + } + #[inline] + pub fn set_inferred(&mut self, value: u16) { + self.builder.set_data_field::(0, 1); + self.builder.set_data_field::(1, value); + } + #[inline] + pub fn which(self) -> ::core::result::Result { + match self.builder.get_data_field::(0) { + 0 => { + ::core::result::Result::Ok(Unknown( + () + )) + } + 1 => { + ::core::result::Result::Ok(Inferred( + self.builder.get_data_field::(1) + )) + } + x => ::core::result::Result::Err(::capnp::NotInSchema(x)) + } + } + } + + pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } + impl ::capnp::capability::FromTypelessPipeline for Pipeline { + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } + } + } + impl Pipeline { + } + mod _private { + pub static ENCODED_NODE: [::capnp::Word; 49] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(153, 102, 38, 126, 162, 160, 201, 166), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 2, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 234, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 73, 110, 102), + ::capnp::word(101, 114, 114, 101, 100, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 254, 255, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(117, 110, 107, 110, 111, 119, 110, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 102, 101, 114, 114, 101, 100), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <() as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; + pub const TYPE_ID: u64 = 0xa6c9_a0a2_7e26_6699; + } + pub enum Which { + Unknown(()), + Inferred(u16), + } + pub type WhichReader = Which; + pub type WhichBuilder = Which; +} + pub mod type_ { pub use self::Which::{App,Fn,Var,Tuple}; #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -2166,7 +3742,7 @@ pub mod type_ { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2177,22 +3753,22 @@ pub mod type_ { match self.reader.get_data_field::(0) { 0 => { ::core::result::Result::Ok(App( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 1 => { ::core::result::Result::Ok(Fn( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 2 => { ::core::result::Result::Ok(Var( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 3 => { ::core::result::Result::Ok(Tuple( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -2201,17 +3777,21 @@ pub mod type_ { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2222,81 +3802,82 @@ pub mod type_ { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] - pub fn init_app(self, ) -> crate::schema_capnp::type_::app::Builder<'a> { + pub fn init_app(mut self, ) -> crate::schema_capnp::type_::app::Builder<'a> { self.builder.set_data_field::(0, 0); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); - self.builder.get_pointer_field(3).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); + self.builder.into() } #[inline] - pub fn init_fn(self, ) -> crate::schema_capnp::type_::fn_::Builder<'a> { + pub fn init_fn(mut self, ) -> crate::schema_capnp::type_::fn_::Builder<'a> { self.builder.set_data_field::(0, 1); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.into() } #[inline] pub fn init_var(self, ) -> crate::schema_capnp::type_::var::Builder<'a> { self.builder.set_data_field::(0, 2); self.builder.set_data_field::(1, 0u64); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() } #[inline] - pub fn init_tuple(self, ) -> crate::schema_capnp::type_::tuple::Builder<'a> { + pub fn init_tuple(mut self, ) -> crate::schema_capnp::type_::tuple::Builder<'a> { self.builder.set_data_field::(0, 3); - self.builder.get_pointer_field(0).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.into() } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { match self.builder.get_data_field::(0) { 0 => { ::core::result::Result::Ok(App( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 1 => { ::core::result::Result::Ok(Fn( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 2 => { ::core::result::Result::Ok(Var( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 3 => { ::core::result::Result::Ok(Tuple( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -2306,15 +3887,85 @@ pub mod type_ { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 49] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(13, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(5, 0, 7, 0, 0, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 146, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 231, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 148, 53, 107, 90, 14, 28, 212), + ::capnp::word(97, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(107, 183, 96, 119, 140, 121, 242, 130), + ::capnp::word(73, 0, 0, 0, 26, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(2, 0, 253, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(54, 132, 226, 31, 115, 14, 218, 204), + ::capnp::word(49, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(3, 0, 252, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(61, 216, 21, 128, 12, 226, 23, 140), + ::capnp::word(25, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 112, 112, 0, 0, 0, 0, 0), + ::capnp::word(102, 110, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 114, 0, 0, 0, 0, 0), + ::capnp::word(116, 117, 112, 108, 101, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => ::introspect(), + 3 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1,2,3]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1,3,2]; pub const TYPE_ID: u64 = 0x82f6_802e_4097_0700; } pub enum Which { @@ -2329,26 +3980,41 @@ pub mod type_ { pub mod app { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -2366,7 +4032,7 @@ pub mod type_ { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2404,20 +4070,32 @@ pub mod type_ { pub fn has_package(&self) -> bool { !self.reader.get_pointer_field(3).is_null() } + #[inline] + pub fn get_inferred_variant(self) -> ::capnp::Result> { + ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(4), ::core::option::Option::None) + } + #[inline] + pub fn has_inferred_variant(&self) -> bool { + !self.reader.get_pointer_field(4).is_null() + } } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2428,39 +4106,39 @@ pub mod type_ { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2468,15 +4146,15 @@ pub mod type_ { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2484,15 +4162,15 @@ pub mod type_ { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_parameters(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + pub fn set_parameters(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_parameters(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned> { @@ -2500,15 +4178,15 @@ pub mod type_ { } #[inline] pub fn has_parameters(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_package(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None) } #[inline] - pub fn set_package(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(3).set_text(value); + pub fn set_package(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false).unwrap() } #[inline] pub fn init_package(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -2516,21 +4194,159 @@ pub mod type_ { } #[inline] pub fn has_package(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) + } + #[inline] + pub fn get_inferred_variant(self) -> ::capnp::Result> { + ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None) + } + #[inline] + pub fn set_inferred_variant(&mut self, value: crate::schema_capnp::inferred_variant::Reader<'_>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false) + } + #[inline] + pub fn init_inferred_variant(self, ) -> crate::schema_capnp::inferred_variant::Builder<'a> { + ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(4), 0) + } + #[inline] + pub fn has_inferred_variant(&self) -> bool { + !self.builder.is_pointer_field_null(4) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { + pub fn get_inferred_variant(&self) -> crate::schema_capnp::inferred_variant::Pipeline { + ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(4)) + } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 97] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(112, 148, 53, 107, 90, 14, 28, 212), + ::capnp::word(18, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(5, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 31, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 46, 97, 112, 112, 0, 0, 0), + ::capnp::word(20, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(125, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(120, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(132, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(129, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(124, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(136, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(133, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(132, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(160, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(157, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(152, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(164, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(161, 0, 0, 0, 130, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(160, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(172, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 114, 97, 109, 101, 116, 101), + ::capnp::word(114, 115, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 97, 99, 107, 97, 103, 101, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 102, 101, 114, 114, 101, 100), + ::capnp::word(86, 97, 114, 105, 97, 110, 116, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(153, 102, 38, 126, 162, 160, 201, 166), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 3 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 4 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[4,1,0,3,2]; pub const TYPE_ID: u64 = 0xd41c_0e5a_6b35_9470; } } @@ -2538,26 +4354,41 @@ pub mod type_ { pub mod fn_ { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -2575,7 +4406,7 @@ pub mod type_ { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2600,17 +4431,21 @@ pub mod type_ { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2621,39 +4456,39 @@ pub mod type_ { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_arguments(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_arguments(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_arguments(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_arguments(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned> { @@ -2661,7 +4496,7 @@ pub mod type_ { } #[inline] pub fn has_arguments(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_return(self) -> ::capnp::Result> { @@ -2669,7 +4504,7 @@ pub mod type_ { } #[inline] pub fn set_return(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_return(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -2677,14 +4512,14 @@ pub mod type_ { } #[inline] pub fn has_return(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -2693,8 +4528,78 @@ pub mod type_ { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 51] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(107, 183, 96, 119, 140, 121, 242, 130), + ::capnp::word(18, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(5, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 170, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 46, 102, 110, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(65, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(60, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(72, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(97, 114, 103, 117, 109, 101, 110, 116), + ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(114, 101, 116, 117, 114, 110, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0x82f2_798c_7760_b76b; } } @@ -2702,26 +4607,41 @@ pub mod type_ { pub mod var { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -2737,9 +4657,9 @@ pub mod type_ { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2752,17 +4672,21 @@ pub mod type_ { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2773,31 +4697,31 @@ pub mod type_ { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_id(self) -> u64 { @@ -2811,15 +4735,64 @@ pub mod type_ { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 31] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(54, 132, 226, 31, 115, 14, 218, 204), + ::capnp::word(18, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(5, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 46, 118, 97, 114, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 26, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(105, 100, 0, 0, 0, 0, 0, 0), + ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0xccda_0e73_1fe2_8436; } } @@ -2827,26 +4800,41 @@ pub mod type_ { pub mod tuple { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -2864,7 +4852,7 @@ pub mod type_ { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -2881,17 +4869,21 @@ pub mod type_ { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 5 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -2902,39 +4894,39 @@ pub mod type_ { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_elements(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_elements(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_elements(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::type_::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_elements(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::type_::Owned> { @@ -2942,21 +4934,75 @@ pub mod type_ { } #[inline] pub fn has_elements(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 2, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 36] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(61, 216, 21, 128, 12, 226, 23, 140), + ::capnp::word(18, 0, 0, 0, 1, 0, 2, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(5, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 194, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 84, 121, 112), + ::capnp::word(101, 46, 116, 117, 112, 108, 101, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(40, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(101, 108, 101, 109, 101, 110, 116, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0x8c17_e20c_8015_d83d; } } @@ -2965,26 +5011,41 @@ pub mod type_ { pub mod value_constructor { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -3002,7 +5063,7 @@ pub mod value_constructor { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -3043,17 +5104,21 @@ pub mod value_constructor { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -3064,31 +5129,31 @@ pub mod value_constructor { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -3096,7 +5161,7 @@ pub mod value_constructor { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -3104,7 +5169,7 @@ pub mod value_constructor { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_variant(self) -> ::capnp::Result> { @@ -3112,7 +5177,7 @@ pub mod value_constructor { } #[inline] pub fn set_variant(&mut self, value: crate::schema_capnp::value_constructor_variant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_variant(self, ) -> crate::schema_capnp::value_constructor_variant::Builder<'a> { @@ -3120,7 +5185,7 @@ pub mod value_constructor { } #[inline] pub fn has_variant(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_publicity(self) -> ::capnp::Result> { @@ -3128,7 +5193,7 @@ pub mod value_constructor { } #[inline] pub fn set_publicity(&mut self, value: crate::schema_capnp::publicity::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_publicity(self, ) -> crate::schema_capnp::publicity::Builder<'a> { @@ -3136,15 +5201,15 @@ pub mod value_constructor { } #[inline] pub fn has_publicity(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_deprecated(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None) } #[inline] - pub fn set_deprecated(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(3).set_text(value); + pub fn set_deprecated(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false).unwrap() } #[inline] pub fn init_deprecated(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3152,14 +5217,14 @@ pub mod value_constructor { } #[inline] pub fn has_deprecated(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -3174,8 +5239,109 @@ pub mod value_constructor { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 80] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(28, 5, 251, 168, 241, 216, 198, 212), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(4, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 242, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 231, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 108), + ::capnp::word(117, 101, 67, 111, 110, 115, 116, 114), + ::capnp::word(117, 99, 116, 111, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(92, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(104, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(96, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(104, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(116, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(113, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(124, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 114, 105, 97, 110, 116, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(26, 168, 208, 43, 233, 121, 76, 225), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 117, 98, 108, 105, 99, 105, 116), + ::capnp::word(121, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 28, 233, 33, 200, 211, 73, 197), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 101, 112, 114, 101, 99, 97, 116), + ::capnp::word(101, 100, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => ::introspect(), + 3 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,2,0,1]; pub const TYPE_ID: u64 = 0xd4c6_d8f1_a8fb_051c; } } @@ -3185,26 +5351,41 @@ pub mod publicity { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -3222,7 +5403,7 @@ pub mod publicity { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -3257,17 +5438,21 @@ pub mod publicity { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -3278,31 +5463,31 @@ pub mod publicity { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_public(&mut self, _value: ()) { @@ -3315,7 +5500,7 @@ pub mod publicity { #[inline] pub fn set_internal(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::src_span::Owned>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 2); - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_internal(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::src_span::Owned> { @@ -3325,7 +5510,7 @@ pub mod publicity { #[inline] pub fn has_internal(&self) -> bool { if self.builder.get_data_field::(0) != 2 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -3352,15 +5537,110 @@ pub mod publicity { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 75] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(102, 28, 233, 33, 200, 211, 73, 197), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 3, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 186, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 80, 117, 98), + ::capnp::word(108, 105, 99, 105, 116, 121, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(80, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 253, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(77, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(76, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(136, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(112, 117, 98, 108, 105, 99, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(112, 114, 105, 118, 97, 116, 101, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 116, 101, 114, 110, 97, 108), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <() as ::capnp::introspect::Introspect>::introspect(), + 1 => <() as ::capnp::introspect::Introspect>::introspect(), + 2 => as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_NAME : &[u16] = &[2,1,0]; pub const TYPE_ID: u64 = 0xc549_d3c8_21e9_1c66; } pub enum Which { @@ -3375,26 +5655,41 @@ pub mod publicity { pub mod implementations { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -3410,9 +5705,9 @@ pub mod implementations { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -3449,17 +5744,21 @@ pub mod implementations { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -3470,31 +5769,31 @@ pub mod implementations { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_gleam(self) -> bool { @@ -3556,15 +5855,172 @@ pub mod implementations { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 0 }; + pub static ENCODED_NODE: [::capnp::Word; 133] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(223, 160, 58, 118, 252, 159, 29, 155), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 234, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 143, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 73, 109, 112), + ::capnp::word(108, 101, 109, 101, 110, 116, 97, 116), + ::capnp::word(105, 111, 110, 115, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(28, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(181, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(188, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(185, 0, 0, 0, 162, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(188, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(200, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(197, 0, 0, 0, 194, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(200, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(212, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(209, 0, 0, 0, 122, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(208, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(220, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(217, 0, 0, 0, 154, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(220, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(232, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 0, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(229, 0, 0, 0, 138, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(232, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(244, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 0, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(241, 0, 0, 0, 98, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(240, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(252, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(103, 108, 101, 97, 109, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 115, 101, 115, 69, 114, 108, 97), + ::capnp::word(110, 103, 69, 120, 116, 101, 114, 110), + ::capnp::word(97, 108, 115, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 115, 101, 115, 74, 97, 118, 97), + ::capnp::word(115, 99, 114, 105, 112, 116, 69, 120), + ::capnp::word(116, 101, 114, 110, 97, 108, 115, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 97, 110, 82, 117, 110, 79, 110), + ::capnp::word(69, 114, 108, 97, 110, 103, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 97, 110, 82, 117, 110, 79, 110), + ::capnp::word(74, 97, 118, 97, 115, 99, 114, 105), + ::capnp::word(112, 116, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 115, 101, 115, 78, 105, 120, 69), + ::capnp::word(120, 116, 101, 114, 110, 97, 108, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 97, 110, 82, 117, 110, 79, 110), + ::capnp::word(78, 105, 120, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => ::introspect(), + 3 => ::introspect(), + 4 => ::introspect(), + 5 => ::introspect(), + 6 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,4,6,0,1,2,5]; pub const TYPE_ID: u64 = 0x9b1d_9ffc_763a_a0df; } } @@ -3574,26 +6030,41 @@ pub mod value_constructor_variant { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -3611,7 +6082,7 @@ pub mod value_constructor_variant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -3622,17 +6093,17 @@ pub mod value_constructor_variant { match self.reader.get_data_field::(0) { 0 => { ::core::result::Result::Ok(ModuleConstant( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 1 => { ::core::result::Result::Ok(ModuleFn( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 2 => { ::core::result::Result::Ok(Record( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -3641,17 +6112,21 @@ pub mod value_constructor_variant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -3662,86 +6137,86 @@ pub mod value_constructor_variant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] - pub fn init_module_constant(self, ) -> crate::schema_capnp::value_constructor_variant::module_constant::Builder<'a> { + pub fn init_module_constant(mut self, ) -> crate::schema_capnp::value_constructor_variant::module_constant::Builder<'a> { self.builder.set_data_field::(0, 0); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); - self.builder.get_pointer_field(3).clear(); - self.builder.get_pointer_field(4).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); + self.builder.into() } #[inline] - pub fn init_module_fn(self, ) -> crate::schema_capnp::value_constructor_variant::module_fn::Builder<'a> { + pub fn init_module_fn(mut self, ) -> crate::schema_capnp::value_constructor_variant::module_fn::Builder<'a> { self.builder.set_data_field::(0, 1); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); self.builder.set_data_field::(1, 0u16); - self.builder.get_pointer_field(3).clear(); - self.builder.get_pointer_field(4).clear(); - self.builder.get_pointer_field(5).clear(); - self.builder.get_pointer_field(6).clear(); - self.builder.get_pointer_field(7).clear(); - self.builder.get_pointer_field(8).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); + self.builder.reborrow().get_pointer_field(5).clear(); + self.builder.reborrow().get_pointer_field(6).clear(); + self.builder.reborrow().get_pointer_field(7).clear(); + self.builder.reborrow().get_pointer_field(8).clear(); + self.builder.into() } #[inline] - pub fn init_record(self, ) -> crate::schema_capnp::value_constructor_variant::record::Builder<'a> { + pub fn init_record(mut self, ) -> crate::schema_capnp::value_constructor_variant::record::Builder<'a> { self.builder.set_data_field::(0, 2); - self.builder.get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); self.builder.set_data_field::(1, 0u16); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); - self.builder.get_pointer_field(3).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); self.builder.set_data_field::(2, 0u16); - self.builder.get_pointer_field(4).clear(); + self.builder.reborrow().get_pointer_field(4).clear(); self.builder.set_data_field::(3, 0u16); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { match self.builder.get_data_field::(0) { 0 => { ::core::result::Result::Ok(ModuleConstant( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 1 => { ::core::result::Result::Ok(ModuleFn( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 2 => { ::core::result::Result::Ok(Record( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -3751,15 +6226,80 @@ pub mod value_constructor_variant { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 9 }; + pub static ENCODED_NODE: [::capnp::Word; 45] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(26, 168, 208, 43, 233, 121, 76, 225), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(9, 0, 7, 0, 0, 0, 3, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 42, 1, 0, 0), + ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 108), + ::capnp::word(117, 101, 67, 111, 110, 115, 116, 114), + ::capnp::word(117, 99, 116, 111, 114, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(208, 251, 150, 129, 105, 157, 121, 149), + ::capnp::word(69, 0, 0, 0, 122, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(121, 55, 113, 152, 197, 21, 166, 174), + ::capnp::word(49, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(2, 0, 253, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(213, 61, 35, 233, 38, 21, 11, 240), + ::capnp::word(29, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 67, 111), + ::capnp::word(110, 115, 116, 97, 110, 116, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 70, 110), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(114, 101, 99, 111, 114, 100, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1,2]; pub const TYPE_ID: u64 = 0xe14c_79e9_2bd0_a81a; } pub enum Which { @@ -3773,26 +6313,41 @@ pub mod value_constructor_variant { pub mod module_constant { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -3810,7 +6365,7 @@ pub mod value_constructor_variant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -3859,17 +6414,21 @@ pub mod value_constructor_variant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -3880,31 +6439,31 @@ pub mod value_constructor_variant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_literal(self) -> ::capnp::Result> { @@ -3912,7 +6471,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_literal(&mut self, value: crate::schema_capnp::constant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_literal(self, ) -> crate::schema_capnp::constant::Builder<'a> { @@ -3920,7 +6479,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_literal(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_location(self) -> ::capnp::Result> { @@ -3928,7 +6487,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_location(&mut self, value: crate::schema_capnp::src_span::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_location(self, ) -> crate::schema_capnp::src_span::Builder<'a> { @@ -3936,15 +6495,15 @@ pub mod value_constructor_variant { } #[inline] pub fn has_location(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(2).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3952,15 +6511,15 @@ pub mod value_constructor_variant { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_documentation(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None) } #[inline] - pub fn set_documentation(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(3).set_text(value); + pub fn set_documentation(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false).unwrap() } #[inline] pub fn init_documentation(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -3968,7 +6527,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_documentation(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_implementations(self) -> ::capnp::Result> { @@ -3976,7 +6535,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_implementations(&mut self, value: crate::schema_capnp::implementations::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(4), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false) } #[inline] pub fn init_implementations(self, ) -> crate::schema_capnp::implementations::Builder<'a> { @@ -3984,14 +6543,14 @@ pub mod value_constructor_variant { } #[inline] pub fn has_implementations(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -4006,8 +6565,128 @@ pub mod value_constructor_variant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 9 }; + pub static ENCODED_NODE: [::capnp::Word; 98] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(208, 251, 150, 129, 105, 157, 121, 149), + ::capnp::word(37, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(26, 168, 208, 43, 233, 121, 76, 225), + ::capnp::word(9, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 162, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(37, 0, 0, 0, 31, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 108), + ::capnp::word(117, 101, 67, 111, 110, 115, 116, 114), + ::capnp::word(117, 99, 116, 111, 114, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 46, 109, 111, 100), + ::capnp::word(117, 108, 101, 67, 111, 110, 115, 116), + ::capnp::word(97, 110, 116, 0, 0, 0, 0, 0), + ::capnp::word(20, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(125, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(120, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(132, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(129, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(128, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(140, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(137, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(132, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(144, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 14, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(141, 0, 0, 0, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(140, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(152, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 19, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(149, 0, 0, 0, 130, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(148, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(160, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(108, 105, 116, 101, 114, 97, 108, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 111, 99, 97, 116, 105, 111, 110), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 111, 99, 117, 109, 101, 110, 116), + ::capnp::word(97, 116, 105, 111, 110, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 109, 112, 108, 101, 109, 101, 110), + ::capnp::word(116, 97, 116, 105, 111, 110, 115, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(223, 160, 58, 118, 252, 159, 29, 155), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + 2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 3 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 4 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,4,0,1,2]; pub const TYPE_ID: u64 = 0x9579_9d69_8196_fbd0; } } @@ -4015,26 +6694,41 @@ pub mod value_constructor_variant { pub mod module_fn { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -4052,7 +6746,7 @@ pub mod value_constructor_variant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -4137,17 +6831,21 @@ pub mod value_constructor_variant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -4158,39 +6856,39 @@ pub mod value_constructor_variant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4198,7 +6896,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_field_map(self) -> ::capnp::Result> { @@ -4206,7 +6904,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_field_map(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::field_map::Owned>) -> ::capnp::Result<()> { - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_field_map(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::field_map::Owned> { @@ -4214,15 +6912,15 @@ pub mod value_constructor_variant { } #[inline] pub fn has_field_map(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(2).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4230,7 +6928,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_arity(self) -> u16 { @@ -4246,7 +6944,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_location(&mut self, value: crate::schema_capnp::src_span::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_location(self, ) -> crate::schema_capnp::src_span::Builder<'a> { @@ -4254,15 +6952,15 @@ pub mod value_constructor_variant { } #[inline] pub fn has_location(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_documentation(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None) } #[inline] - pub fn set_documentation(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(4).set_text(value); + pub fn set_documentation(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap() } #[inline] pub fn init_documentation(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4270,7 +6968,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_documentation(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } #[inline] pub fn get_implementations(self) -> ::capnp::Result> { @@ -4278,7 +6976,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_implementations(&mut self, value: crate::schema_capnp::implementations::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(5), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(5), value, false) } #[inline] pub fn init_implementations(self, ) -> crate::schema_capnp::implementations::Builder<'a> { @@ -4286,7 +6984,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_implementations(&self) -> bool { - !self.builder.get_pointer_field(5).is_null() + !self.builder.is_pointer_field_null(5) } #[inline] pub fn get_external_erlang(self) -> ::capnp::Result> { @@ -4294,7 +6992,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_external_erlang(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::external::Owned>) -> ::capnp::Result<()> { - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(6), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(6), value, false) } #[inline] pub fn init_external_erlang(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::external::Owned> { @@ -4302,7 +7000,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_external_erlang(&self) -> bool { - !self.builder.get_pointer_field(6).is_null() + !self.builder.is_pointer_field_null(6) } #[inline] pub fn get_external_javascript(self) -> ::capnp::Result> { @@ -4310,7 +7008,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_external_javascript(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::external::Owned>) -> ::capnp::Result<()> { - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(7), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(7), value, false) } #[inline] pub fn init_external_javascript(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::external::Owned> { @@ -4318,7 +7016,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_external_javascript(&self) -> bool { - !self.builder.get_pointer_field(7).is_null() + !self.builder.is_pointer_field_null(7) } #[inline] pub fn get_external_nix(self) -> ::capnp::Result> { @@ -4326,7 +7024,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_external_nix(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::external::Owned>) -> ::capnp::Result<()> { - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(8), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(8), value, false) } #[inline] pub fn init_external_nix(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::external::Owned> { @@ -4334,14 +7032,14 @@ pub mod value_constructor_variant { } #[inline] pub fn has_external_nix(&self) -> bool { - !self.builder.get_pointer_field(8).is_null() + !self.builder.is_pointer_field_null(8) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -4365,8 +7063,260 @@ pub mod value_constructor_variant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 9 }; + pub static ENCODED_NODE: [::capnp::Word; 225] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(121, 55, 113, 152, 197, 21, 166, 174), + ::capnp::word(37, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(26, 168, 208, 43, 233, 121, 76, 225), + ::capnp::word(9, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 114, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 55, 2, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 108), + ::capnp::word(117, 101, 67, 111, 110, 115, 116, 114), + ::capnp::word(117, 99, 116, 111, 114, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 46, 109, 111, 100), + ::capnp::word(117, 108, 101, 70, 110, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(9, 1, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(4, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 1, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(72, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 1, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(80, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(77, 1, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(76, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(88, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 15, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(85, 1, 0, 0, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(84, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(96, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 0, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 18, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(93, 1, 0, 0, 130, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(92, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(104, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(7, 0, 0, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 20, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 1, 0, 0, 122, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(160, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 21, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(157, 1, 0, 0, 154, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(160, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(220, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(9, 0, 0, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 22, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(217, 1, 0, 0, 98, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(216, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 105, 101, 108, 100, 77, 97, 112), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 235, 12, 250, 24, 243, 166, 215), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 114, 105, 116, 121, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 111, 99, 97, 116, 105, 111, 110), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 111, 99, 117, 109, 101, 110, 116), + ::capnp::word(97, 116, 105, 111, 110, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 109, 112, 108, 101, 109, 101, 110), + ::capnp::word(116, 97, 116, 105, 111, 110, 115, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(223, 160, 58, 118, 252, 159, 29, 155), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 120, 116, 101, 114, 110, 97, 108), + ::capnp::word(69, 114, 108, 97, 110, 103, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(236, 212, 23, 222, 114, 58, 95, 198), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 120, 116, 101, 114, 110, 97, 108), + ::capnp::word(74, 97, 118, 97, 115, 99, 114, 105), + ::capnp::word(112, 116, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(236, 212, 23, 222, 114, 58, 95, 198), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 120, 116, 101, 114, 110, 97, 108), + ::capnp::word(78, 105, 120, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(236, 212, 23, 222, 114, 58, 95, 198), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 3 => ::introspect(), + 4 => ::introspect(), + 5 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 6 => ::introspect(), + 7 => as ::capnp::introspect::Introspect>::introspect(), + 8 => as ::capnp::introspect::Introspect>::introspect(), + 9 => as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7,8,9]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,5,7,8,9,1,6,4,2,0]; pub const TYPE_ID: u64 = 0xaea6_15c5_9871_3779; } } @@ -4374,26 +7324,41 @@ pub mod value_constructor_variant { pub mod record { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -4411,7 +7376,7 @@ pub mod value_constructor_variant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -4472,17 +7437,21 @@ pub mod value_constructor_variant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 9 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -4493,39 +7462,39 @@ pub mod value_constructor_variant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4533,7 +7502,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_arity(self) -> u16 { @@ -4549,7 +7518,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_field_map(&mut self, value: crate::schema_capnp::option::Reader<'_,crate::schema_capnp::field_map::Owned>) -> ::capnp::Result<()> { - as ::capnp::traits::SetPointerBuilder>::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_field_map(self, ) -> crate::schema_capnp::option::Builder<'a,crate::schema_capnp::field_map::Owned> { @@ -4557,7 +7526,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_field_map(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_location(self) -> ::capnp::Result> { @@ -4565,7 +7534,7 @@ pub mod value_constructor_variant { } #[inline] pub fn set_location(&mut self, value: crate::schema_capnp::src_span::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_location(self, ) -> crate::schema_capnp::src_span::Builder<'a> { @@ -4573,15 +7542,15 @@ pub mod value_constructor_variant { } #[inline] pub fn has_location(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(3), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(3).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4589,7 +7558,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } #[inline] pub fn get_constructors_count(self) -> u16 { @@ -4604,8 +7573,8 @@ pub mod value_constructor_variant { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(4), ::core::option::Option::None) } #[inline] - pub fn set_documentation(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(4).set_text(value); + pub fn set_documentation(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(4), value, false).unwrap() } #[inline] pub fn init_documentation(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4613,7 +7582,7 @@ pub mod value_constructor_variant { } #[inline] pub fn has_documentation(&self) -> bool { - !self.builder.get_pointer_field(4).is_null() + !self.builder.is_pointer_field_null(4) } #[inline] pub fn get_constructor_index(self) -> u16 { @@ -4627,8 +7596,8 @@ pub mod value_constructor_variant { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -4640,8 +7609,191 @@ pub mod value_constructor_variant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 9 }; + pub static ENCODED_NODE: [::capnp::Word; 158] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(213, 61, 35, 233, 38, 21, 11, 240), + ::capnp::word(37, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(26, 168, 208, 43, 233, 121, 76, 225), + ::capnp::word(9, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 98, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 199, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 86, 97, 108), + ::capnp::word(117, 101, 67, 111, 110, 115, 116, 114), + ::capnp::word(117, 99, 116, 111, 114, 86, 97, 114), + ::capnp::word(105, 97, 110, 116, 46, 114, 101, 99), + ::capnp::word(111, 114, 100, 0, 0, 0, 0, 0), + ::capnp::word(32, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(209, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(204, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(216, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(213, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(208, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(220, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 10, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(217, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(216, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 11, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(17, 1, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(28, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 12, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 1, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(20, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(32, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 13, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 1, 0, 0, 146, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(32, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(44, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 0, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 16, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 1, 0, 0, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(52, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(7, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 17, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(49, 1, 0, 0, 138, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(52, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(64, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 114, 105, 116, 121, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 105, 101, 108, 100, 77, 97, 112), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(253, 203, 85, 217, 186, 138, 221, 238), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 235, 12, 250, 24, 243, 166, 215), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 111, 99, 97, 116, 105, 111, 110), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 111, 110, 115, 116, 114, 117, 99), + ::capnp::word(116, 111, 114, 115, 67, 111, 117, 110), + ::capnp::word(116, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 111, 99, 117, 109, 101, 110, 116), + ::capnp::word(97, 116, 105, 111, 110, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 111, 110, 115, 116, 114, 117, 99), + ::capnp::word(116, 111, 114, 73, 110, 100, 101, 120), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + 2 => as ::capnp::introspect::Introspect>::introspect(), + 3 => ::introspect(), + 4 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 5 => ::introspect(), + 6 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 7 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,7,5,6,2,3,4,0]; pub const TYPE_ID: u64 = 0xf00b_1526_e923_3dd5; } } @@ -4650,26 +7802,41 @@ pub mod value_constructor_variant { pub mod external { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -4687,7 +7854,7 @@ pub mod external { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -4712,17 +7879,21 @@ pub mod external { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -4733,39 +7904,39 @@ pub mod external { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4773,15 +7944,15 @@ pub mod external { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_function(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_function(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + pub fn set_function(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap() } #[inline] pub fn init_function(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -4789,21 +7960,88 @@ pub mod external { } #[inline] pub fn has_function(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 2 }; + pub static ENCODED_NODE: [::capnp::Word; 48] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(236, 212, 23, 222, 114, 58, 95, 198), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 69, 120, 116), + ::capnp::word(101, 114, 110, 97, 108, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 117, 110, 99, 116, 105, 111, 110), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0xc65f_3a72_de17_d4ec; } } @@ -4811,26 +8049,41 @@ pub mod external { pub mod src_span { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -4846,9 +8099,9 @@ pub mod src_span { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -4865,17 +8118,21 @@ pub mod src_span { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -4886,31 +8143,31 @@ pub mod src_span { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_start(self) -> u32 { @@ -4932,15 +8189,81 @@ pub mod src_span { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 0 }; + pub static ENCODED_NODE: [::capnp::Word; 47] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(176, 122, 119, 83, 72, 147, 59, 230), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 170, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 83, 114, 99), + ::capnp::word(83, 112, 97, 110, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(115, 116, 97, 114, 116, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 110, 100, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0xe63b_9348_5377_7ab0; } } @@ -4948,26 +8271,41 @@ pub mod src_span { pub mod boxed_u_int16 { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -4983,9 +8321,9 @@ pub mod boxed_u_int16 { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -4998,17 +8336,21 @@ pub mod boxed_u_int16 { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5019,31 +8361,31 @@ pub mod boxed_u_int16 { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_value(self) -> u16 { @@ -5057,15 +8399,66 @@ pub mod boxed_u_int16 { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 0 }; + pub static ENCODED_NODE: [::capnp::Word; 33] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(206, 188, 213, 112, 115, 74, 121, 191), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 202, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 111, 120), + ::capnp::word(101, 100, 85, 73, 110, 116, 49, 54), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0xbf79_4a73_70d5_bcce; } } @@ -5073,26 +8466,41 @@ pub mod boxed_u_int16 { pub mod boxed_u_int32 { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -5108,9 +8516,9 @@ pub mod boxed_u_int32 { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -5123,17 +8531,21 @@ pub mod boxed_u_int32 { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 0 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5144,31 +8556,31 @@ pub mod boxed_u_int32 { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_value(self) -> u32 { @@ -5182,15 +8594,66 @@ pub mod boxed_u_int32 { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 0 }; + pub static ENCODED_NODE: [::capnp::Word; 33] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(229, 125, 51, 241, 210, 87, 45, 136), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 202, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 63, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 111, 120), + ::capnp::word(101, 100, 85, 73, 110, 116, 51, 50), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0]; pub const TYPE_ID: u64 = 0x882d_57d2_f133_7de5; } } @@ -5198,26 +8661,41 @@ pub mod boxed_u_int32 { pub mod field_map { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -5235,7 +8713,7 @@ pub mod field_map { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -5256,17 +8734,21 @@ pub mod field_map { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5277,31 +8759,31 @@ pub mod field_map { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_arity(self) -> u32 { @@ -5316,8 +8798,8 @@ pub mod field_map { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_fields(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_fields(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::property::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_fields(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::property::Owned> { @@ -5325,21 +8807,103 @@ pub mod field_map { } #[inline] pub fn has_fields(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 63] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(69, 235, 12, 250, 24, 243, 166, 215), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 70, 105, 101), + ::capnp::word(108, 100, 77, 97, 112, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(116, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(97, 114, 105, 116, 121, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 105, 101, 108, 100, 115, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 31, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(106, 29, 126, 201, 93, 118, 154, 200), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 23, 0, 0, 0), + ::capnp::word(4, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(229, 125, 51, 241, 210, 87, 45, 136), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => <::capnp::struct_list::Owned> as ::capnp::introspect::Introspect>::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0xd7a6_f318_fa0c_eb45; } } @@ -5349,26 +8913,41 @@ pub mod constant { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -5386,7 +8965,7 @@ pub mod constant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -5442,12 +9021,12 @@ pub mod constant { } 4 => { ::core::result::Result::Ok(List( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 5 => { ::core::result::Result::Ok(Record( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 6 => { @@ -5457,12 +9036,12 @@ pub mod constant { } 7 => { ::core::result::Result::Ok(Var( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 8 => { ::core::result::Result::Ok(StringConcatenation( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -5471,17 +9050,21 @@ pub mod constant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5492,36 +9075,36 @@ pub mod constant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] - pub fn set_int(&mut self, value: ::capnp::text::Reader<'_>) { + pub fn set_int(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { self.builder.set_data_field::(0, 0); - self.builder.get_pointer_field(0).set_text(value); + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_int(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -5531,12 +9114,12 @@ pub mod constant { #[inline] pub fn has_int(&self) -> bool { if self.builder.get_data_field::(0) != 0 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn set_float(&mut self, value: ::capnp::text::Reader<'_>) { + pub fn set_float(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { self.builder.set_data_field::(0, 1); - self.builder.get_pointer_field(0).set_text(value); + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_float(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -5546,12 +9129,12 @@ pub mod constant { #[inline] pub fn has_float(&self) -> bool { if self.builder.get_data_field::(0) != 1 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn set_string(&mut self, value: ::capnp::text::Reader<'_>) { + pub fn set_string(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { self.builder.set_data_field::(0, 2); - self.builder.get_pointer_field(0).set_text(value); + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_string(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -5561,12 +9144,12 @@ pub mod constant { #[inline] pub fn has_string(&self) -> bool { if self.builder.get_data_field::(0) != 2 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn set_tuple(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { + pub fn set_tuple(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 3); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_tuple(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::constant::Owned> { @@ -5576,27 +9159,27 @@ pub mod constant { #[inline] pub fn has_tuple(&self) -> bool { if self.builder.get_data_field::(0) != 3 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn init_list(self, ) -> crate::schema_capnp::constant::list::Builder<'a> { + pub fn init_list(mut self, ) -> crate::schema_capnp::constant::list::Builder<'a> { self.builder.set_data_field::(0, 4); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.into() } #[inline] - pub fn init_record(self, ) -> crate::schema_capnp::constant::record::Builder<'a> { + pub fn init_record(mut self, ) -> crate::schema_capnp::constant::record::Builder<'a> { self.builder.set_data_field::(0, 5); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.into() } #[inline] - pub fn set_bit_array(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::bit_array_segment::Owned>) -> ::capnp::Result<()> { + pub fn set_bit_array(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::bit_array_segment::Owned>) -> ::capnp::Result<()> { self.builder.set_data_field::(0, 6); - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_bit_array(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::bit_array_segment::Owned> { @@ -5606,23 +9189,23 @@ pub mod constant { #[inline] pub fn has_bit_array(&self) -> bool { if self.builder.get_data_field::(0) != 6 { return false; } - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] - pub fn init_var(self, ) -> crate::schema_capnp::constant::var::Builder<'a> { + pub fn init_var(mut self, ) -> crate::schema_capnp::constant::var::Builder<'a> { self.builder.set_data_field::(0, 7); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - self.builder.get_pointer_field(2).clear(); - self.builder.get_pointer_field(3).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.reborrow().get_pointer_field(2).clear(); + self.builder.reborrow().get_pointer_field(3).clear(); + self.builder.into() } #[inline] - pub fn init_string_concatenation(self, ) -> crate::schema_capnp::constant::string_concatenation::Builder<'a> { + pub fn init_string_concatenation(mut self, ) -> crate::schema_capnp::constant::string_concatenation::Builder<'a> { self.builder.set_data_field::(0, 8); - self.builder.get_pointer_field(0).clear(); - self.builder.get_pointer_field(1).clear(); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.reborrow().get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(1).clear(); + self.builder.into() } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -5649,12 +9232,12 @@ pub mod constant { } 4 => { ::core::result::Result::Ok(List( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 5 => { ::core::result::Result::Ok(Record( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 6 => { @@ -5664,12 +9247,12 @@ pub mod constant { } 7 => { ::core::result::Result::Ok(Var( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 8 => { ::core::result::Result::Ok(StringConcatenation( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -5679,15 +9262,176 @@ pub mod constant { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 135] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(4, 0, 7, 0, 0, 0, 9, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 178, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 255, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 67, 111, 110), + ::capnp::word(115, 116, 97, 110, 116, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(237, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(232, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(244, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(241, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(236, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(248, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 253, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(245, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(240, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(252, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 252, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(249, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(244, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 251, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(187, 26, 170, 149, 101, 60, 254, 232), + ::capnp::word(13, 1, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(5, 0, 250, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(28, 159, 252, 166, 123, 114, 181, 230), + ::capnp::word(245, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(6, 0, 249, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(221, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(220, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(248, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(7, 0, 248, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(167, 2, 255, 44, 84, 233, 10, 203), + ::capnp::word(245, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 247, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(61, 195, 0, 38, 129, 28, 187, 154), + ::capnp::word(221, 0, 0, 0, 162, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 116, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 108, 111, 97, 116, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 116, 114, 105, 110, 103, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 117, 112, 108, 101, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 105, 115, 116, 0, 0, 0, 0), + ::capnp::word(114, 101, 99, 111, 114, 100, 0, 0), + ::capnp::word(98, 105, 116, 65, 114, 114, 97, 121), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(181, 42, 182, 217, 246, 199, 65, 197), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(118, 97, 114, 0, 0, 0, 0, 0), + ::capnp::word(115, 116, 114, 105, 110, 103, 67, 111), + ::capnp::word(110, 99, 97, 116, 101, 110, 97, 116), + ::capnp::word(105, 111, 110, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 3 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 4 => ::introspect(), + 5 => ::introspect(), + 6 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 7 => ::introspect(), + 8 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1,2,3,4,5,6,7,8]; + pub static MEMBERS_BY_NAME : &[u16] = &[6,1,0,4,5,2,8,3,7]; pub const TYPE_ID: u64 = 0xe6ea_dc6f_e66d_526a; } pub enum Which { @@ -5707,26 +9451,41 @@ pub mod constant { pub mod list { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -5744,7 +9503,7 @@ pub mod constant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -5769,17 +9528,21 @@ pub mod constant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5790,39 +9553,39 @@ pub mod constant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_elements(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::constant::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_elements(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_elements(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_elements(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::constant::Owned> { @@ -5830,7 +9593,7 @@ pub mod constant { } #[inline] pub fn has_elements(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -5838,7 +9601,7 @@ pub mod constant { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -5846,14 +9609,14 @@ pub mod constant { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -5862,8 +9625,79 @@ pub mod constant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 52] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(187, 26, 170, 149, 101, 60, 254, 232), + ::capnp::word(22, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(4, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 218, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 67, 111, 110), + ::capnp::word(115, 116, 97, 110, 116, 46, 108, 105), + ::capnp::word(115, 116, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(65, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(60, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(72, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(101, 108, 101, 109, 101, 110, 116, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0xe8fe_3c65_95aa_1abb; } } @@ -5871,26 +9705,41 @@ pub mod constant { pub mod record { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -5908,7 +9757,7 @@ pub mod constant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -5941,17 +9790,21 @@ pub mod constant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -5962,39 +9815,39 @@ pub mod constant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_args(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::constant::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_args(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_args(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::constant::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_args(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::constant::Owned> { @@ -6002,15 +9855,15 @@ pub mod constant { } #[inline] pub fn has_args(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_tag(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_tag(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + pub fn set_tag(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap() } #[inline] pub fn init_tag(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6018,7 +9871,7 @@ pub mod constant { } #[inline] pub fn has_tag(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -6026,7 +9879,7 @@ pub mod constant { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -6034,14 +9887,14 @@ pub mod constant { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -6050,8 +9903,94 @@ pub mod constant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 66] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(28, 159, 252, 166, 123, 114, 181, 230), + ::capnp::word(22, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(4, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 234, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 67, 111, 110), + ::capnp::word(115, 116, 97, 110, 116, 46, 114, 101), + ::capnp::word(99, 111, 114, 100, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(92, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(89, 0, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(84, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(96, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(93, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(88, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(100, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(97, 114, 103, 115, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 97, 103, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1,2]; pub const TYPE_ID: u64 = 0xe6b5_727b_a6fc_9f1c; } } @@ -6059,26 +9998,41 @@ pub mod constant { pub mod var { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -6096,7 +10050,7 @@ pub mod constant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -6137,17 +10091,21 @@ pub mod constant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -6158,39 +10116,39 @@ pub mod constant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_module(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_module(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(0).set_text(value); + pub fn set_module(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap() } #[inline] pub fn init_module(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6198,15 +10156,15 @@ pub mod constant { } #[inline] pub fn has_module(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { - self.builder.get_pointer_field(1).set_text(value); + pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap() } #[inline] pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { @@ -6214,7 +10172,7 @@ pub mod constant { } #[inline] pub fn has_name(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -6222,7 +10180,7 @@ pub mod constant { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -6230,7 +10188,7 @@ pub mod constant { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } #[inline] pub fn get_constructor(self) -> ::capnp::Result> { @@ -6238,7 +10196,7 @@ pub mod constant { } #[inline] pub fn set_constructor(&mut self, value: crate::schema_capnp::value_constructor::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(3), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(3), value, false) } #[inline] pub fn init_constructor(self, ) -> crate::schema_capnp::value_constructor::Builder<'a> { @@ -6246,14 +10204,14 @@ pub mod constant { } #[inline] pub fn has_constructor(&self) -> bool { - !self.builder.get_pointer_field(3).is_null() + !self.builder.is_pointer_field_null(3) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -6265,8 +10223,107 @@ pub mod constant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 78] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(167, 2, 255, 44, 84, 233, 10, 203), + ::capnp::word(22, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(4, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 210, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(25, 0, 0, 0, 231, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 67, 111, 110), + ::capnp::word(115, 116, 97, 110, 116, 46, 118, 97), + ::capnp::word(114, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 10, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(97, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(92, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(104, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 11, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(101, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(96, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 12, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(100, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(112, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 0, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 13, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(109, 0, 0, 0, 98, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(120, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(109, 111, 100, 117, 108, 101, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(99, 111, 110, 115, 116, 114, 117, 99), + ::capnp::word(116, 111, 114, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(28, 5, 251, 168, 241, 216, 198, 212), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => ::introspect(), + 3 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[3,0,1,2]; pub const TYPE_ID: u64 = 0xcb0a_e954_2cff_02a7; } } @@ -6274,26 +10331,41 @@ pub mod constant { pub mod string_concatenation { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -6311,7 +10383,7 @@ pub mod constant { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -6336,17 +10408,21 @@ pub mod constant { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 4 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -6357,31 +10433,31 @@ pub mod constant { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_left(self) -> ::capnp::Result> { @@ -6389,7 +10465,7 @@ pub mod constant { } #[inline] pub fn set_left(&mut self, value: crate::schema_capnp::constant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_left(self, ) -> crate::schema_capnp::constant::Builder<'a> { @@ -6397,7 +10473,7 @@ pub mod constant { } #[inline] pub fn has_left(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_right(self) -> ::capnp::Result> { @@ -6405,7 +10481,7 @@ pub mod constant { } #[inline] pub fn set_right(&mut self, value: crate::schema_capnp::constant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_right(self, ) -> crate::schema_capnp::constant::Builder<'a> { @@ -6413,14 +10489,14 @@ pub mod constant { } #[inline] pub fn has_right(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -6432,8 +10508,76 @@ pub mod constant { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 4 }; + pub static ENCODED_NODE: [::capnp::Word; 49] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(61, 195, 0, 38, 129, 28, 187, 154), + ::capnp::word(22, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(4, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 82, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 67, 111, 110), + ::capnp::word(115, 116, 97, 110, 116, 46, 115, 116), + ::capnp::word(114, 105, 110, 103, 67, 111, 110, 99), + ::capnp::word(97, 116, 101, 110, 97, 116, 105, 111), + ::capnp::word(110, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 14, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 15, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(108, 101, 102, 116, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(114, 105, 103, 104, 116, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[0,1]; pub const TYPE_ID: u64 = 0x9abb_1c81_2600_c33d; } } @@ -6442,26 +10586,41 @@ pub mod constant { pub mod bit_array_segment { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -6479,7 +10638,7 @@ pub mod bit_array_segment { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -6512,17 +10671,21 @@ pub mod bit_array_segment { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 3 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -6533,31 +10696,31 @@ pub mod bit_array_segment { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_value(self) -> ::capnp::Result> { @@ -6565,7 +10728,7 @@ pub mod bit_array_segment { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::constant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::constant::Builder<'a> { @@ -6573,15 +10736,15 @@ pub mod bit_array_segment { } #[inline] pub fn has_value(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_options(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::schema_capnp::bit_array_segment_option::Owned>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) } #[inline] - pub fn set_options(&mut self, value: ::capnp::struct_list::Reader<'a,crate::schema_capnp::bit_array_segment_option::Owned>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(1), value, false) + pub fn set_options(&mut self, value: ::capnp::struct_list::Reader<'_,crate::schema_capnp::bit_array_segment_option::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false) } #[inline] pub fn init_options(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::schema_capnp::bit_array_segment_option::Owned> { @@ -6589,7 +10752,7 @@ pub mod bit_array_segment { } #[inline] pub fn has_options(&self) -> bool { - !self.builder.get_pointer_field(1).is_null() + !self.builder.is_pointer_field_null(1) } #[inline] pub fn get_type(self) -> ::capnp::Result> { @@ -6597,7 +10760,7 @@ pub mod bit_array_segment { } #[inline] pub fn set_type(&mut self, value: crate::schema_capnp::type_::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(2), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false) } #[inline] pub fn init_type(self, ) -> crate::schema_capnp::type_::Builder<'a> { @@ -6605,14 +10768,14 @@ pub mod bit_array_segment { } #[inline] pub fn has_type(&self) -> bool { - !self.builder.get_pointer_field(2).is_null() + !self.builder.is_pointer_field_null(2) } } pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -6624,8 +10787,95 @@ pub mod bit_array_segment { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 0, pointers: 3 }; + pub static ENCODED_NODE: [::capnp::Word; 67] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(181, 42, 182, 217, 246, 199, 65, 197), + ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(3, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 234, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 175, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 105, 116), + ::capnp::word(65, 114, 114, 97, 121, 83, 101, 103), + ::capnp::word(109, 101, 110, 116, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(69, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(64, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(76, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(73, 0, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(96, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(93, 0, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(88, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(100, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(111, 112, 116, 105, 111, 110, 115, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(84, 4, 149, 82, 63, 31, 245, 176), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(116, 121, 112, 101, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 7, 151, 64, 46, 128, 246, 130), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 2 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1,2]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,2,0]; pub const TYPE_ID: u64 = 0xc541_c7f6_d9b6_2ab5; } } @@ -6635,26 +10885,41 @@ pub mod bit_array_segment_option { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -6672,7 +10937,7 @@ pub mod bit_array_segment_option { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -6758,12 +11023,12 @@ pub mod bit_array_segment_option { } 15 => { ::core::result::Result::Ok(Size( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } 16 => { ::core::result::Result::Ok(Unit( - ::capnp::traits::FromStructReader::new(self.reader) + self.reader.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -6772,17 +11037,21 @@ pub mod bit_array_segment_option { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -6793,31 +11062,31 @@ pub mod bit_array_segment_option { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn set_bytes(&mut self, _value: ()) { @@ -6880,18 +11149,18 @@ pub mod bit_array_segment_option { self.builder.set_data_field::(0, 14); } #[inline] - pub fn init_size(self, ) -> crate::schema_capnp::bit_array_segment_option::size::Builder<'a> { + pub fn init_size(mut self, ) -> crate::schema_capnp::bit_array_segment_option::size::Builder<'a> { self.builder.set_data_field::(0, 15); - self.builder.get_pointer_field(0).clear(); + self.builder.reborrow().get_pointer_field(0).clear(); self.builder.set_bool_field(16, false); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() } #[inline] pub fn init_unit(self, ) -> crate::schema_capnp::bit_array_segment_option::unit::Builder<'a> { self.builder.set_data_field::(0, 16); self.builder.set_data_field::(2, 0u8); self.builder.set_bool_field(24, false); - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() } #[inline] pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> { @@ -6973,12 +11242,12 @@ pub mod bit_array_segment_option { } 15 => { ::core::result::Result::Ok(Size( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } 16 => { ::core::result::Result::Ok(Unit( - ::capnp::traits::FromStructBuilder::new(self.builder) + self.builder.into() )) } x => ::core::result::Result::Err(::capnp::NotInSchema(x)) @@ -6988,15 +11257,313 @@ pub mod bit_array_segment_option { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 264] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(84, 4, 149, 82, 63, 31, 245, 176), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 17, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 26, 1, 0, 0), + ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 191, 3, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 105, 116), + ::capnp::word(65, 114, 114, 97, 121, 83, 101, 103), + ::capnp::word(109, 101, 110, 116, 79, 112, 116, 105), + ::capnp::word(111, 110, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(68, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(205, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(200, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(212, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(209, 1, 0, 0, 66, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(204, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(216, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(2, 0, 253, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(213, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(208, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(220, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(3, 0, 252, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(217, 1, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(212, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(224, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(4, 0, 251, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(221, 1, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(216, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(228, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(5, 0, 250, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(225, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(220, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(232, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(6, 0, 249, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(229, 1, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(224, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(236, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(7, 0, 248, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(233, 1, 0, 0, 114, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(232, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(244, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(8, 0, 247, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(241, 1, 0, 0, 122, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(240, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(252, 1, 0, 0, 2, 0, 1, 0), + ::capnp::word(9, 0, 246, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 9, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(249, 1, 0, 0, 122, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(248, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(4, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(10, 0, 245, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 10, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 2, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(252, 1, 0, 0, 3, 0, 1, 0), + ::capnp::word(8, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(11, 0, 244, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 11, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(5, 2, 0, 0, 74, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(4, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(16, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(12, 0, 243, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 12, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(13, 2, 0, 0, 34, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(20, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(13, 0, 242, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 13, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(17, 2, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(12, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(24, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(14, 0, 241, 255, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 14, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 2, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 2, 0, 0, 3, 0, 1, 0), + ::capnp::word(28, 2, 0, 0, 2, 0, 1, 0), + ::capnp::word(15, 0, 240, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(20, 184, 71, 227, 143, 218, 2, 146), + ::capnp::word(25, 2, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 239, 255, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(94, 12, 190, 163, 221, 253, 125, 207), + ::capnp::word(1, 2, 0, 0, 42, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(98, 121, 116, 101, 115, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(105, 110, 116, 101, 103, 101, 114, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(102, 108, 111, 97, 116, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(98, 105, 116, 115, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 56, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 49, 54, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 51, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 56, 67, 111, 100, 101), + ::capnp::word(112, 111, 105, 110, 116, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 49, 54, 67, 111, 100), + ::capnp::word(101, 112, 111, 105, 110, 116, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 116, 102, 51, 50, 67, 111, 100), + ::capnp::word(101, 112, 111, 105, 110, 116, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 105, 103, 110, 101, 100, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(117, 110, 115, 105, 103, 110, 101, 100), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(98, 105, 103, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 105, 116, 116, 108, 101, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(110, 97, 116, 105, 118, 101, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 105, 122, 101, 0, 0, 0, 0), + ::capnp::word(117, 110, 105, 116, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <() as ::capnp::introspect::Introspect>::introspect(), + 1 => <() as ::capnp::introspect::Introspect>::introspect(), + 2 => <() as ::capnp::introspect::Introspect>::introspect(), + 3 => <() as ::capnp::introspect::Introspect>::introspect(), + 4 => <() as ::capnp::introspect::Introspect>::introspect(), + 5 => <() as ::capnp::introspect::Introspect>::introspect(), + 6 => <() as ::capnp::introspect::Introspect>::introspect(), + 7 => <() as ::capnp::introspect::Introspect>::introspect(), + 8 => <() as ::capnp::introspect::Introspect>::introspect(), + 9 => <() as ::capnp::introspect::Introspect>::introspect(), + 10 => <() as ::capnp::introspect::Introspect>::introspect(), + 11 => <() as ::capnp::introspect::Introspect>::introspect(), + 12 => <() as ::capnp::introspect::Introspect>::introspect(), + 13 => <() as ::capnp::introspect::Introspect>::introspect(), + 14 => <() as ::capnp::introspect::Introspect>::introspect(), + 15 => ::introspect(), + 16 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; + pub static MEMBERS_BY_NAME : &[u16] = &[12,3,0,2,1,13,14,10,15,16,11,5,8,6,9,4,7]; pub const TYPE_ID: u64 = 0xb0f5_1f3f_5295_0454; } pub enum Which { @@ -7024,26 +11591,41 @@ pub mod bit_array_segment_option { pub mod size { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } + } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -7061,7 +11643,7 @@ pub mod bit_array_segment_option { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -7082,17 +11664,21 @@ pub mod bit_array_segment_option { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -7103,31 +11689,31 @@ pub mod bit_array_segment_option { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_value(self) -> ::capnp::Result> { @@ -7135,7 +11721,7 @@ pub mod bit_array_segment_option { } #[inline] pub fn set_value(&mut self, value: crate::schema_capnp::constant::Reader<'_>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_value(self, ) -> crate::schema_capnp::constant::Builder<'a> { @@ -7143,7 +11729,7 @@ pub mod bit_array_segment_option { } #[inline] pub fn has_value(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_short_form(self) -> bool { @@ -7157,8 +11743,8 @@ pub mod bit_array_segment_option { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { @@ -7167,8 +11753,76 @@ pub mod bit_array_segment_option { } } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 49] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(20, 184, 71, 227, 143, 218, 2, 146), + ::capnp::word(35, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(84, 4, 149, 82, 63, 31, 245, 176), + ::capnp::word(1, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 105, 116), + ::capnp::word(65, 114, 114, 97, 121, 83, 101, 103), + ::capnp::word(109, 101, 110, 116, 79, 112, 116, 105), + ::capnp::word(111, 110, 46, 115, 105, 122, 101, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 15, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 16, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 16, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(106, 82, 109, 230, 111, 220, 234, 230), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 104, 111, 114, 116, 70, 111, 114), + ::capnp::word(109, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0x9202_da8f_e347_b814; } } @@ -7176,26 +11830,41 @@ pub mod bit_array_segment_option { pub mod unit { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -7211,9 +11880,9 @@ pub mod bit_array_segment_option { } } - impl <'a,> Reader<'a,> { + impl <> Reader<'_,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -7230,17 +11899,21 @@ pub mod bit_array_segment_option { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -7251,31 +11924,31 @@ pub mod bit_array_segment_option { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_value(self) -> u8 { @@ -7297,15 +11970,83 @@ pub mod bit_array_segment_option { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 49] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(94, 12, 190, 163, 221, 253, 125, 207), + ::capnp::word(35, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(84, 4, 149, 82, 63, 31, 245, 176), + ::capnp::word(1, 0, 7, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 66, 105, 116), + ::capnp::word(65, 114, 114, 97, 121, 83, 101, 103), + ::capnp::word(109, 101, 110, 116, 79, 112, 116, 105), + ::capnp::word(111, 110, 46, 117, 110, 105, 116, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 2, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 17, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 50, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 24, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 18, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(45, 0, 0, 0, 82, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(118, 97, 108, 117, 101, 0, 0, 0), + ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 104, 111, 114, 116, 70, 111, 114), + ::capnp::word(109, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => ::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0xcf7d_fddd_a3be_0c5e; } } @@ -7314,26 +12055,41 @@ pub mod bit_array_segment_option { pub mod line_numbers { #[derive(Copy, Clone)] pub struct Owned(()); - impl <'a> ::capnp::traits::Owned<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } - impl <'a> ::capnp::traits::OwnedStruct<'a> for Owned { type Reader = Reader<'a>; type Builder = Builder<'a>; } + impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } } + impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } + impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; } impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; } - #[derive(Clone, Copy)] pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> } + impl <> ::core::marker::Copy for Reader<'_,> {} + impl <> ::core::clone::Clone for Reader<'_,> { + fn clone(&self) -> Self { *self } + } - impl <'a,> ::capnp::traits::HasTypeId for Reader<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Reader<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> { + fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self { + Self { reader, } + } + } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> { + fn from(reader: Reader<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) + } } - impl <'a,> ::capnp::traits::FromStructReader<'a> for Reader<'a,> { - fn new(reader: ::capnp::private::layout::StructReader<'a>) -> Reader<'a,> { - Reader { reader, } + + impl <> ::core::fmt::Debug for Reader<'_,> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> { + core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f) } } impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> { - fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructReader::new(reader.get_struct(default)?)) + fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(reader.get_struct(default)?.into()) } } @@ -7351,7 +12107,7 @@ pub mod line_numbers { impl <'a,> Reader<'a,> { pub fn reborrow(&self) -> Reader<'_,> { - Reader { .. *self } + Self { .. *self } } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { @@ -7372,17 +12128,21 @@ pub mod line_numbers { } pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> } - impl <'a,> ::capnp::traits::HasStructSize for Builder<'a,> { - #[inline] - fn struct_size() -> ::capnp::private::layout::StructSize { _private::STRUCT_SIZE } + impl <> ::capnp::traits::HasStructSize for Builder<'_,> { + const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 }; } - impl <'a,> ::capnp::traits::HasTypeId for Builder<'a,> { - #[inline] - fn type_id() -> u64 { _private::TYPE_ID } + impl <> ::capnp::traits::HasTypeId for Builder<'_,> { + const TYPE_ID: u64 = _private::TYPE_ID; + } + impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> { + fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self { + Self { builder, } + } } - impl <'a,> ::capnp::traits::FromStructBuilder<'a> for Builder<'a,> { - fn new(builder: ::capnp::private::layout::StructBuilder<'a>) -> Builder<'a, > { - Builder { builder, } + + impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> { + fn from(builder: Builder<'a,>) -> Self { + Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>}))) } } @@ -7393,39 +12153,39 @@ pub mod line_numbers { } impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> { - fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Builder<'a,> { - ::capnp::traits::FromStructBuilder::new(builder.init_struct(_private::STRUCT_SIZE)) + fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self { + builder.init_struct(::STRUCT_SIZE).into() } - fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [capnp::Word]>) -> ::capnp::Result> { - ::core::result::Result::Ok(::capnp::traits::FromStructBuilder::new(builder.get_struct(_private::STRUCT_SIZE, default)?)) + fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result { + ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into()) } } - impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { - fn set_pointer_builder<'b>(pointer: ::capnp::private::layout::PointerBuilder<'b>, value: Reader<'a,>, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } + impl <> ::capnp::traits::SetterInput> for Reader<'_,> { + fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } } impl <'a,> Builder<'a,> { pub fn into_reader(self) -> Reader<'a,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.into_reader().into() } pub fn reborrow(&mut self) -> Builder<'_,> { - Builder { .. *self } + Builder { builder: self.builder.reborrow() } } pub fn reborrow_as_reader(&self) -> Reader<'_,> { - ::capnp::traits::FromStructReader::new(self.builder.into_reader()) + self.builder.as_reader().into() } pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> { - self.builder.into_reader().total_size() + self.builder.as_reader().total_size() } #[inline] pub fn get_line_starts(self) -> ::capnp::Result<::capnp::primitive_list::Builder<'a,u32>> { ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) } #[inline] - pub fn set_line_starts(&mut self, value: ::capnp::primitive_list::Reader<'a,u32>) -> ::capnp::Result<()> { - ::capnp::traits::SetPointerBuilder::set_pointer_builder(self.builder.get_pointer_field(0), value, false) + pub fn set_line_starts(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::primitive_list::Owned>) -> ::capnp::Result<()> { + ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false) } #[inline] pub fn init_line_starts(self, size: u32) -> ::capnp::primitive_list::Builder<'a,u32> { @@ -7433,7 +12193,7 @@ pub mod line_numbers { } #[inline] pub fn has_line_starts(&self) -> bool { - !self.builder.get_pointer_field(0).is_null() + !self.builder.is_pointer_field_null(0) } #[inline] pub fn get_length(self) -> u32 { @@ -7447,15 +12207,87 @@ pub mod line_numbers { pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline } impl ::capnp::capability::FromTypelessPipeline for Pipeline { - fn new(typeless: ::capnp::any_pointer::Pipeline) -> Pipeline { - Pipeline { _typeless: typeless, } + fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self { + Self { _typeless: typeless, } } } impl Pipeline { } mod _private { - use capnp::private::layout; - pub const STRUCT_SIZE: layout::StructSize = layout::StructSize { data: 1, pointers: 1 }; + pub static ENCODED_NODE: [::capnp::Word; 53] = [ + ::capnp::word(0, 0, 0, 0, 5, 0, 6, 0), + ::capnp::word(101, 33, 49, 62, 78, 11, 246, 235), + ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(190, 237, 188, 253, 156, 169, 51, 181), + ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(21, 0, 0, 0, 202, 0, 0, 0), + ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(29, 0, 0, 0, 119, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99), + ::capnp::word(97, 112, 110, 112, 58, 76, 105, 110), + ::capnp::word(101, 78, 117, 109, 98, 101, 114, 115), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(41, 0, 0, 0, 90, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(65, 0, 0, 0, 58, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(60, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(72, 0, 0, 0, 2, 0, 1, 0), + ::capnp::word(108, 105, 110, 101, 83, 116, 97, 114), + ::capnp::word(116, 115, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(108, 101, 110, 103, 116, 104, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(8, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0), + ]; + pub fn get_field_types(index: u16) -> ::capnp::introspect::Type { + match index { + 0 => <::capnp::primitive_list::Owned as ::capnp::introspect::Introspect>::introspect(), + 1 => ::introspect(), + _ => panic!("invalid field index {}", index), + } + } + pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type { + panic!("invalid annotation indices ({:?}, {}) ", child_index, index) + } + pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema { + encoded_node: &ENCODED_NODE, + nonunion_members: NONUNION_MEMBERS, + members_by_discriminant: MEMBERS_BY_DISCRIMINANT, + members_by_name: MEMBERS_BY_NAME, + }; + pub static NONUNION_MEMBERS : &[u16] = &[0,1]; + pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; + pub static MEMBERS_BY_NAME : &[u16] = &[1,0]; pub const TYPE_ID: u64 = 0xebf6_0b4e_3e31_2165; } } diff --git a/compiler-core/schema.capnp b/compiler-core/schema.capnp index df92d8abb..a27cbafdc 100644 --- a/compiler-core/schema.capnp +++ b/compiler-core/schema.capnp @@ -81,6 +81,15 @@ struct RecordAccessor { label @2 :Text; } +# UInt16 cannot be used as a generic parameter to Option, +# so we need to create a custom type for this. +struct InferredVariant { + union { + unknown @0 :Void; + inferred @1 :UInt16; + } +} + struct Type { union { app :group { @@ -88,6 +97,7 @@ struct Type { module @1 :Text; parameters @2 :List(Type); package @7 :Text; + inferredVariant @8 :InferredVariant; } fn :group { diff --git a/compiler-core/src/analyse.rs b/compiler-core/src/analyse.rs index 2b328436f..88d0be287 100644 --- a/compiler-core/src/analyse.rs +++ b/compiler-core/src/analyse.rs @@ -882,7 +882,7 @@ impl<'a, A> ModuleAnalyzer<'a, A> { } => self.track_feature_usage(FeatureKind::InternalAnnotation, location), } - let constructors = constructors + let constructors: Vec>> = constructors .into_iter() .map( |RecordConstructor { @@ -891,8 +891,15 @@ impl<'a, A> ModuleAnalyzer<'a, A> { name, arguments: args, documentation, + deprecation: constructor_deprecation, }| { self.check_name_case(name_location, &name, Named::CustomTypeVariant); + if constructor_deprecation.is_deprecated() { + self.track_feature_usage( + FeatureKind::VariantWithDeprecatedAnnotation, + location, + ); + } let preregistered_fn = environment .get_variable(&name) @@ -927,6 +934,7 @@ impl<'a, A> ModuleAnalyzer<'a, A> { name, arguments: args, documentation, + deprecation: constructor_deprecation, } }, ) @@ -937,6 +945,36 @@ impl<'a, A> ModuleAnalyzer<'a, A> { .parameters .clone(); + // Check if all constructors are deprecated if so error. + if !constructors.is_empty() + && constructors + .iter() + .all(|record| record.deprecation.is_deprecated()) + { + self.problems + .error(Error::AllVariantsDeprecated { location }); + } + + // If any constructor record/varient is deprecated while + // the type is deprecated as a whole that is considered an error. + if deprecation.is_deprecated() + && !constructors.is_empty() + && constructors + .iter() + .any(|record| record.deprecation.is_deprecated()) + { + // Report error on all variants attibuted with deprecated + constructors + .iter() + .filter(|record| record.deprecation.is_deprecated()) + .for_each(|record| { + self.problems + .error(Error::DeprecatedVariantOnDeprecatedType { + location: record.location, + }); + }); + } + Ok(Definition::CustomType(CustomType { documentation: doc, location, @@ -1073,11 +1111,19 @@ impl<'a, A> ModuleAnalyzer<'a, A> { *publicity }; + // If the whole custom type is deprecated all of its varints are too. + // Otherwise just the varint(s) attributed as deprecated are. + let deprecate_constructor = if deprecation.is_deprecated() { + deprecation + } else { + &constructor.deprecation + }; + environment.insert_module_value( constructor.name.clone(), ValueConstructor { publicity: value_constructor_publicity, - deprecation: deprecation.clone(), + deprecation: deprecate_constructor.clone(), type_: type_.clone(), variant: constructor_info.clone(), }, @@ -1101,7 +1147,7 @@ impl<'a, A> ModuleAnalyzer<'a, A> { constructor_info, type_, value_constructor_publicity, - deprecation.clone(), + deprecate_constructor.clone(), ); environment.names.named_constructor_in_scope( diff --git a/compiler-core/src/analyse/imports.rs b/compiler-core/src/analyse/imports.rs index d01349ee1..54b18e9b9 100644 --- a/compiler-core/src/analyse/imports.rs +++ b/compiler-core/src/analyse/imports.rs @@ -152,6 +152,7 @@ impl<'context, 'problems> Importer<'context, 'problems> { module_name: module.name.clone(), value_constructors: module.public_value_names(), type_with_same_name: module.get_public_type(import_name).is_some(), + context: crate::type_::error::ModuleValueUsageContext::UnqualifiedImport, }); return; } diff --git a/compiler-core/src/ast.rs b/compiler-core/src/ast.rs index 1debd26e3..1c1aef62e 100644 --- a/compiler-core/src/ast.rs +++ b/compiler-core/src/ast.rs @@ -7,13 +7,14 @@ mod tests; pub mod visit; pub use self::typed::TypedExpr; -pub use self::untyped::{FunctionLiteralKind, UntypedExpr, Use}; +pub use self::untyped::{FunctionLiteralKind, UntypedExpr}; pub use self::constant::{Constant, TypedConstant, UntypedConstant}; use crate::analyse::Inferred; use crate::build::{Located, Target}; use crate::parse::SpannedString; +use crate::type_::error::VariableOrigin; use crate::type_::expression::Implementations; use crate::type_::printer::Names; use crate::type_::{ @@ -29,6 +30,7 @@ use vec1::Vec1; pub const PIPE_VARIABLE: &str = "_pipe"; pub const USE_ASSIGNMENT_VARIABLE: &str = "_use"; +pub const RECORD_UPDATE_VARIABLE: &str = "_record"; pub const ASSERT_FAIL_VARIABLE: &str = "_assert_fail"; pub const ASSERT_SUBJECT_VARIABLE: &str = "_assert_subject"; pub const CAPTURE_VARIABLE: &str = "_capture"; @@ -232,6 +234,7 @@ pub struct RecordConstructor { pub name: EcoString, pub arguments: Vec>, pub documentation: Option<(u32, EcoString)>, + pub deprecation: Deprecation, } impl RecordConstructor { @@ -727,6 +730,7 @@ pub struct ModuleConstant { } pub type UntypedCustomType = CustomType<()>; +pub type TypedCustomType = CustomType>; #[derive(Debug, Clone, PartialEq, Eq)] /// A newly defined type with one or more constructors. @@ -1217,6 +1221,10 @@ pub enum ImplicitCallArgOrigin { /// right hand side of `use` is being called with the wrong arity. /// IncorrectArityUse, + /// An argument adde by the compiler to fill in the missing args when using + /// the record update synax. + /// + RecordUpdate, } impl CallArg { @@ -1224,6 +1232,14 @@ impl CallArg { pub fn is_implicit(&self) -> bool { self.implicit.is_some() } + + #[must_use] + pub fn is_use_implicit_callback(&self) -> bool { + match self.implicit { + Some(ImplicitCallArgOrigin::Use | ImplicitCallArgOrigin::IncorrectArityUse) => true, + Some(_) | None => false, + } + } } impl CallArg { @@ -1249,14 +1265,28 @@ impl CallArg { .or_else(|| body.iter().find_map(|s| s.find_node(byte_index))), // In all other cases we're happy with the default behaviour. // - _ => self.value.find_node(byte_index), + _ => { + if let Some(located) = self.value.find_node(byte_index) { + Some(located) + } else if self.location.contains(byte_index) && self.label.is_some() { + Some(Located::Label(self.location, self.value.type_())) + } else { + None + } + } } } } impl CallArg { pub fn find_node(&self, byte_index: u32) -> Option> { - self.value.find_node(byte_index) + if let Some(located) = self.value.find_node(byte_index) { + Some(located) + } else if self.location.contains(byte_index) && self.label.is_some() { + Some(Located::Label(self.location, self.value.type_())) + } else { + None + } } } @@ -1305,22 +1335,9 @@ impl UntypedRecordUpdateArg { } } -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct TypedRecordUpdateArg { - pub label: EcoString, - pub location: SrcSpan, - pub value: TypedExpr, - pub index: u32, -} - -impl TypedRecordUpdateArg { - pub fn find_node(&self, byte_index: u32) -> Option> { - self.value.find_node(byte_index) - } - - #[must_use] - pub fn uses_label_shorthand(&self) -> bool { - self.value.location() == self.location +impl HasLocation for UntypedRecordUpdateArg { + fn location(&self) -> SrcSpan { + self.location } } @@ -1663,6 +1680,13 @@ impl SrcSpan { pub fn contains(&self, byte_index: u32) -> bool { byte_index >= self.start && byte_index <= self.end } + + pub fn merge(&self, with: &SrcSpan) -> SrcSpan { + Self { + start: self.start.min(with.start), + end: self.end.max(with.end), + } + } } #[derive(Debug, PartialEq, Eq, Clone)] @@ -1698,6 +1722,7 @@ pub enum Pattern { location: SrcSpan, name: EcoString, type_: Type, + origin: VariableOrigin, }, /// A reference to a variable in a bit array. This is always a variable @@ -1831,9 +1856,18 @@ impl Pattern { /// Returns `true` if the pattern is [`Discard`]. /// /// [`Discard`]: Pattern::Discard + #[must_use] pub fn is_discard(&self) -> bool { matches!(self, Self::Discard { .. }) } + + #[must_use] + pub fn is_variable(&self) -> bool { + match self { + Pattern::Variable { .. } => true, + _ => false, + } + } } impl TypedPattern { @@ -1949,17 +1983,25 @@ impl HasLocation for Pattern { } } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum AssignmentKind { +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum AssignmentKind { // let x = ... Let, // let assert x = ... - Assert { location: SrcSpan }, + Assert { + location: SrcSpan, + /// The message given to the assertion: + /// ```gleam + /// let asset Ok(a) = something() as "This will never fail" + /// // ^ Message + /// ``` + message: Option>, + }, // For assignments generated by the compiler Generated, } -impl AssignmentKind { +impl AssignmentKind { /// Returns `true` if the assignment kind is [`Assert`]. /// /// [`Assert`]: AssignmentKind::Assert @@ -2141,6 +2183,7 @@ pub enum TodoKind { Keyword, EmptyFunction, IncompleteUse, + EmptyBlock, } #[derive(Debug, Default)] @@ -2197,7 +2240,87 @@ pub enum Statement { /// Assigning an expression to variables using a pattern. Assignment(Assignment), /// A `use` expression. - Use(Use), + Use(Use), +} + +pub type UntypedUse = Use<(), UntypedExpr>; +pub type TypedUse = Use, TypedExpr>; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Use { + /// In an untyped use this is the expression with the untyped code of the + /// callback function. + /// + /// In a typed use this is the typed function call the use expression + /// desugars to. + /// + pub call: Box, + + /// This is the location of the whole use line, starting from the `use` + /// keyword and ending with the function call on the right hand side of + /// `<-`. + /// + /// ```gleam + /// use a <- result.try(result) + /// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + /// ``` + /// + pub location: SrcSpan, + + /// This is the location of the expression on the right hand side of the use + /// arrow. + /// + /// ```gleam + /// use a <- result.try(result) + /// ^^^^^^^^^^^^^^^^^^ + /// ``` + /// + pub right_hand_side_location: SrcSpan, + + /// This is the SrcSpan of the patterns you find on the left hand side of + /// `<-` in a use expression. + /// + /// ```gleam + /// use pattern1, pattern2 <- todo + /// ^^^^^^^^^^^^^^^^^^ + /// ``` + /// + /// In case there's no patterns it will be corresponding to the SrcSpan of + /// the `use` keyword itself. + /// + pub assignments_location: SrcSpan, + + /// The patterns on the left hand side of `<-` in a use expression. + /// + pub assignments: Vec>, +} + +pub type UntypedUseAssignment = UseAssignment<()>; +pub type TypedUseAssignment = UseAssignment>; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct UseAssignment { + pub location: SrcSpan, + pub pattern: Pattern, + pub annotation: Option, +} + +impl TypedUse { + pub fn find_node(&self, byte_index: u32) -> Option> { + for assignment in self.assignments.iter() { + if let Some(found) = assignment.pattern.find_node(byte_index) { + return Some(found); + } + if let Some(found) = assignment + .annotation + .as_ref() + .and_then(|annotation| annotation.find_node(byte_index, assignment.pattern.type_())) + { + return Some(found); + } + } + self.call.find_node(byte_index) + } } pub type TypedStatement = Statement, TypedExpr>; @@ -2270,11 +2393,22 @@ impl TypedStatement { } } + /// Returns the location of the last element of a statement. This means that + /// if the statement is a use you'll get the location of the last item at + /// the end of its block. + pub fn last_location(&self) -> SrcSpan { + match self { + Statement::Expression(expression) => expression.last_location(), + Statement::Assignment(assignment) => assignment.value.last_location(), + Statement::Use(use_) => use_.call.last_location(), + } + } + pub fn type_(&self) -> Arc { match self { Statement::Expression(expression) => expression.type_(), Statement::Assignment(assignment) => assignment.type_(), - Statement::Use(_use) => unreachable!("Use must not exist for typed code"), + Statement::Use(_use) => _use.call.type_(), } } @@ -2282,13 +2416,13 @@ impl TypedStatement { match self { Statement::Expression(expression) => expression.definition_location(), Statement::Assignment(_) => None, - Statement::Use(_) => None, + Statement::Use(use_) => use_.call.definition_location(), } } pub fn find_node(&self, byte_index: u32) -> Option> { match self { - Statement::Use(_) => None, + Statement::Use(use_) => use_.find_node(byte_index), Statement::Expression(expression) => expression.find_node(byte_index), Statement::Assignment(assignment) => assignment.find_node(byte_index).or_else(|| { if assignment.location.contains(byte_index) { @@ -2307,6 +2441,18 @@ impl TypedStatement { Statement::Use(use_) => use_.location, } } + + fn is_pure_value_constructor(&self) -> bool { + match self { + Statement::Expression(expression) => expression.is_pure_value_constructor(), + Statement::Assignment(assignment) => { + // A let assert is not considered a pure value constructor + // as it could crash the program! + !assignment.kind.is_assert() && assignment.value.is_pure_value_constructor() + } + Statement::Use(Use { call, .. }) => call.is_pure_value_constructor(), + } + } } #[derive(Debug, Clone, PartialEq, Eq)] @@ -2314,7 +2460,7 @@ pub struct Assignment { pub location: SrcSpan, pub value: Box, pub pattern: Pattern, - pub kind: AssignmentKind, + pub kind: AssignmentKind, pub annotation: Option, } @@ -2337,10 +2483,3 @@ impl TypedAssignment { self.value.type_() } } - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct UseAssignment { - pub location: SrcSpan, - pub pattern: UntypedPattern, - pub annotation: Option, -} diff --git a/compiler-core/src/ast/tests.rs b/compiler-core/src/ast/tests.rs index 75269c4d0..3bd5b1047 100644 --- a/compiler-core/src/ast/tests.rs +++ b/compiler-core/src/ast/tests.rs @@ -549,7 +549,7 @@ fn find_node_bool() { module: PRELUDE_MODULE_NAME.into(), variant_index: 0, }, - type_: type_::bool(), + type_: type_::bool_with_variant(Some(true)), }, name: "True".into(), }; diff --git a/compiler-core/src/ast/typed.rs b/compiler-core/src/ast/typed.rs index 357186da6..5737c0f8b 100644 --- a/compiler-core/src/ast/typed.rs +++ b/compiler-core/src/ast/typed.rs @@ -1,5 +1,7 @@ use std::sync::OnceLock; +use type_::{FieldMap, TypedCallArg}; + use super::*; use crate::type_::{bool, HasType, Type, ValueConstructorVariant}; @@ -133,11 +135,21 @@ pub enum TypedExpr { segments: Vec, }, + /// A record update gets desugared to a block expression of the form + /// + /// { + /// let _record = record + /// Constructor(explicit_arg: explicit_value(), implicit_arg: _record.implicit_arg) + /// } + /// + /// We still keep a separate `RecordUpdate` AST node for the same reasons as + /// we do for pipelines. RecordUpdate { location: SrcSpan, type_: Arc, - record: Box, - args: Vec, + record: TypedAssignment, + constructor: Box, + args: Vec>, }, NegateBool { @@ -188,8 +200,7 @@ impl TypedExpr { // We don't want to match on todos that were implicitly inserted // by the compiler as it would result in confusing suggestions // from the LSP. - TodoKind::EmptyFunction => None, - TodoKind::IncompleteUse => None, + TodoKind::EmptyFunction | TodoKind::EmptyBlock | TodoKind::IncompleteUse => None, }, Self::Pipeline { @@ -303,6 +314,7 @@ impl TypedExpr { Self::RecordUpdate { record, args, .. } => args .iter() + .filter(|arg| arg.implicit.is_none()) .find_map(|arg| arg.find_node(byte_index)) .or_else(|| record.find_node(byte_index)) .or_else(|| self.self_if_contains_location(byte_index)), @@ -549,19 +561,45 @@ impl TypedExpr { // long as it's not called! TypedExpr::ModuleSelect { .. } => true, - // A pipeline is a pure value constructor if its last step is a record builder. - // For example `wibble() |> wobble() |> Ok` - TypedExpr::Pipeline { finally, .. } => finally.is_record_builder(), + // A pipeline is a pure value constructor if its last step is a record builder, + // or a call to a fn expression that has a body comprised of just pure value + // constructors. For example: + // - `wibble() |> wobble() |> Ok` + // - `"hello" |> fn(s) { s <> " world!" }` + TypedExpr::Pipeline { finally, .. } => match finally.as_ref() { + TypedExpr::Fn { body, .. } => body.iter().all(|s| s.is_pure_value_constructor()), + fun => fun.is_pure_value_constructor(), + }, + + TypedExpr::Call { fun, .. } => match fun.as_ref() { + // Immediately calling a fn expression that has a body comprised of just + // pure value constructors is in itself pure. + TypedExpr::Fn { body, .. } => body.iter().all(|s| s.is_pure_value_constructor()), + // And calling a record builder is a pure value constructor: + // `Some(1)` + fun => fun.is_record_builder(), + }, - // A function call is a pure record constructor if it is a record builder. - // For example `Ok(wobble(wibble()))` - TypedExpr::Call { fun, .. } => fun.as_ref().is_record_builder(), + // A block is pure if all the statements it's made of are pure. + // For example `{ True 1 }` + TypedExpr::Block { statements, .. } => { + statements.iter().all(|s| s.is_pure_value_constructor()) + } - // Blocks and Cases are not considered pure value constructors for now, - // in the future we might want to do something a bit smarter and inspect - // their content to see if they end up returning something that is a - // pure value constructor and raise a warning for those as well. - TypedExpr::Block { .. } | TypedExpr::Case { .. } => false, + // A case is pure if its subject and all its branches are. + // For example: + // ```gleam + // case 1 + 1 { + // 0 -> 1 + // _ -> 2 + // } + // ``` + TypedExpr::Case { + subjects, clauses, .. + } => { + subjects.iter().all(|s| s.is_pure_value_constructor()) + && clauses.iter().all(|c| c.then.is_pure_value_constructor()) + } // `panic`, `todo`, and placeholders are never considered pure value constructors, // we don't want to raise a warning for an unused value if it's one @@ -570,6 +608,7 @@ impl TypedExpr { } } + #[must_use] pub fn is_record_builder(&self) -> bool { match self { TypedExpr::Call { fun, .. } => fun.is_record_builder(), @@ -607,6 +646,82 @@ impl TypedExpr { _ => false, } } + + pub(crate) fn call_arguments(&self) -> Option<&Vec> { + match self { + TypedExpr::Call { args, .. } => Some(args), + _ => None, + } + } + + pub(crate) fn fn_expression_body(&self) -> Option<&Vec1> { + match self { + TypedExpr::Fn { body, .. } => Some(body), + _ => None, + } + } + + // If the expression is a fn or a block then returns the location of its + // last element, otherwise it returns the location of the whole expression. + pub fn last_location(&self) -> SrcSpan { + match self { + TypedExpr::Int { location, .. } + | TypedExpr::Float { location, .. } + | TypedExpr::String { location, .. } + | TypedExpr::Var { location, .. } + | TypedExpr::List { location, .. } + | TypedExpr::Call { location, .. } + | TypedExpr::BinOp { location, .. } + | TypedExpr::Case { location, .. } + | TypedExpr::RecordAccess { location, .. } + | TypedExpr::ModuleSelect { location, .. } + | TypedExpr::Tuple { location, .. } + | TypedExpr::TupleIndex { location, .. } + | TypedExpr::Todo { location, .. } + | TypedExpr::Panic { location, .. } + | TypedExpr::BitArray { location, .. } + | TypedExpr::RecordUpdate { location, .. } + | TypedExpr::NegateBool { location, .. } + | TypedExpr::NegateInt { location, .. } + | TypedExpr::Invalid { location, .. } + | TypedExpr::Pipeline { location, .. } => *location, + + TypedExpr::Block { statements, .. } => statements.last().last_location(), + TypedExpr::Fn { body, .. } => body.last().last_location(), + } + } + + pub fn field_map(&self) -> Option<&FieldMap> { + match self { + TypedExpr::Int { .. } + | TypedExpr::Float { .. } + | TypedExpr::String { .. } + | TypedExpr::Block { .. } + | TypedExpr::Pipeline { .. } + | TypedExpr::Fn { .. } + | TypedExpr::List { .. } + | TypedExpr::Call { .. } + | TypedExpr::BinOp { .. } + | TypedExpr::Case { .. } + | TypedExpr::RecordAccess { .. } + | TypedExpr::Tuple { .. } + | TypedExpr::TupleIndex { .. } + | TypedExpr::Todo { .. } + | TypedExpr::Panic { .. } + | TypedExpr::BitArray { .. } + | TypedExpr::RecordUpdate { .. } + | TypedExpr::NegateBool { .. } + | TypedExpr::NegateInt { .. } + | TypedExpr::Invalid { .. } => None, + + TypedExpr::Var { constructor, .. } => constructor.field_map(), + TypedExpr::ModuleSelect { constructor, .. } => match constructor { + ModuleValueConstructor::Record { field_map, .. } + | ModuleValueConstructor::Fn { field_map, .. } => field_map.as_ref(), + ModuleValueConstructor::Constant { .. } => None, + }, + } + } } impl<'a> From<&'a TypedExpr> for Located<'a> { diff --git a/compiler-core/src/ast/untyped.rs b/compiler-core/src/ast/untyped.rs index a620144a1..5a1adafcf 100644 --- a/compiler-core/src/ast/untyped.rs +++ b/compiler-core/src/ast/untyped.rs @@ -248,42 +248,6 @@ impl HasLocation for UntypedExpr { } } -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Use { - /// This is the expression with the untyped/typed code of the use callback - /// function. - /// - pub call: Box, - - /// This is the location of the whole use line, starting from the `use` - /// keyword and ending with the function call on the right hand side of - /// `<-`. - /// - /// ```gleam - /// use a <- reult.try(result) - /// ^^^^^^^^^^^^^^^^^^^^^^^^^^ - /// ``` - /// - pub location: SrcSpan, - - /// This is the SrcSpan of the patterns you find on the left hand side of - /// `<-` in a use expression. - /// - /// ```gleam - /// use pattern1, pattern2 <- todo - /// ^^^^^^^^^^^^^^^^^^ - /// ``` - /// - /// In case there's no patterns it will be corresponding to the SrcSpan of - /// the `use` keyword itself. - /// - pub assignments_location: SrcSpan, - - /// The patterns on the left hand side of `<-` in a use expression. - /// - pub assignments: Vec, -} - #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum FunctionLiteralKind { Capture, diff --git a/compiler-core/src/ast/visit.rs b/compiler-core/src/ast/visit.rs index 5503bde84..94d862ce0 100644 --- a/compiler-core/src/ast/visit.rs +++ b/compiler-core/src/ast/visit.rs @@ -40,7 +40,10 @@ use crate::{ analyse::Inferred, - type_::{ModuleValueConstructor, PatternConstructor, TypedCallArg, ValueConstructor}, + type_::{ + error::VariableOrigin, ModuleValueConstructor, PatternConstructor, TypedCallArg, + ValueConstructor, + }, }; use std::sync::Arc; @@ -50,9 +53,9 @@ use crate::type_::Type; use super::{ untyped::FunctionLiteralKind, AssignName, BinOp, BitArrayOption, CallArg, Definition, Pattern, - SrcSpan, Statement, TodoKind, TypeAst, TypedArg, TypedAssignment, TypedClause, TypedDefinition, - TypedExpr, TypedExprBitArraySegment, TypedFunction, TypedModule, TypedModuleConstant, - TypedPattern, TypedPatternBitArraySegment, TypedRecordUpdateArg, TypedStatement, Use, + SrcSpan, Statement, TodoKind, TypeAst, TypedArg, TypedAssignment, TypedClause, TypedCustomType, + TypedDefinition, TypedExpr, TypedExprBitArraySegment, TypedFunction, TypedModule, + TypedModuleConstant, TypedPattern, TypedPatternBitArraySegment, TypedStatement, TypedUse, }; pub trait Visit<'ast> { @@ -72,6 +75,10 @@ pub trait Visit<'ast> { visit_typed_module_constant(self, constant); } + fn visit_typed_custom_type(&mut self, custom_type: &'ast TypedCustomType) { + visit_typed_custom_type(self, custom_type); + } + fn visit_typed_expr(&mut self, expr: &'ast TypedExpr) { visit_typed_expr(self, expr); } @@ -264,10 +271,11 @@ pub trait Visit<'ast> { &mut self, location: &'ast SrcSpan, type_: &'ast Arc, - record: &'ast TypedExpr, - args: &'ast [TypedRecordUpdateArg], + record: &'ast TypedAssignment, + constructor: &'ast TypedExpr, + args: &'ast [TypedCallArg], ) { - visit_typed_expr_record_update(self, location, type_, record, args); + visit_typed_expr_record_update(self, location, type_, record, constructor, args); } fn visit_typed_expr_negate_bool(&mut self, location: &'ast SrcSpan, value: &'ast TypedExpr) { @@ -290,8 +298,8 @@ pub trait Visit<'ast> { visit_typed_assignment(self, assignment); } - fn visit_use(&mut self, use_: &'ast Use) { - visit_use(self, use_); + fn visit_typed_use(&mut self, use_: &'ast TypedUse) { + visit_typed_use(self, use_); } fn visit_typed_call_arg(&mut self, arg: &'ast TypedCallArg) { @@ -306,10 +314,6 @@ pub trait Visit<'ast> { visit_typed_expr_bit_array_segment(self, segment); } - fn visit_typed_record_update_arg(&mut self, arg: &'ast TypedRecordUpdateArg) { - visit_typed_record_update_arg(self, arg); - } - fn visit_typed_bit_array_option(&mut self, option: &'ast BitArrayOption) { visit_typed_bit_array_option(self, option); } @@ -335,8 +339,9 @@ pub trait Visit<'ast> { location: &'ast SrcSpan, name: &'ast EcoString, type_: &'ast Arc, + origin: &'ast VariableOrigin, ) { - visit_typed_pattern_variable(self, location, name, type_); + visit_typed_pattern_variable(self, location, name, type_, origin); } fn visit_typed_pattern_var_usage( @@ -492,7 +497,7 @@ where match def { Definition::Function(fun) => v.visit_typed_function(fun), Definition::TypeAlias(_typealias) => { /* TODO */ } - Definition::CustomType(_custom_type) => { /* TODO */ } + Definition::CustomType(custom_type) => v.visit_typed_custom_type(custom_type), Definition::Import(_import) => { /* TODO */ } Definition::ModuleConstant(constant) => v.visit_typed_module_constant(constant), } @@ -595,6 +600,12 @@ where { } +pub fn visit_typed_custom_type<'a, V>(_v: &mut V, _custom_type: &'a TypedCustomType) +where + V: Visit<'a> + ?Sized, +{ +} + pub fn visit_typed_expr<'a, V>(v: &mut V, node: &'a TypedExpr) where V: Visit<'a> + ?Sized, @@ -716,8 +727,9 @@ where location, type_, record, + constructor, args, - } => v.visit_typed_expr_record_update(location, type_, record, args), + } => v.visit_typed_expr_record_update(location, type_, record, constructor, args), TypedExpr::NegateBool { location, value } => { v.visit_typed_expr_negate_bool(location, value) } @@ -970,15 +982,17 @@ pub fn visit_typed_expr_bit_array<'a, V>( pub fn visit_typed_expr_record_update<'a, V>( v: &mut V, _location: &'a SrcSpan, - _typ: &'a Arc, - record: &'a TypedExpr, - args: &'a [TypedRecordUpdateArg], + _type: &'a Arc, + record: &'a TypedAssignment, + constructor: &'a TypedExpr, + args: &'a [TypedCallArg], ) where V: Visit<'a> + ?Sized, { - v.visit_typed_expr(record); + v.visit_typed_expr(constructor); + v.visit_typed_assignment(record); for arg in args { - v.visit_typed_record_update_arg(arg); + v.visit_typed_call_arg(arg); } } @@ -1003,7 +1017,7 @@ where match stmt { Statement::Expression(expr) => v.visit_typed_expr(expr), Statement::Assignment(assignment) => v.visit_typed_assignment(assignment), - Statement::Use(use_) => v.visit_use(use_), + Statement::Use(use_) => v.visit_typed_use(use_), } } @@ -1015,11 +1029,12 @@ where v.visit_typed_pattern(&assignment.pattern); } -pub fn visit_use<'a, V>(_v: &mut V, _use_: &'a Use) +pub fn visit_typed_use<'a, V>(v: &mut V, use_: &'a TypedUse) where V: Visit<'a> + ?Sized, { - /* TODO */ + v.visit_typed_expr(&use_.call); + // TODO: We should also visit the typed patterns!! } pub fn visit_typed_call_arg<'a, V>(v: &mut V, arg: &'a TypedCallArg) @@ -1054,13 +1069,6 @@ where } } -pub fn visit_typed_record_update_arg<'a, V>(v: &mut V, arg: &'a TypedRecordUpdateArg) -where - V: Visit<'a> + ?Sized, -{ - v.visit_typed_expr(&arg.value); -} - pub fn visit_typed_bit_array_option<'a, V>(v: &mut V, option: &'a BitArrayOption) where V: Visit<'a> + ?Sized, @@ -1111,7 +1119,8 @@ where location, name, type_, - } => v.visit_typed_pattern_variable(location, name, type_), + origin, + } => v.visit_typed_pattern_variable(location, name, type_, origin), Pattern::VarUsage { location, name, @@ -1197,6 +1206,7 @@ pub fn visit_typed_pattern_variable<'a, V>( _location: &'a SrcSpan, _name: &'a EcoString, _type: &'a Arc, + _origin: &'a VariableOrigin, ) where V: Visit<'a> + ?Sized, { diff --git a/compiler-core/src/ast_folder.rs b/compiler-core/src/ast_folder.rs index 587e80041..8d0c3df23 100644 --- a/compiler-core/src/ast_folder.rs +++ b/compiler-core/src/ast_folder.rs @@ -12,9 +12,10 @@ use crate::{ UntypedCustomType, UntypedDefinition, UntypedExpr, UntypedExprBitArraySegment, UntypedFunction, UntypedImport, UntypedModule, UntypedModuleConstant, UntypedPattern, UntypedPatternBitArraySegment, UntypedRecordUpdateArg, UntypedStatement, UntypedTypeAlias, - Use, UseAssignment, + UntypedUse, UntypedUseAssignment, Use, UseAssignment, }, build::Target, + type_::error::VariableOrigin, }; #[allow(dead_code)] @@ -606,6 +607,7 @@ pub trait UntypedExprFolder: TypeAstFolder + UntypedConstantFolder + PatternFold Statement::Use(Use { location, + right_hand_side_location, assignments_location, call, assignments, @@ -621,6 +623,7 @@ pub trait UntypedExprFolder: TypeAstFolder + UntypedConstantFolder + PatternFold let call = Box::new(self.fold_expr(*call)); Statement::Use(Use { location, + right_hand_side_location, assignments_location, call, assignments, @@ -630,7 +633,7 @@ pub trait UntypedExprFolder: TypeAstFolder + UntypedConstantFolder + PatternFold } /// You probably don't want to override this method. - fn fold_use_assignment(&mut self, use_: UseAssignment) -> UseAssignment { + fn fold_use_assignment(&mut self, use_: UntypedUseAssignment) -> UntypedUseAssignment { let UseAssignment { location, pattern, @@ -836,7 +839,7 @@ pub trait UntypedExprFolder: TypeAstFolder + UntypedConstantFolder + PatternFold assignment } - fn fold_use(&mut self, use_: Use) -> Use { + fn fold_use(&mut self, use_: UntypedUse) -> UntypedUse { use_ } } @@ -1113,7 +1116,8 @@ pub trait PatternFolder { location, name, type_: (), - } => self.fold_pattern_var(location, name), + origin, + } => self.fold_pattern_var(location, name, origin), Pattern::VarUsage { location, @@ -1198,11 +1202,17 @@ pub trait PatternFolder { Pattern::String { location, value } } - fn fold_pattern_var(&mut self, location: SrcSpan, name: EcoString) -> UntypedPattern { + fn fold_pattern_var( + &mut self, + location: SrcSpan, + name: EcoString, + origin: VariableOrigin, + ) -> UntypedPattern { Pattern::Variable { location, name, type_: (), + origin, } } diff --git a/compiler-core/src/build.rs b/compiler-core/src/build.rs index 66c9d82cb..76dc41bd5 100644 --- a/compiler-core/src/build.rs +++ b/compiler-core/src/build.rs @@ -355,6 +355,7 @@ pub enum Located<'a> { Arg(&'a TypedArg), Annotation(SrcSpan, std::sync::Arc), UnqualifiedImport(UnqualifiedImport<'a>), + Label(SrcSpan, std::sync::Arc), } impl<'a> Located<'a> { @@ -408,6 +409,7 @@ impl<'a> Located<'a> { }), Self::Arg(_) => None, Self::Annotation(_, type_) => self.type_location(importable_modules, type_.clone()), + Self::Label(_, _) => None, } } } diff --git a/compiler-core/src/build/native_file_copier.rs b/compiler-core/src/build/native_file_copier.rs index b596b07ab..e850cdf7b 100644 --- a/compiler-core/src/build/native_file_copier.rs +++ b/compiler-core/src/build/native_file_copier.rs @@ -1,12 +1,13 @@ #[cfg(test)] mod tests; -use std::collections::HashSet; +use std::collections::{HashMap, HashSet}; use camino::{Utf8Path, Utf8PathBuf}; +use ecow::{eco_format, EcoString}; use crate::{ - io::{FileSystemReader, FileSystemWriter}, + io::{DirWalker, FileSystemReader, FileSystemWriter}, Error, Result, }; @@ -21,6 +22,7 @@ pub(crate) struct NativeFileCopier<'a, IO> { root: &'a Utf8Path, destination_dir: &'a Utf8Path, seen_native_files: HashSet, + seen_modules: HashMap, to_compile: Vec, elixir_files_copied: bool, } @@ -36,6 +38,7 @@ where destination_dir: out, to_compile: Vec::new(), seen_native_files: HashSet::new(), + seen_modules: HashMap::new(), elixir_files_copied: false, } } @@ -57,6 +60,9 @@ where self.copy_files(&test)?; } + // Sort for deterministic output + self.to_compile.sort_unstable(); + Ok(CopiedNativeFiles { to_compile: self.to_compile, any_elixir: self.elixir_files_copied, @@ -64,11 +70,9 @@ where } fn copy_files(&mut self, src_root: &Utf8Path) -> Result<()> { - let mut check_elixir_libs = true; - - for entry in self.io.read_dir(src_root)? { - let path = entry.expect("copy_native_files dir_entry").pathbuf; - self.copy(path, src_root)?; + let mut dir_walker = DirWalker::new(src_root.to_path_buf()); + while let Some(path) = dir_walker.next_file(&self.io)? { + self.copy(path, &src_root)?; } Ok(()) } @@ -76,6 +80,20 @@ where fn copy(&mut self, file: Utf8PathBuf, src_root: &Utf8Path) -> Result<()> { let extension = file.extension().unwrap_or_default(); + let relative_path = file + .strip_prefix(src_root) + .expect("copy_native_files strip prefix") + .to_path_buf(); + + // No need to run duplicate native file checks for .gleam files, but we + // still need to check for conflicting `.gleam` and `.mjs` files, so we + // add a special case for `.gleam`. + if extension == "gleam" { + self.check_for_conflicting_javascript_modules(&relative_path)?; + + return Ok(()); + } + // Skip unknown file formats that are not supported native files if !matches!( extension, @@ -84,15 +102,21 @@ where return Ok(()); } - let relative_path = file - .strip_prefix(src_root) - .expect("copy_native_files strip prefix") - .to_path_buf(); let destination = self.destination_dir.join(&relative_path); // Check that this native file was not already copied self.check_for_duplicate(&relative_path)?; + // Check for JavaScript modules conflicting between each other within + // the same relative path. We need to do this as '.gleam' files can + // also cause a conflict, despite not being native files, as they are + // compiled to `.mjs`. + self.check_for_conflicting_javascript_modules(&relative_path)?; + + // Check for Erlang modules conflicting between each other anywhere in + // the tree. + self.check_for_conflicting_erlang_modules(&relative_path)?; + // If the source file's mtime is older than the destination file's mtime // then it has not changed and as such does not need to be copied. // @@ -106,6 +130,12 @@ where } tracing::debug!(?file, "copying_native_file"); + + // Ensure destination exists (subdir might not exist yet in the output) + if let Some(parent) = destination.parent() { + self.io.mkdir(parent)?; + } + self.io.copy(&file, &destination)?; self.elixir_files_copied = self.elixir_files_copied || extension == "ex"; @@ -125,4 +155,82 @@ where } Ok(()) } + + /// Gleam files are compiled to `.mjs` files, which must not conflict with + /// an FFI `.mjs` file with the same name, so we check for this case here. + fn check_for_conflicting_javascript_modules( + &mut self, + relative_path: &Utf8PathBuf, + ) -> Result<(), Error> { + let mjs_path = match relative_path.extension() { + Some("gleam") => eco_format!("{}", relative_path.with_extension("mjs")), + Some("mjs") => eco_format!("{}", relative_path), + _ => return Ok(()), + }; + + // Insert the full relative `.mjs` path in `seen_modules` as there is + // no conflict if two `.mjs` files have the same name but are in + // different subpaths, unlike Erlang files. + let existing = self + .seen_modules + .insert(mjs_path.clone(), relative_path.clone()); + + // If there was no already existing one then there's no problem. + let Some(existing) = existing else { + return Ok(()); + }; + + let existing_is_gleam = existing.extension() == Some("gleam"); + if existing_is_gleam || relative_path.extension() == Some("gleam") { + let (gleam_file, native_file) = if existing_is_gleam { + (&existing, relative_path) + } else { + (relative_path, &existing) + }; + return Err(Error::ClashingGleamModuleAndNativeFileName { + module: eco_format!("{}", gleam_file.with_extension("")), + gleam_file: gleam_file.clone(), + native_file: native_file.clone(), + }); + } + + // The only way for two `.mjs` files to clash is by having + // the exact same path. + assert_eq!(&existing, relative_path); + return Err(Error::DuplicateSourceFile { + file: existing.to_string(), + }); + } + + /// Erlang module files cannot have the same name regardless of their + /// relative positions within the project. Ensure we raise an error if the + /// user attempts to create `.erl` files with the same name. + fn check_for_conflicting_erlang_modules( + &mut self, + relative_path: &Utf8PathBuf, + ) -> Result<(), Error> { + // Ideally we'd check for `.gleam` files here as well. However, it is + // actually entirely legitimate to receive precompiled `.erl` files for + // each `.gleam` file from Hex, so this would prompt an error for every + // package downloaded from Hex, which we do not want. + if !matches!(relative_path.extension(), Some("erl")) { + return Ok(()); + } + + // Insert just the `.erl` module filename in `seen_modules` instead of + // its full relative path, because `.erl` files with the same name + // cause a conflict when targetting Erlang regardless of subpath. + let erl_file = relative_path.file_name().expect("path has file name"); + let erl_string = eco_format!("{}", erl_file); + + if let Some(first) = self.seen_modules.insert(erl_string, relative_path.clone()) { + return Err(Error::DuplicateNativeErlangModule { + module: eco_format!("{}", relative_path.file_stem().expect("path has file stem")), + first, + second: relative_path.clone(), + }); + } + + Ok(()) + } } diff --git a/compiler-core/src/build/native_file_copier/tests.rs b/compiler-core/src/build/native_file_copier/tests.rs index df349a96a..78b048173 100644 --- a/compiler-core/src/build/native_file_copier/tests.rs +++ b/compiler-core/src/build/native_file_copier/tests.rs @@ -135,6 +135,61 @@ fn typescript_files_are_copied_from_test() { ); } +#[test] +fn all_javascript_files_are_copied_from_src_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/abc/def/wibble.mjs"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/src/abc/ghi/wibble.js"), "2") + .unwrap(); + fs.write(&Utf8Path::new("/src/def/wobble.ts"), "3").unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(!copied.any_elixir); + assert!(copied.to_compile.is_empty()); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/src/abc/def/wibble.mjs"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.mjs"), "1".into()), + (Utf8PathBuf::from("/src/abc/ghi/wibble.js"), "2".into()), + (Utf8PathBuf::from("/out/abc/ghi/wibble.js"), "2".into()), + (Utf8PathBuf::from("/src/def/wobble.ts"), "3".into()), + (Utf8PathBuf::from("/out/def/wobble.ts"), "3".into()) + ]), + fs.into_contents(), + ); +} + +#[test] +fn all_javascript_files_are_copied_from_test_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/test/abc/def/wibble.mjs"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/test/abc/ghi/wibble.js"), "2") + .unwrap(); + fs.write(&Utf8Path::new("/test/def/wobble.ts"), "3") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(!copied.any_elixir); + assert!(copied.to_compile.is_empty()); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/test/abc/def/wibble.mjs"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.mjs"), "1".into()), + (Utf8PathBuf::from("/test/abc/ghi/wibble.js"), "2".into()), + (Utf8PathBuf::from("/out/abc/ghi/wibble.js"), "2".into()), + (Utf8PathBuf::from("/test/def/wobble.ts"), "3".into()), + (Utf8PathBuf::from("/out/def/wobble.ts"), "3".into()) + ]), + fs.into_contents(), + ); +} + #[test] fn erlang_header_files_are_copied_from_src() { let fs = InMemoryFileSystem::new(); @@ -249,6 +304,85 @@ fn elixir_files_are_copied_from_test() { ); } +#[test] +fn all_erlang_files_are_copied_from_src_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/abc/def/wibble.erl"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/src/abc/ghi/wibble_header.hrl"), "2") + .unwrap(); + fs.write(&Utf8Path::new("/src/def/wobble.ex"), "3").unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(copied.any_elixir); + assert_eq!( + copied.to_compile, + vec![ + Utf8PathBuf::from("abc/def/wibble.erl"), + Utf8PathBuf::from("def/wobble.ex") + ] + ); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/src/abc/def/wibble.erl"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.erl"), "1".into()), + ( + Utf8PathBuf::from("/src/abc/ghi/wibble_header.hrl"), + "2".into() + ), + ( + Utf8PathBuf::from("/out/abc/ghi/wibble_header.hrl"), + "2".into() + ), + (Utf8PathBuf::from("/src/def/wobble.ex"), "3".into()), + (Utf8PathBuf::from("/out/def/wobble.ex"), "3".into()) + ]), + fs.into_contents(), + ); +} + +#[test] +fn all_erlang_files_are_copied_from_test_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/test/abc/def/wibble.erl"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/test/abc/ghi/wibble_header.hrl"), "2") + .unwrap(); + fs.write(&Utf8Path::new("/test/def/wobble.ex"), "3") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(copied.any_elixir); + assert_eq!( + copied.to_compile, + vec![ + Utf8PathBuf::from("abc/def/wibble.erl"), + Utf8PathBuf::from("def/wobble.ex") + ] + ); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/test/abc/def/wibble.erl"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.erl"), "1".into()), + ( + Utf8PathBuf::from("/test/abc/ghi/wibble_header.hrl"), + "2".into() + ), + ( + Utf8PathBuf::from("/out/abc/ghi/wibble_header.hrl"), + "2".into() + ), + (Utf8PathBuf::from("/test/def/wobble.ex"), "3".into()), + (Utf8PathBuf::from("/out/def/wobble.ex"), "3".into()) + ]), + fs.into_contents(), + ); +} + #[test] fn other_files_are_ignored() { let fs = InMemoryFileSystem::new(); @@ -322,3 +456,97 @@ fn duplicate_native_files_result_in_an_error() { let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); assert!(copier.run().is_err()); } + +#[test] +fn conflicting_erlang_modules_in_src_result_in_an_error() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/a/b/c/wibble.erl"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/src/e/f/wibble.erl"), "1") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + assert!(copier.run().is_err()); +} + +#[test] +fn conflicting_erlang_modules_in_src_and_test_result_in_an_error() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/a/b/c/wibble.erl"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/test/e/f/wibble.erl"), "1") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + assert!(copier.run().is_err()); +} + +#[test] +fn conflicting_gleam_and_javascript_modules_result_in_an_error() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/wibble.gleam"), "1").unwrap(); + fs.write(&Utf8Path::new("/src/wibble.mjs"), "1").unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + assert!(copier.run().is_err()); +} + +#[test] +fn differently_nested_gleam_and_javascript_modules_with_same_name_are_ok() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/a/b/c/wibble.gleam"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/src/d/e/wibble.mjs"), "1") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + assert!(copier.run().is_ok()); +} + +#[test] +fn glistix_all_nix_files_are_copied_from_src_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/src/abc/def/wibble.nix"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/src/def/wobble.nix"), "2") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(!copied.any_elixir); + assert!(copied.to_compile.is_empty()); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/src/abc/def/wibble.nix"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.nix"), "1".into()), + (Utf8PathBuf::from("/src/def/wobble.nix"), "2".into()), + (Utf8PathBuf::from("/out/def/wobble.nix"), "2".into()) + ]), + fs.into_contents(), + ); +} + +#[test] +fn glistix_all_nix_files_are_copied_from_test_subfolders() { + let fs = InMemoryFileSystem::new(); + fs.write(&Utf8Path::new("/test/abc/def/wibble.nix"), "1") + .unwrap(); + fs.write(&Utf8Path::new("/test/def/wobble.nix"), "2") + .unwrap(); + + let copier = NativeFileCopier::new(fs.clone(), root(), root_out()); + let copied = copier.run().unwrap(); + + assert!(!copied.any_elixir); + assert!(copied.to_compile.is_empty()); + assert_eq!( + HashMap::from([ + (Utf8PathBuf::from("/test/abc/def/wibble.nix"), "1".into()), + (Utf8PathBuf::from("/out/abc/def/wibble.nix"), "1".into()), + (Utf8PathBuf::from("/test/def/wobble.nix"), "2".into()), + (Utf8PathBuf::from("/out/def/wobble.nix"), "2".into()) + ]), + fs.into_contents(), + ); +} diff --git a/compiler-core/src/build/package_loader.rs b/compiler-core/src/build/package_loader.rs index ad7335a93..dab30a441 100644 --- a/compiler-core/src/build/package_loader.rs +++ b/compiler-core/src/build/package_loader.rs @@ -20,7 +20,9 @@ use crate::{ config::PackageConfig, dep_tree, error::{FileIoAction, FileKind, ImportCycleLocationDetails}, - io::{CommandExecutor, FileSystemReader, FileSystemWriter}, + io::{ + gleam_cache_files, gleam_source_files, CommandExecutor, FileSystemReader, FileSystemWriter, + }, metadata, type_, uid::UniqueIdGenerator, warning::WarningEmitter, @@ -110,6 +112,14 @@ where // which should be loaded. let mut inputs = self.read_sources_and_caches()?; + // Check for any removed modules, by looking at cache files that don't exist in inputs + for cache_file in gleam_cache_files(&self.io, &self.artefact_directory) { + let module = module_name(&self.artefact_directory, &cache_file); + if (!inputs.contains_key(&module)) { + self.stale_modules.add(module); + } + } + // Determine order in which modules are to be processed let mut dep_location_map = HashMap::new(); let deps = inputs @@ -233,7 +243,7 @@ where }; // Src - for path in self.io.gleam_source_files(&src) { + for path in gleam_source_files(&self.io, &src) { // If the there is a .gleam file with a path that would be an // invalid module name it does not get loaded. For example, if it // has a uppercase letter in it. @@ -254,7 +264,7 @@ where loader.origin = Origin::Test; loader.source_directory = &test; - for path in self.io.gleam_source_files(&test) { + for path in gleam_source_files(&self.io, &test) { if !self.is_gleam_path(&path, &test) { self.warnings.emit(crate::Warning::InvalidSource { path }); continue; diff --git a/compiler-core/src/build/package_loader/tests.rs b/compiler-core/src/build/package_loader/tests.rs index 6eece9e24..a94849084 100644 --- a/compiler-core/src/build/package_loader/tests.rs +++ b/compiler-core/src/build/package_loader/tests.rs @@ -218,6 +218,29 @@ fn module_is_stale_if_deps_are_stale() { assert_eq!(loaded.cached, vec![EcoString::from("three")]); } +#[test] +fn module_is_stale_if_deps_removed() { + let fs = InMemoryFileSystem::new(); + let root = Utf8Path::new("/"); + let artefact = Utf8Path::new("/artefact"); + + // Source is removed, cache is present + write_cache(&fs, "one", 0, vec![], TEST_SOURCE_1); + + // Cache is fresh but dep is removed + write_src(&fs, "/src/two.gleam", 1, "import one"); + write_cache( + &fs, + "two", + 2, + vec![(EcoString::from("one"), SrcSpan { start: 0, end: 0 })], + "import one", + ); + + let loaded = run_loader(fs, root, artefact); + assert_eq!(loaded.to_compile, vec![EcoString::from("two")]); +} + #[test] fn module_continues_to_be_stale_if_deps_get_updated() { let fs = InMemoryFileSystem::new(); diff --git a/compiler-core/src/build/project_compiler.rs b/compiler-core/src/build/project_compiler.rs index 5da2288f0..5c2a3cc43 100644 --- a/compiler-core/src/build/project_compiler.rs +++ b/compiler-core/src/build/project_compiler.rs @@ -364,6 +364,7 @@ where ("ERL_LIBS", "../*/ebin".into()), ("REBAR_BARE_COMPILER_OUTPUT_DIR", package_build.to_string()), ("REBAR_PROFILE", "prod".into()), + ("REBAR_SKIP_PROJECT_PLUGINS", "true".into()), ("TERM", "dumb".into()), ]; let args = [ diff --git a/compiler-core/src/config.rs b/compiler-core/src/config.rs index 0465c839e..9e6480256 100644 --- a/compiler-core/src/config.rs +++ b/compiler-core/src/config.rs @@ -138,14 +138,14 @@ where impl PackageConfig { pub fn dependencies_for(&self, mode: Mode) -> Result { match mode { - Mode::Dev | Mode::Lsp => self.all_drect_dependencies(), + Mode::Dev | Mode::Lsp => self.all_direct_dependencies(), Mode::Prod => Ok(self.dependencies.clone()), } } // Return all the dependencies listed in the configuration, that is, all the // direct dependencies, both in the `dependencies` and `dev-dependencies`. - pub fn all_drect_dependencies(&self) -> Result { + pub fn all_direct_dependencies(&self) -> Result { let mut deps = HashMap::with_capacity(self.dependencies.len() + self.dev_dependencies.len()); for (name, requirement) in self.dependencies.iter().chain(&self.dev_dependencies) { @@ -186,7 +186,7 @@ impl PackageConfig { match manifest { None => Ok(HashMap::new()), Some(manifest) => { - StalePackageRemover::fresh_and_locked(&self.all_drect_dependencies()?, manifest) + StalePackageRemover::fresh_and_locked(&self.all_direct_dependencies()?, manifest) } } } @@ -341,7 +341,7 @@ fn locked_no_changes() { ] .into(); let manifest = Manifest { - requirements: config.all_drect_dependencies().unwrap(), + requirements: config.all_direct_dependencies().unwrap(), packages: vec![ manifest_package("prod1", "1.1.0", &[]), manifest_package("prod2", "1.2.0", &[]), @@ -367,7 +367,7 @@ fn locked_some_removed() { config.dependencies = [("prod1".into(), Requirement::hex("~> 1.0"))].into(); config.dev_dependencies = [("dev2".into(), Requirement::hex("~> 2.0"))].into(); let manifest = Manifest { - requirements: config.all_drect_dependencies().unwrap(), + requirements: config.all_direct_dependencies().unwrap(), packages: vec![ manifest_package("prod1", "1.1.0", &[]), manifest_package("prod2", "1.2.0", &[]), // Not in config @@ -959,7 +959,7 @@ mod package_name { Ok(name.into()) } else { let error = - "Package names may only container lowercase letters, numbers, and underscores"; + "Package names may only contain lowercase letters, numbers, and underscores"; Err(serde::de::Error::custom(error)) } } @@ -974,7 +974,7 @@ name = "one-two" toml::from_str::(input) .unwrap_err() .to_string(), - "Package names may only container lowercase letters, numbers, and underscores for key `name` at line 1 column 1" + "Package names may only contain lowercase letters, numbers, and underscores for key `name` at line 1 column 1" ) } @@ -987,6 +987,6 @@ name = "1" toml::from_str::(input) .unwrap_err() .to_string(), - "Package names may only container lowercase letters, numbers, and underscores for key `name` at line 1 column 1" + "Package names may only contain lowercase letters, numbers, and underscores for key `name` at line 1 column 1" ) } diff --git a/compiler-core/src/docs.rs b/compiler-core/src/docs.rs index 4bdf025ce..1511d5081 100644 --- a/compiler-core/src/docs.rs +++ b/compiler-core/src/docs.rs @@ -74,6 +74,12 @@ pub fn generate_html( path, }); + let host = if is_hex_publish == DocContext::HexPublish { + "https://hexdocs.pm" + } else { + "" + }; + // https://github.com/gleam-lang/gleam/issues/3020 let links: Vec<_> = match is_hex_publish { DocContext::HexPublish => doc_links @@ -119,6 +125,7 @@ pub fn generate_html( "index" => config.description.to_string().clone(), _other => "".to_owned(), }; + let path = Utf8PathBuf::from(&page.path); let temp = PageTemplate { gleam_version: COMPILER_VERSION, @@ -128,14 +135,16 @@ pub fn generate_html( project_name: &config.name, page_title: &page_title, page_meta_description: &page_meta_description, + file_path: &path.clone(), project_version: &config.version.to_string(), content: rendered_content, rendering_timestamp: &rendering_timestamp, + host, unnest: &unnest, }; files.push(OutputFile { - path: Utf8PathBuf::from(&page.path), + path, content: Content::Text(temp.render().expect("Page template rendering")), }); @@ -252,9 +261,11 @@ pub fn generate_html( let page_title = format!("{} · {} · v{}", name, config.name, config.version); let page_meta_description = ""; + let path = Utf8PathBuf::from(format!("{}.html", module.name)); let template = ModuleTemplate { gleam_version: COMPILER_VERSION, + host, unnest, links: &links, pages: &pages, @@ -263,7 +274,8 @@ pub fn generate_html( project_name: &config.name, page_title: &page_title, page_meta_description, - module_name: name, + module_name: EcoString::from(&name), + file_path: &path.clone(), project_version: &config.version.to_string(), functions, types, @@ -272,7 +284,7 @@ pub fn generate_html( }; files.push(OutputFile { - path: Utf8PathBuf::from(format!("{}.html", module.name)), + path, content: Content::Text( template .render() @@ -783,8 +795,10 @@ struct Constant<'a> { struct PageTemplate<'a> { gleam_version: &'a str, unnest: &'a str, + host: &'a str, page_title: &'a str, page_meta_description: &'a str, + file_path: &'a Utf8PathBuf, project_name: &'a str, project_version: &'a str, pages: &'a [Link], @@ -799,8 +813,10 @@ struct PageTemplate<'a> { struct ModuleTemplate<'a> { gleam_version: &'a str, unnest: String, + host: &'a str, page_title: &'a str, page_meta_description: &'a str, + file_path: &'a Utf8PathBuf, module_name: EcoString, project_name: &'a str, project_version: &'a str, diff --git a/compiler-core/src/docs/snapshots/glistix_core__docs__tests__canonical_link.snap b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__canonical_link.snap new file mode 100644 index 000000000..99284642e --- /dev/null +++ b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__canonical_link.snap @@ -0,0 +1,1055 @@ +--- +source: compiler-core/src/docs/tests.rs +expression: "compile_with_markdown_pages(config, modules, pages,\nCompileWithMarkdownPagesOpts::default())" +--- +//// LICENSE.html + + + + + + + LICENSE · test_project_name · v0.1.0 + + + + + + + + + + + + + + + + +
+ + +
+ +

LICENSE

+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + + +//// app.html + + + + + + + app Β· test_project_name Β· v0.1.0 + + + + + + + + + + + + + + + + +
+ + +
+ +

+ app + +

+ + + + + + + +
+

+ Functions + +

+ +
+
+

+ + one + +

+ +
+ +
pub fn one() -> Int
+ +

Here is some documentation

+
+
+ +
+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + + +//// gleam/otp/actor.html + + + + + + + gleam/otp/actor Β· test_project_name Β· v0.1.0 + + + + + + + + + + + + + + + + +
+ + +
+ +

+ gleam/otp/actor + +

+ + + + + + + +
+

+ Functions + +

+ +
+
+

+ + one + +

+ +
+ +
pub fn one() -> Int
+ +

Here is some documentation

+
+
+ +
+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + diff --git a/compiler-core/src/docs/snapshots/glistix_core__docs__tests__discarded_arguments_are_not_shown.snap b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__discarded_arguments_are_not_shown.snap index 7d4f91290..cdf66fb1c 100644 --- a/compiler-core/src/docs/snapshots/glistix_core__docs__tests__discarded_arguments_are_not_shown.snap +++ b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__discarded_arguments_are_not_shown.snap @@ -9,7 +9,7 @@ expression: "compile(config, modules)" - app Β· Β· v0.1.49 + app Β· test_project_name Β· v0.1.49 @@ -18,6 +18,7 @@ expression: "compile(config, modules)" between multiple versions of the same package. --> + + + + + + + + + + + + + + + + + + +
+ + +
+ +

LICENSE

+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + + +//// app.html + + + + + + + app Β· test_project_name Β· v0.1.0 + + + + + + + + + + + + + + + + +
+ + +
+ +

+ app + +

+ + + + + + + +
+

+ Functions + +

+ +
+
+

+ + one + +

+ +
+ +
pub fn one() -> Int
+ +

Here is some documentation

+
+
+ +
+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + + +//// gleam/otp/actor.html + + + + + + + gleam/otp/actor Β· test_project_name Β· v0.1.0 + + + + + + + + + + + + + + + + +
+ + +
+ +

+ gleam/otp/actor + +

+ + + + + + + +
+

+ Functions + +

+ +
+
+

+ + one + +

+ +
+ +
pub fn one() -> Int
+ +

Here is some documentation

+
+
+ +
+ + +
+
+
+ + + ✨ +
+
Lucy
+
says
+
trans
+
rights
+
now
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search + + + + + + + Document + + + + + + + + + + + + + + + + + + + + + + diff --git a/compiler-core/src/docs/snapshots/glistix_core__docs__tests__tables.snap b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__tables.snap index f317785a6..0c0171df4 100644 --- a/compiler-core/src/docs/snapshots/glistix_core__docs__tests__tables.snap +++ b/compiler-core/src/docs/snapshots/glistix_core__docs__tests__tables.snap @@ -9,7 +9,7 @@ expression: "compile(config, modules)" - app Β· Β· v0.1.49 + app Β· test_project_name Β· v0.1.49 @@ -18,6 +18,7 @@ expression: "compile(config, modules)" between multiple versions of the same package. --> + + {% if !host.is_empty() && !project_name.is_empty() -%}{%- endif %}