[INFO] cloning repository https://github.com/poyen-wu/openai-oss-relay [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/poyen-wu/openai-oss-relay" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpoyen-wu%2Fopenai-oss-relay", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpoyen-wu%2Fopenai-oss-relay'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9e78f72a1138c83fe87c6866937ce5822c5d538c [INFO] checking poyen-wu/openai-oss-relay against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpoyen-wu%2Fopenai-oss-relay" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/poyen-wu/openai-oss-relay [INFO] finished tweaking git repo https://github.com/poyen-wu/openai-oss-relay [INFO] tweaked toml for git repo https://github.com/poyen-wu/openai-oss-relay written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/poyen-wu/openai-oss-relay on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/poyen-wu/openai-oss-relay 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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4500456c02784fc0fbb298e4f8780d00a0dd93e1e30da8afbb7ef9266a6ac08a [INFO] running `Command { std: "docker" "start" "-a" "4500456c02784fc0fbb298e4f8780d00a0dd93e1e30da8afbb7ef9266a6ac08a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4500456c02784fc0fbb298e4f8780d00a0dd93e1e30da8afbb7ef9266a6ac08a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4500456c02784fc0fbb298e4f8780d00a0dd93e1e30da8afbb7ef9266a6ac08a", kill_on_drop: false }` [INFO] [stdout] 4500456c02784fc0fbb298e4f8780d00a0dd93e1e30da8afbb7ef9266a6ac08a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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 -Dunmustuse_in_always_ok" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 03defd46e0f9fe05854330fbb8ffaa0c9b3995583582f79e98e51c87b79727a1 [INFO] running `Command { std: "docker" "start" "-a" "03defd46e0f9fe05854330fbb8ffaa0c9b3995583582f79e98e51c87b79727a1", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Checking tracing-core v0.1.34 [INFO] [stderr] Checking slab v0.4.10 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking hashbrown v0.15.4 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking socket2 v0.6.0 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking indexmap v2.10.0 [INFO] [stderr] Checking serde_json v1.0.142 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking openai-oss-relay v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 253 | | // Remember whether this request needs the special chat‑completion handling. [INFO] [stdout] 254 | | let is_chat = req.uri().path() == "/v1/chat/completions"; [INFO] [stdout] ... | [INFO] [stdout] 301 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: requested on the command line with `-D unmustuse-in-always-ok` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 253 | | // Remember whether this request needs the special chat‑completion handling. [INFO] [stdout] 254 | | let is_chat = req.uri().path() == "/v1/chat/completions"; [INFO] [stdout] ... | [INFO] [stdout] 301 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | / match client.request(upstream_req).await { [INFO] [stdout] 286 | | Ok(res) => { [INFO] [stdout] 287 | | if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] ... | [INFO] [stdout] 300 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:286:20 [INFO] [stdout] | [INFO] [stdout] 286 | Ok(res) => { [INFO] [stdout] | ____________________^ [INFO] [stdout] 287 | | if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 292 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] 290 | | Ok(res) [INFO] [stdout] 291 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:287:24 [INFO] [stdout] | [INFO] [stdout] 287 | if is_chat { [INFO] [stdout] | ________________________^ [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:71 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:289:20 [INFO] [stdout] | [INFO] [stdout] 289 | } else { [INFO] [stdout] | ____________________^ [INFO] [stdout] 290 | | Ok(res) [INFO] [stdout] 291 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:290:17 [INFO] [stdout] | [INFO] [stdout] 290 | Ok(res) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:293:19 [INFO] [stdout] | [INFO] [stdout] 293 | Err(e) => { [INFO] [stdout] | ___________________^ [INFO] [stdout] 294 | | error!("upstream request failed: {}", e); [INFO] [stdout] 295 | | Ok(error_response( [INFO] [stdout] 296 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 297 | | format!("upstream error: {e}"), [INFO] [stdout] 298 | | )) [INFO] [stdout] 299 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | / Ok(error_response( [INFO] [stdout] 296 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 297 | | format!("upstream error: {e}"), [INFO] [stdout] 298 | | )) [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:309:41 [INFO] [stdout] | [INFO] [stdout] 309 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 310 | | let is_sse = resp [INFO] [stdout] 311 | | .headers() [INFO] [stdout] 312 | | .get(CONTENT_TYPE) [INFO] [stdout] ... | [INFO] [stdout] 322 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:309:41 [INFO] [stdout] | [INFO] [stdout] 309 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 310 | | let is_sse = resp [INFO] [stdout] 311 | | .headers() [INFO] [stdout] 312 | | .get(CONTENT_TYPE) [INFO] [stdout] ... | [INFO] [stdout] 322 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / if is_sse { [INFO] [stdout] 318 | | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] 319 | | } else { [INFO] [stdout] 320 | | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] 321 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:317:15 [INFO] [stdout] | [INFO] [stdout] 317 | if is_sse { [INFO] [stdout] | _______________^ [INFO] [stdout] 318 | | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] 319 | | } else { [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:46 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:319:12 [INFO] [stdout] | [INFO] [stdout] 319 | } else { [INFO] [stdout] | ____________^ [INFO] [stdout] 320 | | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] 321 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:46 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:330:41 [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 331 | | let (parts, body) = resp.into_parts(); [INFO] [stdout] ... | [INFO] [stdout] 383 | | Ok(out_resp) [INFO] [stdout] 384 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:330:41 [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 331 | | let (parts, body) = resp.into_parts(); [INFO] [stdout] ... | [INFO] [stdout] 383 | | Ok(out_resp) [INFO] [stdout] 384 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:337:20 [INFO] [stdout] | [INFO] [stdout] 337 | return Ok(error_response( [INFO] [stdout] | ____________________^ [INFO] [stdout] 338 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 339 | | format!("failed to read upstream body: {e}"), [INFO] [stdout] 340 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:351:20 [INFO] [stdout] | [INFO] [stdout] 351 | return Ok(resp); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:373:20 [INFO] [stdout] | [INFO] [stdout] 373 | return Ok(error_response( [INFO] [stdout] | ____________________^ [INFO] [stdout] 374 | | StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 375 | | "internal rewrite error", [INFO] [stdout] 376 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:383:5 [INFO] [stdout] | [INFO] [stdout] 383 | Ok(out_resp) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:392:41 [INFO] [stdout] | [INFO] [stdout] 392 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 393 | | // Preserve all upstream headers except Content‑Length (size will change). [INFO] [stdout] 394 | | let mut builder = Response::builder().status(resp.status()); [INFO] [stdout] 395 | | for (k, v) in resp.headers().iter() { [INFO] [stdout] ... | [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] 410 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:392:41 [INFO] [stdout] | [INFO] [stdout] 392 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 393 | | // Preserve all upstream headers except Content‑Length (size will change). [INFO] [stdout] 394 | | let mut builder = Response::builder().status(resp.status()); [INFO] [stdout] 395 | | for (k, v) in resp.headers().iter() { [INFO] [stdout] ... | [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] 410 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:407:5 [INFO] [stdout] | [INFO] [stdout] 407 | / Ok(builder [INFO] [stdout] 408 | | .body(Body::wrap_stream(stream)) [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] | |_______________________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:531:20 [INFO] [stdout] | [INFO] [stdout] 531 | async move { [INFO] [stdout] | ____________________^ [INFO] [stdout] 532 | | Ok::<_, Infallible>(service_fn(move |req| { [INFO] [stdout] 533 | | forward_request(req, cfg.clone(), client.clone()) [INFO] [stdout] 534 | | })) [INFO] [stdout] 535 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:532:13 [INFO] [stdout] | [INFO] [stdout] 532 | / Ok::<_, Infallible>(service_fn(move |req| { [INFO] [stdout] 533 | | forward_request(req, cfg.clone(), client.clone()) [INFO] [stdout] 534 | | })) [INFO] [stdout] | |_______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `openai-oss-relay` (bin "openai-oss-relay" test) due to 35 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 253 | | // Remember whether this request needs the special chat‑completion handling. [INFO] [stdout] 254 | | let is_chat = req.uri().path() == "/v1/chat/completions"; [INFO] [stdout] ... | [INFO] [stdout] 301 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: requested on the command line with `-D unmustuse-in-always-ok` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 253 | | // Remember whether this request needs the special chat‑completion handling. [INFO] [stdout] 254 | | let is_chat = req.uri().path() == "/v1/chat/completions"; [INFO] [stdout] ... | [INFO] [stdout] 301 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | / match client.request(upstream_req).await { [INFO] [stdout] 286 | | Ok(res) => { [INFO] [stdout] 287 | | if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] ... | [INFO] [stdout] 300 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:286:20 [INFO] [stdout] | [INFO] [stdout] 286 | Ok(res) => { [INFO] [stdout] | ____________________^ [INFO] [stdout] 287 | | if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 292 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if is_chat { [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] 290 | | Ok(res) [INFO] [stdout] 291 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:287:24 [INFO] [stdout] | [INFO] [stdout] 287 | if is_chat { [INFO] [stdout] | ________________________^ [INFO] [stdout] 288 | | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] 289 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:71 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:288:17 [INFO] [stdout] | [INFO] [stdout] 288 | handle_chat_completions(res, cfg.replace_cfg.clone()).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:289:20 [INFO] [stdout] | [INFO] [stdout] 289 | } else { [INFO] [stdout] | ____________________^ [INFO] [stdout] 290 | | Ok(res) [INFO] [stdout] 291 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:290:17 [INFO] [stdout] | [INFO] [stdout] 290 | Ok(res) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:293:19 [INFO] [stdout] | [INFO] [stdout] 293 | Err(e) => { [INFO] [stdout] | ___________________^ [INFO] [stdout] 294 | | error!("upstream request failed: {}", e); [INFO] [stdout] 295 | | Ok(error_response( [INFO] [stdout] 296 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 297 | | format!("upstream error: {e}"), [INFO] [stdout] 298 | | )) [INFO] [stdout] 299 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | / Ok(error_response( [INFO] [stdout] 296 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 297 | | format!("upstream error: {e}"), [INFO] [stdout] 298 | | )) [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:309:41 [INFO] [stdout] | [INFO] [stdout] 309 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 310 | | let is_sse = resp [INFO] [stdout] 311 | | .headers() [INFO] [stdout] 312 | | .get(CONTENT_TYPE) [INFO] [stdout] ... | [INFO] [stdout] 322 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:309:41 [INFO] [stdout] | [INFO] [stdout] 309 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 310 | | let is_sse = resp [INFO] [stdout] 311 | | .headers() [INFO] [stdout] 312 | | .get(CONTENT_TYPE) [INFO] [stdout] ... | [INFO] [stdout] 322 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / if is_sse { [INFO] [stdout] 318 | | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] 319 | | } else { [INFO] [stdout] 320 | | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] 321 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:317:15 [INFO] [stdout] | [INFO] [stdout] 317 | if is_sse { [INFO] [stdout] | _______________^ [INFO] [stdout] 318 | | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] 319 | | } else { [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:46 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | rewrite_streaming(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:319:12 [INFO] [stdout] | [INFO] [stdout] 319 | } else { [INFO] [stdout] | ____________^ [INFO] [stdout] 320 | | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] 321 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:46 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:320:9 [INFO] [stdout] | [INFO] [stdout] 320 | rewrite_full_json(resp, replace_cfg).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:330:41 [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 331 | | let (parts, body) = resp.into_parts(); [INFO] [stdout] ... | [INFO] [stdout] 383 | | Ok(out_resp) [INFO] [stdout] 384 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:330:41 [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 331 | | let (parts, body) = resp.into_parts(); [INFO] [stdout] ... | [INFO] [stdout] 383 | | Ok(out_resp) [INFO] [stdout] 384 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:337:20 [INFO] [stdout] | [INFO] [stdout] 337 | return Ok(error_response( [INFO] [stdout] | ____________________^ [INFO] [stdout] 338 | | StatusCode::BAD_GATEWAY, [INFO] [stdout] 339 | | format!("failed to read upstream body: {e}"), [INFO] [stdout] 340 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:351:20 [INFO] [stdout] | [INFO] [stdout] 351 | return Ok(resp); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:373:20 [INFO] [stdout] | [INFO] [stdout] 373 | return Ok(error_response( [INFO] [stdout] | ____________________^ [INFO] [stdout] 374 | | StatusCode::INTERNAL_SERVER_ERROR, [INFO] [stdout] 375 | | "internal rewrite error", [INFO] [stdout] 376 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:383:5 [INFO] [stdout] | [INFO] [stdout] 383 | Ok(out_resp) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:392:41 [INFO] [stdout] | [INFO] [stdout] 392 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 393 | | // Preserve all upstream headers except Content‑Length (size will change). [INFO] [stdout] 394 | | let mut builder = Response::builder().status(resp.status()); [INFO] [stdout] 395 | | for (k, v) in resp.headers().iter() { [INFO] [stdout] ... | [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] 410 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:392:41 [INFO] [stdout] | [INFO] [stdout] 392 | ) -> Result, Infallible> { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 393 | | // Preserve all upstream headers except Content‑Length (size will change). [INFO] [stdout] 394 | | let mut builder = Response::builder().status(resp.status()); [INFO] [stdout] 395 | | for (k, v) in resp.headers().iter() { [INFO] [stdout] ... | [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] 410 | | } [INFO] [stdout] | |_^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:407:5 [INFO] [stdout] | [INFO] [stdout] 407 | / Ok(builder [INFO] [stdout] 408 | | .body(Body::wrap_stream(stream)) [INFO] [stdout] 409 | | .expect("building streaming response")) [INFO] [stdout] | |_______________________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:531:20 [INFO] [stdout] | [INFO] [stdout] 531 | async move { [INFO] [stdout] | ____________________^ [INFO] [stdout] 532 | | Ok::<_, Infallible>(service_fn(move |req| { [INFO] [stdout] 533 | | forward_request(req, cfg.clone(), client.clone()) [INFO] [stdout] 534 | | })) [INFO] [stdout] 535 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result, Infallible> [INFO] [stdout] --> src/main.rs:532:13 [INFO] [stdout] | [INFO] [stdout] 532 | / Ok::<_, Infallible>(service_fn(move |req| { [INFO] [stdout] 533 | | forward_request(req, cfg.clone(), client.clone()) [INFO] [stdout] 534 | | })) [INFO] [stdout] | |_______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `openai-oss-relay` (bin "openai-oss-relay") due to 35 previous errors [INFO] running `Command { std: "docker" "inspect" "03defd46e0f9fe05854330fbb8ffaa0c9b3995583582f79e98e51c87b79727a1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "03defd46e0f9fe05854330fbb8ffaa0c9b3995583582f79e98e51c87b79727a1", kill_on_drop: false }` [INFO] [stdout] 03defd46e0f9fe05854330fbb8ffaa0c9b3995583582f79e98e51c87b79727a1