[INFO] cloning repository https://github.com/scikie/mini-redis
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/scikie/mini-redis" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscikie%2Fmini-redis", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscikie%2Fmini-redis'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8e788be96d3afc10d07abc1697d7a491703d500b
[INFO] documenting scikie/mini-redis against 824336ad4127ce295849937a24c08a4aeff6ada7 for pr-162169
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscikie%2Fmini-redis" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/scikie/mini-redis
[INFO] finished tweaking git repo https://github.com/scikie/mini-redis
[INFO] tweaked toml for git repo https://github.com/scikie/mini-redis written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/scikie/mini-redis on toolchain 824336ad4127ce295849937a24c08a4aeff6ada7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/scikie/mini-redis already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tracing-log v0.1.3
[INFO] [stderr]   Downloaded log v0.4.20
[INFO] [stderr]   Downloaded valuable v0.1.0
[INFO] [stderr]   Downloaded tracing-core v0.1.31
[INFO] [stderr]   Downloaded ordered-float v3.9.1
[INFO] [stderr]   Downloaded either v1.9.0
[INFO] [stderr]   Downloaded anstream v0.5.0
[INFO] [stderr]   Downloaded percent-encoding v2.3.0
[INFO] [stderr]   Downloaded hermit-abi v0.3.2
[INFO] [stderr]   Downloaded futures-task v0.3.28
[INFO] [stderr]   Downloaded socket2 v0.5.3
[INFO] [stderr]   Downloaded tower-layer v0.3.2
[INFO] [stderr]   Downloaded futures-core v0.3.28
[INFO] [stderr]   Downloaded try-lock v0.2.4
[INFO] [stderr]   Downloaded itoa v1.0.9
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.87
[INFO] [stderr]   Downloaded tower-service v0.3.2
[INFO] [stderr]   Downloaded parking_lot_core v0.9.8
[INFO] [stderr]   Downloaded axum-core v0.3.4
[INFO] [stderr]   Downloaded async-stream v0.3.5
[INFO] [stderr]   Downloaded opentelemetry v0.20.0
[INFO] [stderr]   Downloaded anstyle-wincon v2.1.0
[INFO] [stderr]   Downloaded async-stream-impl v0.3.5
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.87
[INFO] [stderr]   Downloaded futures-sink v0.3.28
[INFO] [stderr]   Downloaded hyper-timeout v0.4.1
[INFO] [stderr]   Downloaded opentelemetry-aws v0.8.0
[INFO] [stderr]   Downloaded clap_lex v0.5.1
[INFO] [stderr]   Downloaded anstyle v1.0.2
[INFO] [stderr]   Downloaded tokio-io-timeout v1.2.0
[INFO] [stderr]   Downloaded http-body v0.4.5
[INFO] [stderr]   Downloaded thread_local v1.1.7
[INFO] [stderr]   Downloaded tracing-attributes v0.1.26
[INFO] [stderr]   Downloaded thiserror v1.0.48
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.87
[INFO] [stderr]   Downloaded matchit v0.7.2
[INFO] [stderr]   Downloaded wasm-bindgen-backend v0.2.87
[INFO] [stderr]   Downloaded futures-macro v0.3.28
[INFO] [stderr]   Downloaded futures-channel v0.3.28
[INFO] [stderr]   Downloaded futures-executor v0.3.28
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.16
[INFO] [stderr]   Downloaded async-trait v0.1.73
[INFO] [stderr]   Downloaded lock_api v0.4.10
[INFO] [stderr]   Downloaded pin-project-internal v1.1.3
[INFO] [stderr]   Downloaded prost v0.11.9
[INFO] [stderr]   Downloaded prost-derive v0.11.9
[INFO] [stderr]   Downloaded httparse v1.8.0
[INFO] [stderr]   Downloaded tracing-subscriber v0.3.17
[INFO] [stderr]   Downloaded thiserror-impl v1.0.48
[INFO] [stderr]   Downloaded tokio-stream v0.1.14
[INFO] [stderr]   Downloaded opentelemetry-semantic-conventions v0.12.0
[INFO] [stderr]   Downloaded anstyle-parse v0.2.1
[INFO] [stderr]   Downloaded opentelemetry-otlp v0.13.0
[INFO] [stderr]   Downloaded ryu v1.0.15
[INFO] [stderr]   Downloaded getrandom v0.2.10
[INFO] [stderr]   Downloaded parking_lot v0.12.1
[INFO] [stderr]   Downloaded rustc-demangle v0.1.23
[INFO] [stderr]   Downloaded addr2line v0.21.0
[INFO] [stderr]   Downloaded anyhow v1.0.75
[INFO] [stderr]   Downloaded clap_derive v4.4.2
[INFO] [stderr]   Downloaded unicode-ident v1.0.11
[INFO] [stderr]   Downloaded smallvec v1.11.0
[INFO] [stderr]   Downloaded serde_derive v1.0.188
[INFO] [stderr]   Downloaded num-traits v0.2.16
[INFO] [stderr]   Downloaded opentelemetry_api v0.20.0
[INFO] [stderr]   Downloaded bytes v1.5.0
[INFO] [stderr]   Downloaded clap v4.4.2
[INFO] [stderr]   Downloaded proc-macro2 v1.0.66
[INFO] [stderr]   Downloaded sharded-slab v0.1.4
[INFO] [stderr]   Downloaded js-sys v0.3.64
[INFO] [stderr]   Downloaded pin-project v1.1.3
[INFO] [stderr]   Downloaded serde v1.0.188
[INFO] [stderr]   Downloaded backtrace v0.3.69
[INFO] [stderr]   Downloaded cc v1.0.83
[INFO] [stderr]   Downloaded tracing v0.1.37
[INFO] [stderr]   Downloaded memchr v2.6.3
[INFO] [stderr]   Downloaded bumpalo v3.13.0
[INFO] [stderr]   Downloaded tonic v0.9.2
[INFO] [stderr]   Downloaded http v0.2.9
[INFO] [stderr]   Downloaded base64 v0.21.4
[INFO] [stderr]   Downloaded crossbeam-channel v0.5.8
[INFO] [stderr]   Downloaded tokio-util v0.7.8
[INFO] [stderr]   Downloaded aho-corasick v1.0.5
[INFO] [stderr]   Downloaded opentelemetry_sdk v0.20.0
[INFO] [stderr]   Downloaded serde_json v1.0.106
[INFO] [stderr]   Downloaded axum v0.6.20
[INFO] [stderr]   Downloaded tracing-opentelemetry v0.21.0
[INFO] [stderr]   Downloaded futures-util v0.3.28
[INFO] [stderr]   Downloaded hyper v0.14.27
[INFO] [stderr]   Downloaded h2 v0.3.21
[INFO] [stderr]   Downloaded opentelemetry-proto v0.3.0
[INFO] [stderr]   Downloaded clap_builder v4.4.2
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.87
[INFO] [stderr]   Downloaded syn v2.0.32
[INFO] [stderr]   Downloaded regex v1.9.5
[INFO] [stderr]   Downloaded regex-syntax v0.7.5
[INFO] [stderr]   Downloaded gimli v0.28.0
[INFO] [stderr]   Downloaded regex-automata v0.3.8
[INFO] [stderr]   Downloaded libc v0.2.153
[INFO] [stderr]   Downloaded tokio v1.32.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69
[INFO] running `Command { std: "docker" "start" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[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" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.66
[INFO] [stderr]    Compiling unicode-ident v1.0.11
[INFO] [stderr]    Compiling autocfg v1.1.0
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]     Checking once_cell v1.18.0
[INFO] [stderr]     Checking smallvec v1.11.0
[INFO] [stderr]     Checking pin-project-lite v0.2.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.8
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]     Checking utf8parse v0.2.1
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking anstyle-query v1.0.0
[INFO] [stderr]     Checking regex-syntax v0.6.29
[INFO] [stderr]     Checking regex-syntax v0.7.5
[INFO] [stderr]     Checking anstyle v1.0.2
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]     Checking log v0.4.20
[INFO] [stderr]     Checking bytes v1.5.0
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking clap_lex v0.5.1
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking anstyle-parse v0.2.1
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]     Checking sharded-slab v0.1.4
[INFO] [stderr]     Checking tracing-core v0.1.31
[INFO] [stderr]     Checking thread_local v1.1.7
[INFO] [stderr]     Checking anstream v0.5.0
[INFO] [stderr]     Checking clap_builder v4.4.2
[INFO] [stderr]    Compiling lock_api v0.4.10
[INFO] [stderr]    Compiling num-traits v0.2.16
[INFO] [stderr]     Checking tracing-log v0.1.3
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]     Checking socket2 v0.5.3
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]    Compiling syn v2.0.32
[INFO] [stderr]     Checking regex-automata v0.3.8
[INFO] [stderr]     Checking atoi v2.0.0
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]     Checking regex v1.9.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.26
[INFO] [stderr]    Compiling tokio-macros v2.1.0
[INFO] [stderr]    Compiling clap_derive v4.4.2
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]     Checking async-stream v0.3.5
[INFO] [stderr]     Checking tokio v1.32.0
[INFO] [stderr]     Checking tracing v0.1.37
[INFO] [stderr]     Checking tracing-subscriber v0.3.17
[INFO] [stderr]     Checking clap v4.4.2
[INFO] [stderr]     Checking tokio-stream v0.1.14
[INFO] [stderr]  Documenting mini-redis v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking mini-redis v0.4.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unresolved link to `connect`
[INFO] [stdout]   --> src/clients/client.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 | /// the [`connect`](fn@connect) function.
[INFO] [stdout]    |                     ^^^^^^^^^^ no item named `connect` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout]    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `connect`
[INFO] [stdout]   --> src/clients/blocking_client.rs:39:39
[INFO] [stdout]    |
[INFO] [stdout] 39 | /// established using the [`connect`](fn@connect) function.
[INFO] [stdout]    |                                       ^^^^^^^^^^ no item named `connect` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Duration`
[INFO] [stdout]   --> src/cmd/set.rs:34:18
[INFO] [stdout]    |
[INFO] [stdout] 34 |     /// 使用 Option<Duration> 表示这是一个可选参数：
[INFO] [stdout]    |                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 34 |     /// 使用 `Option<Duration>` 表示这是一个可选参数：
[INFO] [stdout]    |              +                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Bytes`
[INFO] [stdout]   --> src/cmd/ping.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     /// 【知识点：Option<Bytes>】
[INFO] [stdout]    |                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 21 |     /// 【知识点：`Option<Bytes>`】
[INFO] [stdout]    |                   +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]   --> src/frame.rs:48:29
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// 【知识点：为什么使用 Bytes 而不是 Vec<u8>】
[INFO] [stdout]    |                                          ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// 【知识点：为什么使用 Bytes 而不是 `Vec<u8>`】
[INFO] [stdout]    |                                       +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]   --> src/frame.rs:49:47
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Bytes 是 bytes crate 提供的引用计数的不可变字节序列，相比 Vec<u8> 的优势：
[INFO] [stdout]    |                                                                  ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Bytes 是 bytes crate 提供的引用计数的不可变字节序列，相比 `Vec<u8>` 的优势：
[INFO] [stdout]    |                                                               +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Shared`
[INFO] [stdout]   --> src/db.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | ///    Arc<Shared> 可以安全地跨线程传递，Shared 内部的 Mutex 保证数据安全
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 93 | ///    `Arc<Shared>` 可以安全地跨线程传递，Shared 内部的 Mutex 保证数据安全
[INFO] [stdout]    |        +           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Shared`
[INFO] [stdout]    --> src/db.rs:103:32
[INFO] [stdout]     |
[INFO] [stdout] 103 |     /// 指向共享状态的 Arc，后台任务也持有 Arc<Shared> 的克隆
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 103 |     /// 指向共享状态的 Arc，后台任务也持有 `Arc<Shared>` 的克隆
[INFO] [stdout]     |                                            +           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Bytes`
[INFO] [stdout]    --> src/db.rs:158:50
[INFO] [stdout]     |
[INFO] [stdout] 158 | /// 2. pub_sub: HashMap<String, broadcast::Sender<Bytes>>
[INFO] [stdout]     |                                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Frame`
[INFO] [stdout]    --> src/parse.rs:109:36
[INFO] [stdout]     |
[INFO] [stdout] 109 |     /// `self.parts.next()`返回Option<Frame>：
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 109 |     /// `self.parts.next()``返回Option<Frame>`：
[INFO] [stdout]     |                            +                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]    --> src/parse.rs:165:41
[INFO] [stdout]     |
[INFO] [stdout] 165 |     /// String.into_bytes()将String转换为Vec<u8>，
[INFO] [stdout]     |                                             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 165 |     /// String.into_bytes()`将String转换为Vec<u8>`，
[INFO] [stdout]     |                            +                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/parse.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 | /// 2. **错误链支持**：可以向上传播为Box<dyn std::error::Error>
[INFO] [stdout]     |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `DbInner`
[INFO] [stdout]    --> src/server.rs:179:19
[INFO] [stdout]     |
[INFO] [stdout] 179 |     /// - Db内部是Arc<DbInner>，因此克隆Db只是增加引用计数，成本低
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 179 |     /// - `Db内部是Arc<DbInner>`，因此克隆Db只是增加引用计数，成本低
[INFO] [stdout]     |           +                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]    --> src/server.rs:537:9
[INFO] [stdout]     |
[INFO] [stdout] 537 |     /// https://redis.io/topics/pipelining
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout]     = note: `#[warn(rustdoc::bare_urls)]` on by default
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]     |
[INFO] [stdout] 537 |     /// <https://redis.io/topics/pipelining>
[INFO] [stdout]     |         +                                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 | /// 【知识点：Box<dyn std::error::Error> 详解】
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |               ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - `Mutex<T>` 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |          +        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:270:30
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |                                ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，`Cell<T>` 不是 Sync
[INFO] [stdout]     |                            +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:293:25
[INFO] [stdout]     |
[INFO] [stdout] 293 | /// 只有在需要统一错误类型时才转换为 Box<dyn Error>。
[INFO] [stdout]     |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:316:18
[INFO] [stdout]     |
[INFO] [stdout] 316 | /// crate::Result<T> 特指使用本模块 Error 类型的 Result
[INFO] [stdout]     |                  ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 316 | /// `crate::Result<T>` 特指使用本模块 Error 类型的 Result
[INFO] [stdout]     |     +                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:319:17
[INFO] [stdout]     |
[INFO] [stdout] 319 | /// 当函数返回 Result<T> 时，可以使用 ? 操作符：
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 319 | /// 当函数返回 `Result<T>` 时，可以使用 ? 操作符：
[INFO] [stdout]     |                +         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 | /// ? 会自动将错误类型转换为 Box<dyn Error>（通过 From trait）。
[INFO] [stdout]     |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `instrument` is both a module and an attribute macro
[INFO] [stdout]   --> src/cmd/get.rs:87:23
[INFO] [stdout]    |
[INFO] [stdout] 87 |     /// # tracing 的 #[instrument] 宏详解
[INFO] [stdout]    |                        ^^^^^^^^^^ ambiguous link
[INFO] [stdout]    |
[INFO] [stdout] help: to link to the module, prefix with `mod@`
[INFO] [stdout]    |
[INFO] [stdout] 87 |     /// # tracing 的 #[mod@instrument] 宏详解
[INFO] [stdout]    |                        ++++
[INFO] [stdout] help: to link to the attribute macro, prefix with `attribute@`
[INFO] [stdout]    |
[INFO] [stdout] 87 |     /// # tracing 的 #[attribute@instrument] 宏详解
[INFO] [stdout]    |                        ++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `instrument` is both a module and an attribute macro
[INFO] [stdout]    --> src/server.rs:528:5
[INFO] [stdout]     |
[INFO] [stdout] 528 | /     /// 【知识点：Handler::run - 处理单个连接】
[INFO] [stdout] 529 | |     /// Process a single connection.
[INFO] [stdout] 530 | |     ///
[INFO] [stdout] 531 | |     /// Request frames are read from the socket and processed. Responses are
[INFO] [stdout] ...   |
[INFO] [stdout] 550 | |     /// Span代表一个时间段内的操作，类似于日志中的"进入函数"和"退出函数"，
[INFO] [stdout] 551 | |     /// 但更适合异步代码，因为异步函数的执行可能是分段的。
[INFO] [stdout]     | |__________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the link appears in this line:
[INFO] [stdout]             
[INFO] [stdout]             【知识点：#[instrument]属性宏 - Tracing的自动追踪】
[INFO] [stdout]                              ^^^^^^^^^^
[INFO] [stdout]     = note: ambiguous link
[INFO] [stdout]     = help: to link to the module, prefix with `mod@`: mod@instrument
[INFO] [stdout]     = help: to link to the attribute macro, prefix with `attribute@`: attribute@instrument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.04s
[INFO] [stderr]    Generated /opt/rustwide/target/doc/mini_redis/index.html and 2 other files
[INFO] running `Command { std: "docker" "inspect" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[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" "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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--document-private-items\"]" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]  Documenting mini-redis v0.4.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unresolved link to `connect`
[INFO] [stdout]   --> src/clients/client.rs:30:21
[INFO] [stdout]    |
[INFO] [stdout] 30 | /// the [`connect`](fn@connect) function.
[INFO] [stdout]    |                     ^^^^^^^^^^ no item named `connect` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout]    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `connect`
[INFO] [stdout]   --> src/clients/blocking_client.rs:39:39
[INFO] [stdout]    |
[INFO] [stdout] 39 | /// established using the [`connect`](fn@connect) function.
[INFO] [stdout]    |                                       ^^^^^^^^^^ no item named `connect` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Duration`
[INFO] [stdout]   --> src/cmd/set.rs:34:18
[INFO] [stdout]    |
[INFO] [stdout] 34 |     /// 使用 Option<Duration> 表示这是一个可选参数：
[INFO] [stdout]    |                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 34 |     /// 使用 `Option<Duration>` 表示这是一个可选参数：
[INFO] [stdout]    |              +                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Bytes`
[INFO] [stdout]   --> src/cmd/ping.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     /// 【知识点：Option<Bytes>】
[INFO] [stdout]    |                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 21 |     /// 【知识点：`Option<Bytes>`】
[INFO] [stdout]    |                   +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]   --> src/frame.rs:48:29
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// 【知识点：为什么使用 Bytes 而不是 Vec<u8>】
[INFO] [stdout]    |                                          ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// 【知识点：为什么使用 Bytes 而不是 `Vec<u8>`】
[INFO] [stdout]    |                                       +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]   --> src/frame.rs:49:47
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Bytes 是 bytes crate 提供的引用计数的不可变字节序列，相比 Vec<u8> 的优势：
[INFO] [stdout]    |                                                                  ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Bytes 是 bytes crate 提供的引用计数的不可变字节序列，相比 `Vec<u8>` 的优势：
[INFO] [stdout]    |                                                               +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 | /// 【知识点：Box<dyn std::error::Error> 详解】
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |               ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - `Mutex<T>` 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |          +        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:270:30
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，Cell<T> 不是 Sync
[INFO] [stdout]     |                                ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 270 | ///    - Mutex<T> 是 Sync，`Cell<T>` 不是 Sync
[INFO] [stdout]     |                            +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:293:25
[INFO] [stdout]     |
[INFO] [stdout] 293 | /// 只有在需要统一错误类型时才转换为 Box<dyn Error>。
[INFO] [stdout]     |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:316:18
[INFO] [stdout]     |
[INFO] [stdout] 316 | /// crate::Result<T> 特指使用本模块 Error 类型的 Result
[INFO] [stdout]     |                  ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 316 | /// `crate::Result<T>` 特指使用本模块 Error 类型的 Result
[INFO] [stdout]     |     +                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `T`
[INFO] [stdout]    --> src/lib.rs:319:17
[INFO] [stdout]     |
[INFO] [stdout] 319 | /// 当函数返回 Result<T> 时，可以使用 ? 操作符：
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]     |
[INFO] [stdout] 319 | /// 当函数返回 `Result<T>` 时，可以使用 ? 操作符：
[INFO] [stdout]     |                +         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `dyn`
[INFO] [stdout]    --> src/lib.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 | /// ? 会自动将错误类型转换为 Box<dyn Error>（通过 From trait）。
[INFO] [stdout]     |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.61s
[INFO] [stderr]    Generated /opt/rustwide/target/doc/mini_redis/index.html
[INFO] running `Command { std: "docker" "inspect" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69", kill_on_drop: false }`
[INFO] [stdout] 85b99e2d0293288eca1951d506ba59308c15d540eb472c56b86393aa07ffcb69
