[INFO] fetching crate comparable 0.5.4...
[INFO] documenting comparable-0.5.4 against master#ef324565d071c6d7e2477a195648549e33d6a465 for pr-121659-bump-pulldown-cmark
[INFO] extracting crate comparable 0.5.4 into /workspace/builds/worker-1-tc1/source
[INFO] validating manifest of crates.io crate comparable 0.5.4 on toolchain ef324565d071c6d7e2477a195648549e33d6a465
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate comparable 0.5.4
[INFO] finished tweaking crates.io crate comparable 0.5.4
[INFO] tweaked toml for crates.io crate comparable 0.5.4 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] Downloading crates ...
[INFO] [stderr] Downloaded comparable_helper v0.5.4
[INFO] [stderr] Downloaded comparable_derive v0.5.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 60c123fe8afdd008f25cb166afc432f476cca3ffd13b14afd4ee528f219c3a06
[INFO] running `Command { std: "docker" "start" "-a" "60c123fe8afdd008f25cb166afc432f476cca3ffd13b14afd4ee528f219c3a06", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "60c123fe8afdd008f25cb166afc432f476cca3ffd13b14afd4ee528f219c3a06", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "60c123fe8afdd008f25cb166afc432f476cca3ffd13b14afd4ee528f219c3a06", kill_on_drop: false }`
[INFO] [stdout] 60c123fe8afdd008f25cb166afc432f476cca3ffd13b14afd4ee528f219c3a06
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b71b3d43878d8714b2a728a95fdda040b6cf65cbf585ff2106839294d303c229
[INFO] running `Command { std: "docker" "start" "-a" "b71b3d43878d8714b2a728a95fdda040b6cf65cbf585ff2106839294d303c229", kill_on_drop: false }`
[INFO] [stderr] Compiling proc-macro2 v1.0.78
[INFO] [stderr] Compiling unicode-ident v1.0.12
[INFO] [stderr] Compiling syn v1.0.109
[INFO] [stderr] Compiling serde v1.0.197
[INFO] [stderr] Compiling unicode-segmentation v1.11.0
[INFO] [stderr] Checking diff v0.1.13
[INFO] [stderr] Checking yansi v0.5.1
[INFO] [stderr] Checking pretty_assertions v1.4.0
[INFO] [stderr] Compiling convert_case v0.6.0
[INFO] [stderr] Compiling quote v1.0.35
[INFO] [stderr] Compiling syn v2.0.52
[INFO] [stderr] Compiling serde_derive v1.0.197
[INFO] [stderr] Compiling comparable_helper v0.5.4
[INFO] [stderr] Documenting comparable v0.5.4 (/opt/rustwide/workdir)
[INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.26s
[INFO] [stderr] Generated /opt/rustwide/target/doc/comparable/index.html
[INFO] running `Command { std: "docker" "inspect" "b71b3d43878d8714b2a728a95fdda040b6cf65cbf585ff2106839294d303c229", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b71b3d43878d8714b2a728a95fdda040b6cf65cbf585ff2106839294d303c229", kill_on_drop: false }`
[INFO] [stdout] b71b3d43878d8714b2a728a95fdda040b6cf65cbf585ff2106839294d303c229
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "DOCS_RS=1" "-e" "RUSTC_BOOTSTRAP=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+ef324565d071c6d7e2477a195648549e33d6a465" "rustdoc" "--lib" "-Zrustdoc-map" "-Z" "unstable-options" "--config" "build.rustdocflags=[\"-Z\", \"unstable-options\", \"--document-private-items\"]" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0e700ea27b7c0fc0d1745ab0c1a8e267e2bc5019de1a1e17a7ebe585f6d08c96
[INFO] running `Command { std: "docker" "start" "-a" "0e700ea27b7c0fc0d1745ab0c1a8e267e2bc5019de1a1e17a7ebe585f6d08c96", kill_on_drop: false }`
[INFO] [stderr] Documenting comparable v0.5.4 (/opt/rustwide/workdir)
[INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.41s
[INFO] [stderr] Generated /opt/rustwide/target/doc/comparable/index.html
[INFO] running `Command { std: "docker" "inspect" "0e700ea27b7c0fc0d1745ab0c1a8e267e2bc5019de1a1e17a7ebe585f6d08c96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0e700ea27b7c0fc0d1745ab0c1a8e267e2bc5019de1a1e17a7ebe585f6d08c96", kill_on_drop: false }`
[INFO] [stdout] 0e700ea27b7c0fc0d1745ab0c1a8e267e2bc5019de1a1e17a7ebe585f6d08c96
[INFO] documenting comparable-0.5.4 against try#223112bf1ca31911a6475910c77b36bfa127d5f8 for pr-121659-bump-pulldown-cmark
[INFO] extracting crate comparable 0.5.4 into /workspace/builds/worker-1-tc2/source
[INFO] validating manifest of crates.io crate comparable 0.5.4 on toolchain 223112bf1ca31911a6475910c77b36bfa127d5f8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+223112bf1ca31911a6475910c77b36bfa127d5f8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate comparable 0.5.4
[INFO] finished tweaking crates.io crate comparable 0.5.4
[INFO] tweaked toml for crates.io crate comparable 0.5.4 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+223112bf1ca31911a6475910c77b36bfa127d5f8" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+223112bf1ca31911a6475910c77b36bfa127d5f8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+223112bf1ca31911a6475910c77b36bfa127d5f8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0b469a6030f207f23ffb112fd8d183a51ba37837dae59823ce04c8d1453768fe
[INFO] running `Command { std: "docker" "start" "-a" "0b469a6030f207f23ffb112fd8d183a51ba37837dae59823ce04c8d1453768fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0b469a6030f207f23ffb112fd8d183a51ba37837dae59823ce04c8d1453768fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0b469a6030f207f23ffb112fd8d183a51ba37837dae59823ce04c8d1453768fe", kill_on_drop: false }`
[INFO] [stdout] 0b469a6030f207f23ffb112fd8d183a51ba37837dae59823ce04c8d1453768fe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+223112bf1ca31911a6475910c77b36bfa127d5f8" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5525fe4e9cd88df8c41ca37e5470c5ed81fa9b36cc5745bcd5e24210fb8b4df4
[INFO] running `Command { std: "docker" "start" "-a" "5525fe4e9cd88df8c41ca37e5470c5ed81fa9b36cc5745bcd5e24210fb8b4df4", kill_on_drop: false }`
[INFO] [stderr] Compiling proc-macro2 v1.0.78
[INFO] [stderr] Compiling unicode-ident v1.0.12
[INFO] [stderr] Compiling syn v1.0.109
[INFO] [stderr] Compiling unicode-segmentation v1.11.0
[INFO] [stderr] Compiling serde v1.0.197
[INFO] [stderr] Checking yansi v0.5.1
[INFO] [stderr] Checking diff v0.1.13
[INFO] [stderr] Checking pretty_assertions v1.4.0
[INFO] [stderr] Compiling convert_case v0.6.0
[INFO] [stderr] Compiling quote v1.0.35
[INFO] [stderr] Compiling syn v2.0.52
[INFO] [stderr] Compiling serde_derive v1.0.197
[INFO] [stderr] Compiling comparable_helper v0.5.4
[INFO] [stderr] Documenting comparable v0.5.4 (/opt/rustwide/workdir)
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:119:35
[INFO] [stdout] |
[INFO] [stdout] 119 | //! `Changed::Changed(_changes_)`.[^option]
[INFO] [stdout] | ^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees FootnoteReference(Borrowed("option")), new sees nothing
[INFO] [stdout] = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:121:5
[INFO] [stdout] |
[INFO] [stdout] 121 | //! [^option] `Changed` is just a different flavor of the `Option` type, created
[INFO] [stdout] | ^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees FootnoteReference(Borrowed("option")), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:131:5
[INFO] [stdout] |
[INFO] [stdout] 131 | //! How changes are represented can differ greatly between scalars, collections,
[INFO] [stdout] | _____^
[INFO] [stdout] 132 | | //! structs and enums, so more detail is given below in the section discussing
[INFO] [stdout] 133 | | //! each of these types.
[INFO] [stdout] 134 | | //!
[INFO] [stdout] 135 | | //! # Scalars
[INFO] [stdout] 136 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H1, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:135:5
[INFO] [stdout] |
[INFO] [stdout] 135 | //! # Scalars
[INFO] [stdout] | _____^
[INFO] [stdout] 136 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:137:5
[INFO] [stdout] |
[INFO] [stdout] 137 | //! [`Comparable`] traits have been implemented for all of the basic scalar types.
[INFO] [stdout] | ^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:142:5
[INFO] [stdout] |
[INFO] [stdout] 142 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 143 | | //! # use comparable::*;
[INFO] [stdout] 144 | | //! assert_changes!(&100, &100, Changed::Unchanged);
[INFO] [stdout] 145 | | //! assert_changes!(&100, &200, Changed::Changed(I32Change(100, 200)));
[INFO] [stdout] ... |
[INFO] [stdout] 154 | | //! # Vec and Set Collections
[INFO] [stdout] 155 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H1, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:154:5
[INFO] [stdout] |
[INFO] [stdout] 154 | //! # Vec and Set Collections
[INFO] [stdout] | _____^
[INFO] [stdout] 155 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:171:5
[INFO] [stdout] |
[INFO] [stdout] 171 | //! Here are a few examples, taken from the `comparable_test` test suite:
[INFO] [stdout] | _____^
[INFO] [stdout] 172 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:173:5
[INFO] [stdout] |
[INFO] [stdout] 173 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 174 | | //! # use comparable::*;
[INFO] [stdout] 175 | | //! # use std::collections::HashSet;
[INFO] [stdout] 176 | | //! // Vectors
[INFO] [stdout] ... |
[INFO] [stdout] 228 | | //! instead of 0, the resulting failure would look something like this:
[INFO] [stdout] 229 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:227:5
[INFO] [stdout] |
[INFO] [stdout] 227 | //! Note that if the first `VecChange::Change` above had used an index of 1
[INFO] [stdout] | _____^
[INFO] [stdout] 228 | | //! instead of 0, the resulting failure would look something like this:
[INFO] [stdout] 229 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:230:5
[INFO] [stdout] |
[INFO] [stdout] 230 | //! ```text
[INFO] [stdout] | _____^
[INFO] [stdout] 231 | | //! running 1 test
[INFO] [stdout] 232 | | //! test test_comparable_bar ... FAILED
[INFO] [stdout] 233 | | //!
[INFO] [stdout] ... |
[INFO] [stdout] 261 | | //! # Map Collections
[INFO] [stdout] 262 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H1, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed("text"))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:261:5
[INFO] [stdout] |
[INFO] [stdout] 261 | //! # Map Collections
[INFO] [stdout] | _____^
[INFO] [stdout] 262 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:272:5
[INFO] [stdout] |
[INFO] [stdout] 272 | //! Here are a few examples, taken from the `comparable_test` test suite:
[INFO] [stdout] | _____^
[INFO] [stdout] 273 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:274:5
[INFO] [stdout] |
[INFO] [stdout] 274 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 275 | | //! # use comparable::*;
[INFO] [stdout] 276 | | //! # use std::collections::HashMap;
[INFO] [stdout] 277 | | //! // HashMaps
[INFO] [stdout] ... |
[INFO] [stdout] 305 | | //! # Structures
[INFO] [stdout] 306 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H1, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:305:5
[INFO] [stdout] |
[INFO] [stdout] 305 | //! # Structures
[INFO] [stdout] | _____^
[INFO] [stdout] 306 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:314:5
[INFO] [stdout] |
[INFO] [stdout] 314 | //! Here is what deriving `Change` for a structure with multiple fields typically
[INFO] [stdout] | _____^
[INFO] [stdout] 315 | | //! produces:
[INFO] [stdout] 316 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:317:5
[INFO] [stdout] |
[INFO] [stdout] 317 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 318 | | //! # use comparable_derive::*;
[INFO] [stdout] 319 | | //! # use comparable::*;
[INFO] [stdout] 320 | | //! struct MyStruct {
[INFO] [stdout] ... |
[INFO] [stdout] 368 | | //! For structs with one field or no fields, see the related section below.
[INFO] [stdout] 369 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:368:5
[INFO] [stdout] |
[INFO] [stdout] 368 | //! For structs with one field or no fields, see the related section below.
[INFO] [stdout] | _____^
[INFO] [stdout] 369 | | //!
[INFO] [stdout] 370 | | //! ## Field attribute: `comparable_ignore`
[INFO] [stdout] 371 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:370:5
[INFO] [stdout] |
[INFO] [stdout] 370 | //! ## Field attribute: `comparable_ignore`
[INFO] [stdout] | _____^
[INFO] [stdout] 371 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:372:5
[INFO] [stdout] |
[INFO] [stdout] 372 | //! The first attribute macro you'll notice that can be applied to individual
[INFO] [stdout] | _____^
[INFO] [stdout] 373 | | //! fields is `#[comparable_ignore]`, which must be used if the type in question
[INFO] [stdout] 374 | | //! cannot be compared for differences.
[INFO] [stdout] 375 | | //!
[INFO] [stdout] 376 | | //! ## Field attribute: `comparable_synthetic`
[INFO] [stdout] 377 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:376:5
[INFO] [stdout] |
[INFO] [stdout] 376 | //! ## Field attribute: `comparable_synthetic`
[INFO] [stdout] | _____^
[INFO] [stdout] 377 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:378:5
[INFO] [stdout] |
[INFO] [stdout] 378 | //! The `#[comparable_synthetic { }]` attribute allows you to attach
[INFO] [stdout] | _____^
[INFO] [stdout] 379 | | //! one or more "synthetic properties" to a field, which are then considered in
[INFO] [stdout] 380 | | //! both descriptions and change sets, as if they were actual fields with the
[INFO] [stdout] 381 | | //! computed value. Here is an example:
[INFO] [stdout] ... |
[INFO] [stdout] 392 | | //! }
[INFO] [stdout] 393 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(CodeBlock(Fenced(Borrowed("")))), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:383:5
[INFO] [stdout] |
[INFO] [stdout] 383 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 384 | | //! # use comparable_derive::*;
[INFO] [stdout] 385 | | //! #[derive(Comparable)]
[INFO] [stdout] 386 | | //! pub struct Synthetics {
[INFO] [stdout] ... |
[INFO] [stdout] 392 | | //! }
[INFO] [stdout] 393 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:407:5
[INFO] [stdout] |
[INFO] [stdout] 407 | //! ## Deriving `Comparable` for structs: the `Desc` type
[INFO] [stdout] | _____^
[INFO] [stdout] 408 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:413:5
[INFO] [stdout] |
[INFO] [stdout] 413 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 414 | | //! # use comparable::*;
[INFO] [stdout] 415 | | //! struct MyStructDesc {
[INFO] [stdout] 416 | | //! bar: ::Desc,
[INFO] [stdout] ... |
[INFO] [stdout] 421 | | //! This process can be influenced using several attribute macros.
[INFO] [stdout] 422 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:421:5
[INFO] [stdout] |
[INFO] [stdout] 421 | //! This process can be influenced using several attribute macros.
[INFO] [stdout] | _____^
[INFO] [stdout] 422 | | //!
[INFO] [stdout] 423 | | //! ### Macro attribute: `self_describing`
[INFO] [stdout] 424 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H3, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:423:5
[INFO] [stdout] |
[INFO] [stdout] 423 | //! ### Macro attribute: `self_describing`
[INFO] [stdout] | _____^
[INFO] [stdout] 424 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:425:53
[INFO] [stdout] |
[INFO] [stdout] 425 | //! If the `self_describing` attribute is used, the [`Comparable::Desc`] type is
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:429:5
[INFO] [stdout] |
[INFO] [stdout] 429 | //! Note the following traits are required for self-describing types: `Clone`,
[INFO] [stdout] | _____^
[INFO] [stdout] 430 | | //! `Debug` and `PartialEq`.
[INFO] [stdout] 431 | | //!
[INFO] [stdout] 432 | | //! ### Macro attribute: `no_description`
[INFO] [stdout] 433 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H3, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:432:5
[INFO] [stdout] |
[INFO] [stdout] 432 | //! ### Macro attribute: `no_description`
[INFO] [stdout] | _____^
[INFO] [stdout] 433 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:437:5
[INFO] [stdout] |
[INFO] [stdout] 437 | //! [`Comparable::Desc`] type to be unit, and the [`Comparable::describe`] method
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:440:5
[INFO] [stdout] |
[INFO] [stdout] 440 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 441 | | //! type Desc = ();
[INFO] [stdout] 442 | | //!
[INFO] [stdout] 443 | | //! fn describe(&self) -> Self::Desc {
[INFO] [stdout] 444 | | //! ()
[INFO] [stdout] 445 | | //! }
[INFO] [stdout] 446 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("ignore")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:448:5
[INFO] [stdout] |
[INFO] [stdout] 448 | //! It is assumed that when this is appropriate, such values will never appear in
[INFO] [stdout] | _____^
[INFO] [stdout] 449 | | //! any change output, so consider a different approach if you see lots of units
[INFO] [stdout] 450 | | //! turning up.
[INFO] [stdout] 451 | | //!
[INFO] [stdout] 452 | | //! ### Macro attribute: `describe_type` and `describe_body`
[INFO] [stdout] 453 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H3, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:452:5
[INFO] [stdout] |
[INFO] [stdout] 452 | //! ### Macro attribute: `describe_type` and `describe_body`
[INFO] [stdout] | _____^
[INFO] [stdout] 453 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:455:27
[INFO] [stdout] |
[INFO] [stdout] 455 | //! should appear for the [`Comparable::Desc`] type and the body of the
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:458:5
[INFO] [stdout] |
[INFO] [stdout] 458 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 459 | | //! # use comparable_derive::*;
[INFO] [stdout] 460 | | //! #[derive(Comparable)]
[INFO] [stdout] 461 | | //! #[describe_type(T)]
[INFO] [stdout] ... |
[INFO] [stdout] 469 | | //! The following is generated:
[INFO] [stdout] 470 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed("ignore"))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:469:5
[INFO] [stdout] |
[INFO] [stdout] 469 | //! The following is generated:
[INFO] [stdout] | _____^
[INFO] [stdout] 470 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:471:5
[INFO] [stdout] |
[INFO] [stdout] 471 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 472 | | //! type Desc = T;
[INFO] [stdout] 473 | | //!
[INFO] [stdout] 474 | | //! fn describe(&self) -> Self::Desc {
[INFO] [stdout] 475 | | //! B
[INFO] [stdout] 476 | | //! }
[INFO] [stdout] 477 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("ignore")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:479:5
[INFO] [stdout] |
[INFO] [stdout] 479 | //! This also means that the expression argument passed to `describe_body` may
[INFO] [stdout] | _____^
[INFO] [stdout] 480 | | //! reference the `self` parameter. Here is a real-world use case:
[INFO] [stdout] 481 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:482:5
[INFO] [stdout] |
[INFO] [stdout] 482 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 483 | | //! # use comparable_derive::*;
[INFO] [stdout] 484 | | //! #[cfg_attr(feature = "comparable",
[INFO] [stdout] 485 | | //! derive(comparable::Comparable),
[INFO] [stdout] ... |
[INFO] [stdout] 493 | | //! ever display by their Merkle root hash.
[INFO] [stdout] 494 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:491:5
[INFO] [stdout] |
[INFO] [stdout] 491 | //! This same approach could be used to represent large blobs of data by their
[INFO] [stdout] | _____^
[INFO] [stdout] 492 | | //! checksum hash, for example, or large data structures that you don't need to
[INFO] [stdout] 493 | | //! ever display by their Merkle root hash.
[INFO] [stdout] 494 | | //!
[INFO] [stdout] 495 | | //! ### Macro attribute: `compare_default`
[INFO] [stdout] 496 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H3, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:495:5
[INFO] [stdout] |
[INFO] [stdout] 495 | //! ### Macro attribute: `compare_default`
[INFO] [stdout] | _____^
[INFO] [stdout] 496 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:498:5
[INFO] [stdout] |
[INFO] [stdout] 498 | //! [`Comparable::Desc`] type is defined to be the same as the
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:499:5
[INFO] [stdout] |
[INFO] [stdout] 499 | //! [`Comparable::Change`] type, with the [`Comparable::describe`] method being
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Change"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:502:5
[INFO] [stdout] |
[INFO] [stdout] 502 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 503 | | //! # use comparable::*;
[INFO] [stdout] 504 | | //! impl comparable::Comparable for MyStruct {
[INFO] [stdout] 505 | | //! type Desc = Self::Change;
[INFO] [stdout] ... |
[INFO] [stdout] 519 | | //! following section.
[INFO] [stdout] 520 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed("ignore"))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:517:5
[INFO] [stdout] |
[INFO] [stdout] 517 | //! Note that changes for structures are always a vector, since this allows
[INFO] [stdout] | _____^
[INFO] [stdout] 518 | | //! changes to be reported separately for each field. More on this in the
[INFO] [stdout] 519 | | //! following section.
[INFO] [stdout] 520 | | //!
[INFO] [stdout] 521 | | //! ## Macro attribute: `comparable_public` and `comparable_private`
[INFO] [stdout] 522 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:521:5
[INFO] [stdout] |
[INFO] [stdout] 521 | //! ## Macro attribute: `comparable_public` and `comparable_private`
[INFO] [stdout] | _____^
[INFO] [stdout] 522 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:523:36
[INFO] [stdout] |
[INFO] [stdout] 523 | //! By default, the auto-generated [`Comparable::Desc`] and [`Comparable::Change`]
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:530:5
[INFO] [stdout] |
[INFO] [stdout] 530 | //! ### Special case: Unit structs
[INFO] [stdout] | _____^
[INFO] [stdout] 531 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:535:5
[INFO] [stdout] |
[INFO] [stdout] 535 | //! ### Special case: Singleton structs
[INFO] [stdout] | _____^
[INFO] [stdout] 536 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H3, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:537:5
[INFO] [stdout] |
[INFO] [stdout] 537 | //! If a struct has only one fields, whether named or unnamed, it no longer makes
[INFO] [stdout] | _____^
[INFO] [stdout] 538 | | //! sense to use a vector of enum values to record what has changed. In this case
[INFO] [stdout] 539 | | //! the derivation becomes much simpler:
[INFO] [stdout] 540 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:541:5
[INFO] [stdout] |
[INFO] [stdout] 541 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 542 | | //! # use comparable_derive::*;
[INFO] [stdout] 543 | | //! # use comparable::*;
[INFO] [stdout] 544 | | //! struct MyStruct {
[INFO] [stdout] ... |
[INFO] [stdout] 575 | | //! ## Deriving `Comparable` for structs: the `Change` type
[INFO] [stdout] 576 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:575:5
[INFO] [stdout] |
[INFO] [stdout] 575 | //! ## Deriving `Comparable` for structs: the `Change` type
[INFO] [stdout] | _____^
[INFO] [stdout] 576 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:581:5
[INFO] [stdout] |
[INFO] [stdout] 581 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 582 | | //! # use comparable_derive::*;
[INFO] [stdout] 583 | | //! #[derive(Comparable)]
[INFO] [stdout] 584 | | //! struct MyStruct {
[INFO] [stdout] ... |
[INFO] [stdout] 587 | | //! }
[INFO] [stdout] 588 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:593:5
[INFO] [stdout] |
[INFO] [stdout] 593 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 594 | | //! #[derive(PartialEq, Debug)]
[INFO] [stdout] 595 | | //! enum MyStructChange {
[INFO] [stdout] 596 | | //! Bar(::Change),
[INFO] [stdout] ... |
[INFO] [stdout] 603 | | //! }
[INFO] [stdout] 604 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("ignore")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:612:5
[INFO] [stdout] |
[INFO] [stdout] 612 | //! Here is an abbreviated example of how this looks when asserting changes for a
[INFO] [stdout] | _____^
[INFO] [stdout] 613 | | //! struct with multiple fields:
[INFO] [stdout] 614 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:615:5
[INFO] [stdout] |
[INFO] [stdout] 615 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 616 | | //! assert_changes!(
[INFO] [stdout] 617 | | //! &initial_foo, &later_foo,
[INFO] [stdout] 618 | | //! Changed::Changed(vec![
[INFO] [stdout] ... |
[INFO] [stdout] 621 | | //! ]));
[INFO] [stdout] 622 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("ignore")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:624:5
[INFO] [stdout] |
[INFO] [stdout] 624 | //! If the field hasn't been changed it won't appear in the vector, and each field
[INFO] [stdout] | _____^
[INFO] [stdout] 625 | | //! appears at most once. The reason for taking this approach is that structures
[INFO] [stdout] 626 | | //! with many, many fields can be represented by a small change set if most of the
[INFO] [stdout] 627 | | //! other fields were left untouched.
[INFO] [stdout] 628 | | //!
[INFO] [stdout] 629 | | //! # Enumerations
[INFO] [stdout] 630 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H1, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:629:5
[INFO] [stdout] |
[INFO] [stdout] 629 | //! # Enumerations
[INFO] [stdout] | _____^
[INFO] [stdout] 630 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:639:5
[INFO] [stdout] |
[INFO] [stdout] 639 | //! Meanwhile an `enum` is a sum, or choice, among variants. However, some of
[INFO] [stdout] | _____^
[INFO] [stdout] 640 | | //! these variants can themselves contain groups of fields, as though there were
[INFO] [stdout] 641 | | //! an unnamed structure embedded in the variant. Consider the following `enum`:
[INFO] [stdout] 642 | | //!
[INFO] [stdout] ... |
[INFO] [stdout] 650 | | //! }
[INFO] [stdout] 651 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(CodeBlock(Fenced(Borrowed("")))), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:643:5
[INFO] [stdout] |
[INFO] [stdout] 643 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 644 | | //! # use comparable_derive::*;
[INFO] [stdout] 645 | | //! #[derive(Comparable)]
[INFO] [stdout] 646 | | //! enum MyEnum {
[INFO] [stdout] ... |
[INFO] [stdout] 650 | | //! }
[INFO] [stdout] 651 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:656:58
[INFO] [stdout] |
[INFO] [stdout] 656 | //! represented as independent types, so we can't define [`Comparable`] for them
[INFO] [stdout] | __________________________________________________________^
[INFO] [stdout] 657 | | //! and just compute the differences between the enum arguments. Nor can we just
[INFO] [stdout] 658 | | //! create a copy of the field type with a real name and generate [`Comparable`]
[INFO] [stdout] | |________________________________________________________________________________^
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Link { link_type: ShortcutUnknown, dest_url: Borrowed(""), title: Borrowed("Comparable"), id: Borrowed("`Comparable`") }), old sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable")))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:663:5
[INFO] [stdout] |
[INFO] [stdout] 663 | //! Instead, the following gets generated, which can end up being a bit verbose,
[INFO] [stdout] | _____^
[INFO] [stdout] 664 | | //! but captures the full nature of any differences:
[INFO] [stdout] 665 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:666:5
[INFO] [stdout] |
[INFO] [stdout] 666 | //! ```ignore
[INFO] [stdout] | _____^
[INFO] [stdout] 667 | | //! enum MyEnumChange {
[INFO] [stdout] 668 | | //! BothOne(::Change),
[INFO] [stdout] 669 | | //! BothTwo {
[INFO] [stdout] ... |
[INFO] [stdout] 685 | | //! either one or both of the fields may changed.
[INFO] [stdout] 686 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Paragraph), old sees Start(CodeBlock(Fenced(Borrowed("ignore"))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:687:5
[INFO] [stdout] |
[INFO] [stdout] 687 | //! Below is a full example of what gets derived for the enum above:
[INFO] [stdout] | _____^
[INFO] [stdout] 688 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:689:5
[INFO] [stdout] |
[INFO] [stdout] 689 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 690 | | //! # use comparable_derive::*;
[INFO] [stdout] 691 | | //! # use comparable::*;
[INFO] [stdout] 692 | | //! enum MyEnum {
[INFO] [stdout] ... |
[INFO] [stdout] 756 | | //! ## Deriving `Comparable` for enums: the `Desc` type
[INFO] [stdout] 757 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:756:5
[INFO] [stdout] |
[INFO] [stdout] 756 | //! ## Deriving `Comparable` for enums: the `Desc` type
[INFO] [stdout] | _____^
[INFO] [stdout] 757 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:762:5
[INFO] [stdout] |
[INFO] [stdout] 762 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 763 | | //! # use comparable::*;
[INFO] [stdout] 764 | | //! enum MyEnumDesc {
[INFO] [stdout] 765 | | //! Bar(::Desc),
[INFO] [stdout] 766 | | //! Baz { some_field: ::Desc }
[INFO] [stdout] 767 | | //! }
[INFO] [stdout] 768 | | //! ```
[INFO] [stdout] | |_______^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(CodeBlock(Fenced(Borrowed("")))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:777:5
[INFO] [stdout] |
[INFO] [stdout] 777 | //! ## Deriving `Comparable` for enums: the `Change` type
[INFO] [stdout] | _____^
[INFO] [stdout] 778 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:789:5
[INFO] [stdout] |
[INFO] [stdout] 789 | //! Note that `Both` has two forms: For variant with a single named or
[INFO] [stdout] | _____^
[INFO] [stdout] 790 | | //! unnamed field, it is simply the `Change` type associated with the original
[INFO] [stdout] 791 | | //! field type; for variants with multiple named or unnamed fields, each `Change`
[INFO] [stdout] 792 | | //! type is also wrapped in a `Changed` structure, to reflect whether that field
[INFO] [stdout] ... |
[INFO] [stdout] 795 | | //! ## Field attribute: `variant_struct_fields`
[INFO] [stdout] 796 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(Paragraph)
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:795:5
[INFO] [stdout] |
[INFO] [stdout] 795 | //! ## Field attribute: `variant_struct_fields`
[INFO] [stdout] | _____^
[INFO] [stdout] 796 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:805:5
[INFO] [stdout] |
[INFO] [stdout] 805 | //! For this reason, the macro attribute `variant_struct_fields` is provided to
[INFO] [stdout] | _____^
[INFO] [stdout] 806 | | //! derive such transformations. For example, it would cause the following code to
[INFO] [stdout] 807 | | //! be generated, with the main difference between the new `MyEnumTwoChange` type
[INFO] [stdout] 808 | | //! and how it is used:
[INFO] [stdout] 809 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Paragraph), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:810:5
[INFO] [stdout] |
[INFO] [stdout] 810 | //! ```
[INFO] [stdout] | _____^
[INFO] [stdout] 811 | | //! # use comparable_derive::*;
[INFO] [stdout] 812 | | //! # use comparable::*;
[INFO] [stdout] 813 | | //! enum MyEnum {
[INFO] [stdout] ... |
[INFO] [stdout] 884 | | //! ## Special case: Empty enums
[INFO] [stdout] 885 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: new parser sees Start(Heading { level: H2, id: None, classes: [], attrs: [] }), old sees Start(CodeBlock(Fenced(Borrowed(""))))
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:884:5
[INFO] [stdout] |
[INFO] [stdout] 884 | //! ## Special case: Empty enums
[INFO] [stdout] | _____^
[INFO] [stdout] 885 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H2, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:887:5
[INFO] [stdout] |
[INFO] [stdout] 887 | //! [`Comparable::Desc`] or [`Comparable::Change`] types are omitted and it is
[INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Link(ShortcutUnknown, Borrowed(""), Borrowed("Comparable::Desc"))), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: unportable markdown
[INFO] [stdout] --> src/lib.rs:890:5
[INFO] [stdout] |
[INFO] [stdout] 890 | //! # Unions
[INFO] [stdout] | _____^
[INFO] [stdout] 891 | | //!
[INFO] [stdout] | |_
[INFO] [stdout] |
[INFO] [stdout] = help: old parser sees Start(Heading(H1, None, [])), new sees nothing
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stdout] error: aborting due to 76 previous errors
[INFO] [stdout]
[INFO] [stdout]
[INFO] [stderr] error: could not document `comparable`
[INFO] running `Command { std: "docker" "inspect" "5525fe4e9cd88df8c41ca37e5470c5ed81fa9b36cc5745bcd5e24210fb8b4df4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5525fe4e9cd88df8c41ca37e5470c5ed81fa9b36cc5745bcd5e24210fb8b4df4", kill_on_drop: false }`
[INFO] [stdout] 5525fe4e9cd88df8c41ca37e5470c5ed81fa9b36cc5745bcd5e24210fb8b4df4