codediff 0.0.2

Fast, robust, syntax-aware code diffing using tree-sitter ASTs
Documentation

Build #3974127 2026-07-28 09:01:25

# rustc version rustc 1.99.0-nightly (d0babd8b6 2026-07-15)

# docs.rs version docsrs 0.0.0 (f1b150f0cd76f7cabcd39e1f4790ba771b28b5c4 2026-07-19 )

# build log [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-w" "/opt/rustwide/workdir" "--user" "1001:1001" "4a9a97ce5da54d3d3866342a8b5983dc0d8c450976377becfb671e553cf8999f" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2026-07-16" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=html-non-static-files\", \"--resource-suffix\", \"-20260715-1.99.0-nightly-d0babd8b6\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }` [INFO] [stderr] warning: target filter specified, but no targets matched; this is a no-op [INFO] [stderr] Documenting codediff v0.0.2 (/opt/rustwide/workdir) [INFO] [stderr] warning: public documentation for `is_diagnostic_statement` links to private item `DIAGNOSTIC_CALLEE_KEYWORDS` [INFO] [stderr] --> src/diff/nodes.rs:1414:70 [INFO] [stderr] | [INFO] [stderr] 1414 | /// This is intentionally a loose, substring-based heuristic - see [`DIAGNOSTIC_CALLEE_KEYWORDS`] - [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] = note: `#[warn(rustdoc::private_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: public documentation for `solve` links to private item `solve_named_reference_groups` [INFO] [stderr] --> src/diff/solve_syntax_aware_matching.rs:40:21 [INFO] [stderr] | [INFO] [stderr] 40 | * shared shape is [`solve_named_reference_groups`] - **fully-resolved names** (scope-qualified, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `describe_nondeterminism` [INFO] [stderr] --> src/test/helper/human_mapping.rs:612:48 [INFO] [stderr] | [INFO] [stderr] 612 | * three results by node *path* (not ID - see [`describe_nondeterminism`]) against each other: [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ no item named `describe_nondeterminism` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:87:47 [INFO] [stderr] | [INFO] [stderr] 87 | * This leads to the following function: Cost([B], [A]) where [B] and [A] are lists of nodes in [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:87:52 [INFO] [stderr] | [INFO] [stderr] 87 | * This leads to the following function: Cost([B], [A]) where [B] and [A] are lists of nodes in [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:87:63 [INFO] [stderr] | [INFO] [stderr] 87 | * This leads to the following function: Cost([B], [A]) where [B] and [A] are lists of nodes in [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:87:71 [INFO] [stderr] | [INFO] [stderr] 87 | * This leads to the following function: Cost([B], [A]) where [B] and [A] are lists of nodes in [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | * Cost([B], [A]) = minimum between the following 4 choices, corresponding to the Identical, Update, [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:90:14 [INFO] [stderr] | [INFO] [stderr] 90 | * Cost([B], [A]) = minimum between the following 4 choices, corresponding to the Identical, Update, [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | * 1. If the first node in [B] has the same kind and value as [A], map them as identical and [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:93:63 [INFO] [stderr] | [INFO] [stderr] 93 | * 1. If the first node in [B] has the same kind and value as [A], map them as identical and [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:94:29 [INFO] [stderr] | [INFO] [stderr] 94 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:94:41 [INFO] [stderr] | [INFO] [stderr] 94 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:94:47 [INFO] [stderr] | [INFO] [stderr] 94 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:94:59 [INFO] [stderr] | [INFO] [stderr] 94 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:95:26 [INFO] [stderr] | [INFO] [stderr] 95 | * Cost(children(first[B])), children(first([A])). [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:95:48 [INFO] [stderr] | [INFO] [stderr] 95 | * Cost(children(first[B])), children(first([A])). [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:96:28 [INFO] [stderr] | [INFO] [stderr] 96 | * 2. If the first node in [B] has the same kind but NOT value as [A], map them as identical and [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:96:67 [INFO] [stderr] | [INFO] [stderr] 96 | * 2. If the first node in [B] has the same kind but NOT value as [A], map them as identical and [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:97:29 [INFO] [stderr] | [INFO] [stderr] 97 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:97:41 [INFO] [stderr] | [INFO] [stderr] 97 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:97:47 [INFO] [stderr] | [INFO] [stderr] 97 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:97:59 [INFO] [stderr] | [INFO] [stderr] 97 | * recursively call Cost([B] - first([B]), [A] - first([A])) plus add the [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:98:26 [INFO] [stderr] | [INFO] [stderr] 98 | * Cost(children(first[B])), children(first([A])) plus one COST_UPDATE. [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:98:48 [INFO] [stderr] | [INFO] [stderr] 98 | * Cost(children(first[B])), children(first([A])) plus one COST_UPDATE. [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:99:24 [INFO] [stderr] | [INFO] [stderr] 99 | * 3. For each node in [A], called [A_i], compute the cost of deleting first([B]) as if it's children [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A_i` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:99:36 [INFO] [stderr] | [INFO] [stderr] 99 | * 3. For each node in [A], called [A_i], compute the cost of deleting first([B]) as if it's children [INFO] [stderr] | ^^^ no item named `A_i` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:99:78 [INFO] [stderr] | [INFO] [stderr] 99 | * 3. For each node in [A], called [A_i], compute the cost of deleting first([B]) as if it's children [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A_0` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:100:18 [INFO] [stderr] | [INFO] [stderr] 100 | * were nodes [A_0] to [A_i], not including [A_i]. Note that "no nodes" is the valid first [INFO] [stderr] | ^^^ no item named `A_0` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A_i` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:100:27 [INFO] [stderr] | [INFO] [stderr] 100 | * were nodes [A_0] to [A_i], not including [A_i]. Note that "no nodes" is the valid first [INFO] [stderr] | ^^^ no item named `A_i` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A_i` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:100:48 [INFO] [stderr] | [INFO] [stderr] 100 | * were nodes [A_0] to [A_i], not including [A_i]. Note that "no nodes" is the valid first [INFO] [stderr] | ^^^ no item named `A_i` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:101:79 [INFO] [stderr] | [INFO] [stderr] 101 | * choice. For a given i, the cost is COST_DELETE plus Cost(children(first([B])), [A_0 to A_i]) + [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 102 | * Cost([B] - first([B]), [A_i to end]). Try for all values of i and keep the smallest result. [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | * Cost([B] - first([B]), [A_i to end]). Try for all values of i and keep the smallest result. [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:103:28 [INFO] [stderr] | [INFO] [stderr] 103 | * 4. Similar to 3, but in [B] and using COST_INSERT to find the optimal insert operation for the [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:104:21 [INFO] [stderr] | [INFO] [stderr] 104 | * first node in [A]. [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `B` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:106:56 [INFO] [stderr] | [INFO] [stderr] 106 | * To reconstruct the actual operations, for each Cost([B], [A]), we need to keep the information on [INFO] [stderr] | ^ no item named `B` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `A` [INFO] [stderr] --> src/test/helper/optimal_iud.rs:106:61 [INFO] [stderr] | [INFO] [stderr] 106 | * To reconstruct the actual operations, for each Cost([B], [A]), we need to keep the information on [INFO] [stderr] | ^ no item named `A` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `full` [INFO] [stderr] --> src/code.rs:307:54 [INFO] [stderr] | [INFO] [stderr] 307 | /// Reverse map to node_to_full_hash, going from <full hash> -> <treesitter node ids>. [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(rustdoc::invalid_html_tags)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `treesitter` [INFO] [stderr] --> src/code.rs:307:69 [INFO] [stderr] | [INFO] [stderr] 307 | /// Reverse map to node_to_full_hash, going from <full hash> -> <treesitter node ids>. [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `structural` [INFO] [stderr] --> src/code.rs:328:60 [INFO] [stderr] | [INFO] [stderr] 328 | /// Reverse map to node_to_structural_hash, going from <structural hash> -> <node ids>. See [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `node` [INFO] [stderr] --> src/code.rs:328:81 [INFO] [stderr] | [INFO] [stderr] 328 | /// Reverse map to node_to_structural_hash, going from <structural hash> -> <node ids>. See [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `Range` [INFO] [stderr] --> src/diff/text.rs:295:60 [INFO] [stderr] | [INFO] [stderr] 295 | /// The result is a vector of (Range, Operation, Option<Range>) tuples. [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 295 | /// The result is a vector of (Range, Operation, `Option<Range>`) tuples. [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `temporary` [INFO] [stderr] --> src/test/helper.rs:374:31 [INFO] [stderr] | [INFO] [stderr] 374 | * ("hello_world.rs", PathBuf("<temporary directory>/hello_world.rs")) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `dir` [INFO] [stderr] --> src/test/helper.rs:423:88 [INFO] [stderr] | [INFO] [stderr] 423 | * Note that the actual files are stored with ".test" extension in "src/test/data/diffs/<dir>/". This is so [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `dir` [INFO] [stderr] --> src/test/helper.rs:544:88 [INFO] [stderr] | [INFO] [stderr] 544 | * Note that the actual files are stored with ".test" extension in "src/test/data/diffs/<dir>/". [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `codediff` (lib doc) generated 46 warnings [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.13s [INFO] [stderr] Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/codediff/index.html [INFO] running `Command { std: "docker" "inspect" "4a9a97ce5da54d3d3866342a8b5983dc0d8c450976377becfb671e553cf8999f", kill_on_drop: false }`