[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